mirror of
https://github.com/Steffo99/alexandria.git
synced 2024-11-21 13:24:18 +00:00
Inizio lavoro sulla relazione
This commit is contained in:
parent
1c1c92c767
commit
a8dc9e0c1b
13 changed files with 64 additions and 47 deletions
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
|
@ -0,0 +1 @@
|
||||||
|
.idea/
|
|
@ -1,21 +1,11 @@
|
||||||
# Glossario
|
# Glossario
|
||||||
|
|
||||||
## Utenti
|
## Generale
|
||||||
|
|
||||||
| Nome | Dati | Sinonimi | Collegamenti | Note |
|
| Nome | Dati | Sinonimi | Collegamenti | Note |
|
||||||
|------|------|----------|--------------|------|
|
|------|------|----------|--------------|------|
|
||||||
| Utente | username, hash della password, email, è amministratore, è bannato | user, admin, amministratore | possiede Elementi | |
|
| 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 | |
|
| 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 | |
|
| Recensione | valutazione (0-100), commento, data, è nascosto | valutazione, commento, post | riguardante un Elemento | |
|
||||||
|
|
||||||
## Libri
|
## Libri
|
19
3-1-schema-scheletro.md
Normal file
19
3-1-schema-scheletro.md
Normal 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
23
3-2-gerarchie.md
Normal 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
7
3-3-autoassociazioni.md
Normal 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
3
3-4-relazioni.md
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
# Classificazione delle relazioni
|
||||||
|
|
||||||
|
todo
|
|
@ -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.
|
|
19
README.md
19
README.md
|
@ -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.
|
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).
|
The specification for the project is available [in the `spec.pdf` file](/spec.pdf).
|
||||||
|
|
||||||
## Tasks
|
## Report structure
|
||||||
|
|
||||||
- [x] [Descrizione](/descrizione.md)
|
1. **[Descrizione](1-descrizione.md)**
|
||||||
- [x] [Glossario](/glossario.md)
|
2. **[Glossario](2-glossario.md)**
|
||||||
- [x] [Schema scheletro](/schema-scheletro.drawio)
|
3. **Progettazione concettuale**
|
||||||
- [x] [Identificazione delle autoassociazioni](/autoassociazione.md)
|
1. [Schema scheletro iniziale](3-1-schema-scheletro.md)
|
||||||
- [x] [Identificazione delle chiavi esterne](/chiaviesterne.md)
|
2. [Classificazione delle gerarchie](3-2-gerarchie.md)
|
||||||
- [ ] ...?
|
3. [Identificazione delle autoassociazioni](3-3-autoassociazioni.md)
|
||||||
- [x] [Schema finale](/schema-finale.drawio)
|
4. [Classificazione delle relazioni](3-4-relazioni.md)
|
||||||
|
5. [Schema scheletro finale](3-5-schema-finale.md)
|
||||||
|
|
||||||
## Compiling
|
## Compiling
|
||||||
|
|
||||||
|
|
14
gerarchia.md
14
gerarchia.md
|
@ -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 |
Loading…
Reference in a new issue