1
Fork 0
mirror of https://github.com/Steffo99/alexandria.git synced 2024-10-16 13:37:27 +00:00

Inizio lavoro sulla relazione

This commit is contained in:
Steffo 2020-05-11 17:29:31 +02:00
parent 1c1c92c767
commit a8dc9e0c1b
Signed by: steffo
GPG key ID: 896A80F55F7C97F0
13 changed files with 64 additions and 47 deletions

1
.gitignore vendored Normal file
View file

@ -0,0 +1 @@
.idea/

View file

@ -1,21 +1,11 @@
# Glossario
## Utenti
## Generale
| Nome | Dati | Sinonimi | Collegamenti | Note |
|------|------|----------|--------------|------|
| Utente | username, hash della password, email, è amministratore, è bannato | user, admin, amministratore | possiede Elementi | |
## Elementi
| Nome | Dati | Sinonimi | Collegamenti | Note |
|------|------|----------|--------------|------|
| Elemento | stato, provenienza | | di una copia di un Libro / Film / Videogioco, posseduto da un Utente | |
## Recensioni
| Nome | Dati | Sinonimi | Collegamenti | Note |
|------|------|----------|--------------|------|
| Recensione | valutazione (0-100), commento, data, è nascosto | valutazione, commento, post | riguardante un Elemento | |
## Libri

19
3-1-schema-scheletro.md Normal file
View file

@ -0,0 +1,19 @@
# Schema scheletro
È allegato alla relazione il file [`3-1-schema-scheletro.drawio`](3-1-schema-scheletro.drawio) contenente l'intero schema scheletro in un formato modificabile.
## Generale
![](img/3-1-schema-scheletro/generale.png)
## Libri
![](img/3-1-schema-scheletro/libri.png)
## Film
![](img/3-1-schema-scheletro/film.png)
## Giochi
![](img/3-1-schema-scheletro/giochi.png)

23
3-2-gerarchie.md Normal file
View file

