1
Fork 0
mirror of https://github.com/pds-nest/nest.git synced 2024-11-26 23:14:19 +00:00
pds-2021-g2-nest/doc/development/database-analysis.md
2021-04-17 12:58:20 +00:00

109 lines
3.7 KiB
Markdown

# Analisi del database
## Glossario generale
> [Vedi `glossary.md`](glossary.md)
## Glossario specifico
| Entità | Attributi | Interazioni |
|-------------------|-------------------------------------------------------|-----------------------------|
| **User** | email, username, password | Repository |
| **Repository** | id, name, start, end, status | User, Tweet, Alert, Keyword |
| **Tweet** | snowflake, content, location, poster | Repository, Condition |
| **Condition** | id, type, param | BoolOperation |
| **BoolOperation** | id, operation, condition_id, alert_id, node_1, node_2 | Alert, BoolOperation, Condition|
| **Alert** | id, repository_id, name, limit, window_size | BoolOperation, Norifica, Repository|
| **Notifica** | id, ora, alert_id | Alert|
## Elementi
### User
> Username: Steffo
> Email: ste.pigozzi@gmail.com
> Password: ···········
L'utilizzatore della piattaforma, colui che ha accesso ai dati.
L'utente possiede una `email` per ricevere gli [Alert](#alert), una `password` per accedere al servizio e un `username`
per essere più facilmente riconoscibile.
Un utente può avere più [Repository](#repository) sotto il suo controllo.
### Repository
> Repository "Modena e dintorni"
Un insieme di [Tweet](#tweet) che soddisfano una o più [Condition](#condition).
Ha un proprietario che può cambiarne le impostazioni, ma possono essere visibili a più [Users](#user).
Un repository può avere diversi [Alert](#alert).
### Tweet
> Tweet di @USteffo:
> "Testo di sopra #PdS2021"
Un post su Twitter, che viene salvato su NEST se soddisfa le [Condition](#condition)
richieste da uno o più [Repository](#repository).
I Tweet sono identificati da un particolare tipo di identificatore chiamato `snowflake`.
Contiene informazioni relative al `poster` del tweet, il suo `content` e opzionalmente informazioni sulla `location`
in cui è stato scritto.
### Condition
> Tweet contenenti #PdS2021
> Tweet postati a Modena
> Tweet postati tra le 21:00 e le 23:00 del 15 Aprile
Un predicato usato per effettuare ricerca e filtraggio di [Tweet](#tweet).
Può essere di diversi tipi:
- `HASHTAG`: richiede che un tweet contenga un determinato hashtag
- `LOCATION`: richiede che un tweet venga inviato in una specifica location
- `TIME`: richiede che un tweet venga inviato in un dato lasso di tempo
Viene utilizzato all'interno di [Repository](#repository) e [Alert](#alert) per definire le condizioni in cui catturare
tweet o allertare l'utente.
È possibile unire più condizioni con una o più [BoolOperation](#booloperation).
### BoolOperation
> Tweet contenenti #Modena **OR** Tweet postati a Modena
> Tweet postati tra le 21:00 e le 23:00 del 15 Aprile **AND** Tweet contenenti #PdS2021
Un nodo di albero binario usato per combinare più [Condition](#condition).
Le foglie fanno riferimento a una [Condition](#condition), mentre i rami fanno riferimento ad altre
[BoolOperation](#booloperation).
Supporta le seguenti operazioni:
- `AND`: intersezione
- `OR`: unione
### Alert
Un elemento di un [Repository](#repository) a cui è legata una [BoolOperation](#booloperation).
Se i [Tweet](#tweet) di un [Repository](#repository) che rispettano la [BoolOperation](#booloperation) superano un certo
`limit` in un lasso di tempo, si attiva e notifica l'utente.
### Notifica
Una notifica legata ad un Alert che viene creata quando l'alert viene innescato.