@ -0,0 +1,23 @@
# Classificazione delle gerarchie
Nello schema scheletro di `alexandria` compaiono due gerarchie IsA, rappresentate da frecce continue blu.
## Gerarchia degli _Elementi_
![](img/3-2-gerarchie/gerarchia-1.png)
Il tipo di dato alla base di `alexandria` è l'_Elemento_.
Un Elemento rappresenta una aggiunta da parte di un utente alla propria libreria di un libro, film o videogioco.
Nella [descrizione](1-descrizione.md) si specifica che tutti gli Elementi devono avere uno _stato_ e una _provenienza_ specifici al tipo di Elemento; è quindi necessaria la distinzione dei vari tipi di Elemento e creando così una gerarchia **esclusiva** (un Elemento non può essere sia un libro sia un film allo stesso tempo).
Si è deciso di rendere **non totale** la gerarchia in modo da permettere l'introduzione di nuovi tipi di Elementi in futuro.
## Gerarchia delle _Edizioni_
![](img/3-2-gerarchie/gerarchia-2.png)
La [descrizione](1-descrizione.md) prevede che le edizioni dei libri e degli audiolibri abbiano attributi diversi: i libri hanno il _numero di pagine_ e l'immagine della loro _copertina_, mentre gli audiolibri hanno la _durata_ e la _cover art_ ad essi associata.
Si viene a creare così una gerarchia **totale** (un'Edizione è o libro o audiolibro) ed **esclusiva** (una edizione non può essere sia libro sia audiolibro).

7
3-3-autoassociazioni.md Normal file
View file

@ -0,0 +1,7 @@
# Classificazione delle autoassociazioni
In `alexandria`, sono presenti tre autoassociazioni che rappresentano tutte e tre lo stesso concetto: ogni libro, film o videogioco può essere associato ad altre entità del suo stesso tipo a cui è correlato.
![](img/3-3-autoassociazioni/autoassociazione.png)
> Inizialmente, si è considerato di aggiungere una unica autoassociazione alla entità Elemento, ma si è poi giunti alla conclusione che questo approccio sarebbe stato sbagliato: si sarebbero dovuti associare tutti i singoli Elementi creati da ciascun Utente, creando una quantità a crescita esponenziale di correlazioni!

3
3-4-relazioni.md Normal file
View file

@ -0,0 +1,3 @@
# Classificazione delle relazioni
todo

View file

@ -1,13 +0,0 @@
# Identificazione delle autoassociazioni
Nel progetto `alexandria`, ogni libro, film o videogioco è collegato ad una sua pagina in cui vengono visualizzate alcune informazioni salienti su di esso quali l'autore, la casa produttrice o simili.
Oltre alle informazioni già presenti in ciascuna pagina, si è pensato che sarebbe stato utile all'utente avere, per ogni libro, film o videogioco, anche una lista di elementi ad esso correlati, come ad esempio i sequel di un film, o altri libri ambientati nello stesso universo narrativo.
Pertanto si è deciso di inserire, per ognuna di queste tre categorie, una autoassociazione come quella in figura:
![](img/autoassociazione.png)
Un altra opzione precedentemente presa in considerazione fu quella di inserire un'unica autoassociazione, in corrispondenza dell'entità Elemento.
Questa opzione venne però scartata per ragioni di logica. L'entità Elemento, infatti, rappresenta una singola _istanza_ di un libro, film o videogioco, e sarebbe stato insensato collegare ciascuna istanza a tutte le altre, in quanto ciò avrebbe portato a un numero elevatissimo di collegamenti.

View file

@ -1,4 +1,4 @@
# `alexandria`
# ![Alexandria](img/0-README/alexandria.png)
A database for an hypotetical website for users to organize and share their media library.
@ -12,15 +12,16 @@ Made as a collaboration between [@Steffo99](https://github.com/Steffo99/) and [@
The specification for the project is available [in the `spec.pdf` file](/spec.pdf).
## Tasks
## Report structure
- [x] [Descrizione](/descrizione.md)
- [x] [Glossario](/glossario.md)
- [x] [Schema scheletro](/schema-scheletro.drawio)
- [x] [Identificazione delle autoassociazioni](/autoassociazione.md)
- [x] [Identificazione delle chiavi esterne](/chiaviesterne.md)
- [ ] ...?
- [x] [Schema finale](/schema-finale.drawio)
1. **[Descrizione](1-descrizione.md)**
2. **[Glossario](2-glossario.md)**
3. **Progettazione concettuale**
1. [Schema scheletro iniziale](3-1-schema-scheletro.md)
2. [Classificazione delle gerarchie](3-2-gerarchie.md)
3. [Identificazione delle autoassociazioni](3-3-autoassociazioni.md)
4. [Classificazione delle relazioni](3-4-relazioni.md)
5. [Schema scheletro finale](3-5-schema-finale.md)
## Compiling

View file

@ -1,14 +0,0 @@
# Aggiunta di gerarchie
Nel progetto `alexandria` sono state inserite due gerarchie:
![](img/gerarchia1.png)
Ogni utente, nel suo profilo, ha la possibilità di gestire e aggiornare una lista di elementi da lui posseduti: questi elementi possono essere libri, film o videogiochi. Siccome questi elementi hanno attributi e relazioni diverse, ma sono accomunati dall'essere posseduti dall'utente ed essere oggetto di recensioni, è sembrato opportuno rappresentarli come una gerarchia, in cui "Elemento" è l'entità padre, mentre le entità figlio sono rispettivamente "Elemento (libro)", "Elemento (film)", e "Elemento(gioco)".
![](img/gerarchia2.png)
La seconda gerarchia inserita riguarda invece le diverse edizioni di un libro: pur se relative allo stesso libro, le edizioni possono essere sia edizioni caracee (o ebook) sia edizioni audio. Le due categorie hanno attributi diversi: delle edizioni audio occorre sapere la durata in minuti, un'immagine rappresentativa e la voce narrante (che viene trattata come un'entità a parte), mentre nelle edizioni libro si vuole sapere il numero di pagine e la copertina; sono invece accomunate da tutte le altre relazioni, ad esempio l'essere relative ad uno stesso lbro.
Si è deciso di mantenere le entità di entrambe le gerarchie.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.1 KiB