Sei sulla pagina 1di 8

Fiorin Davide

PROGETTO DATABASE
Testo
Si vuole realizzare la base di dati per la gestione di un social network.
Gli utenti sono rappresentati da un proflo di cui si vedono vari aspetti in un esempio di
fnestrautente riprodotto nel documento ProfloUtente.
Gli iscritti possono pubblicare foto sul proprio proflo.
Gli utenti possono creare gruppi di utenti e farne parte. l creatore di un gruppo !a il
ruolo di amministratore per "uel gruppo# gestisce il nome del gruppo $da un nome al
gruppo c!e deve essere unico tra i gruppi dello stesso creatore% e% se il caso% lo
modifca& e la sua composizione. 'i sono due tipi di gruppi# gruppi privati in cui il
creatore seleziona e invita i partecipanti tra i propri amici e i gruppi pubblici a
cui posso aggiungersi tutti gli utenti. gruppi possono anc!e avere natura (locale) nel
"ual caso si indica il luogo c!e li identifca $scuola% citta*% villaggio vacanze etc.&
Gli iscritti possono mandare ric!ieste di amicizia agli altri utenti i "uali possono
accettare o declinare. +ella bd non manteniamo i dinieg!i ma la cancellazione di
amicizie accordate in precedenza. ,micizie e foto possono essere cancellate dal proflo
da parte dell*utente proprietario e una volta cancellate vengono mantenute per 6
mesi prima di essere eliminate defnitivamente.
Gli utenti possono postare sulla propria pagina e su "uella degli amici foto% link e testi-
una foto pu. essere accompagnata dall*indicazione di un luogo di cui si specifca un
indirizzo completo ed un eventuale nome.
Gli utenti possono disattivare i propri profli% le informazioni dellutente rimangono
comunque memorizzate $dati personali e post& mentre amicizie e foto vengono
cancellate defnitivamente insieme alla disattivazione del proflo.
+/# 0osso# entita1
Giallo# relazione
Sottolineato# attributo
'orsivo e grassetto# possibili regole aziendali
Revisione delle specifche dei requisiti
F2. 3gni utente possiede un proflo nel "uale puo1 pubblicare foto% link% testi.
F4. 3gni utente puo1 ric!iedere amicizie ad altri utenti i "uali possono accettare o
rifutare.
F5. 3gni utente puo* creare uno o piu gruppi nei "uali puo1 invitare altri utenti. 3gni
gruppo !a un amministratore c!e corrisponde al creatore- egli !a il compito di gestire
la composizione del gruppo e il nome. Gruppi privati o pubblici a propria discrezione%
possibilita1 di avere gruppi locali.
F6. 3gni utente puo1pubblicare sul proprio proflo e sul proflo di altri foto% link% testi.
F7. 3gni utente puo1 cancellare foto e amicizie dal proprio proflo- vengono mantenute
per 8 mesi prima di essere cancellate defnitivamente.
F8. 3gni utente puo* disattivare il proprio proflo.
Glossario dei termini
D,93 D:S'0;3
+:
S+3+< US,93 +
F0,S '3+
F0,S D
0F:0<:+
93
DU//
2. Utente Utilizzatore
del social
network
iscritto Proflo%
foto% link%
testo%
gruppo%
amici%
amministra
tore%
ric!iesta
amicizia%
disattivazio
ne proflo%
eliminazion
e amicizia
F2%F4%F5%F
6%F7%F8
4. Proflo =a pagina
dell*utente
in cui puo*
postare
foto% link e
testo
Pagina%
proflo
utente
Utente%
amicizia%
disattivazio
ne proflo
F2%F6%F7%F
8
5. Foto Foto
caricate da
utenti
nformazio
ne
personale
Utente%
amici%
eliminazion
e foto%
disattivazio
ne proflo%
luogo%
proflo
F4%F6%F7
6. =ink ndirizzam
enti a siti
esterni da
parte di
utenti
nformazio
ne
personale
Utente%
proflo%
amici
F2%F6
7. 9esto Gli utenti
possono
scrivere
del testo
sul proflo
o su "uello
di amici
nformazio
ne
personale
Utente%
proflo%
amici
F6
8. Gruppo
privato
Gruppo nel
"uale si
puo* venire
a fare
parte solo
essendo
invitati da
un amico
Utente%
nome%
gruppo%
amici%
localita1%
amministra
tore
F5
>. Gruppo
pubblico
Gruppo
aperto a
Utente%
nome%
F5
tutti i tipi
di utenti
gruppo%
localita1%
amministra
tore
?. 0ic!iesta
amicizia
Una
ric!iesta
c!e viene
mandata
ad un altro
utente% il
"uale puo*
accettare o
declinare
Utente%
amici
F4%F7
@. ,mministr
atore
'reatore di
un gruppo%
sceglie
nome e
composizio
ne
'reatore Utente%
nome
gruppo%
gruppo
pubblico%
gruppo
privato
F5
2A. +ome
gruppo
dentifcati
vo del
gruppo
privato o
pubblico
Utente%
amministra
tore%
gruppo
pubblico%
gruppo
privato
F5
22. ,mici Utenti c!e
!anno
accettato
reciprocam
ente la
ric!iesta di
amicizia
,micizie 0ic!iesta
amicizia%
utente%
foto% link%
testo%
eliminazion
e amicizia
F4%F7
24. :liminazion
e amicizia
:liminazion
e di un
utente da
parte di
una delle
due parti
in
"uestione
Utente%
amici
F7
25. :liminazion
e foto
=e foto
cancellate
rimangono
salvate per
8 mesi
prima di
essere
eliminate
defnitivam
ente
Utente%
foto
F7
26. Disattivazi
one proflo
Bengono
eliminate
amicizie e
foto
'ancellazio
ne proflo
Utente%
foto%
proflo%
link% testo
F8
mentre
rimangono
memorizza
ti dati
personali
"uali foto e
post
27. =ocalita1 =uogo di
appartene
nza ad un
gruppo
Gruppo
privato%
gruppo
pubblico
F5
28. =uogo =uogo di
scatto di
una foto
Utente%
foto
F5
2>. Utente
proprietari
o
Utente c!e
!a postato
un
determinat
o link% foto
o testo
Utente%
proflo%
foto% link%
testo
F6
2?. Gruppi di
utenti
nsieme di
utenti
Utente%
gruppo
privato%
gruppo
pubblico
F5
2@. Post Utente c!e
carica foto%
link o testo
Utente%
foto% link%
testo
F2%F6%F7
Schema EA e regole aziendali

0egole aziendali#
+ei gruppi privati il creatore seleziona e invita i partecipanti tra i propri amici-
=e amicizie cancellate vengono eliminate dalla tabella (ric!iede amicizia)
immediatamente-
,micizie e foto dopo essere cancellate rimangono nel database per 8 mesi $per
"uesto abbiamo salvato la data di cancellazione come attributo di F393&-
Cuando un utente disattiva il proprio proflo% cancella amicizie e foto dal database
mentre i dati personali e i post vengono mantenuti-
Cuando un utente cancella il proprio proflo% i dati c!e devono rimanere nel
database vengono spostati dalla tabella (posta(alla tabella (!a postato(-
se i post di un utente disattivo !anno come riferimento un utente ancora attivo
esso D da ricercare nella tabella (utente con proflo)% precisamente in colonna
(+utente)-
Schema EA ristrutturato e regole aziendali
<otivazione delle scelte fatte
,bbiamo eliminato la generalizzazione (gruppo) in (gruppo pubblico) e (gruppo
privato) per ottimizzare lo spazio occupato su disco% inserendo l* attributo
(privato) booleano nella nuova entitE (gruppo)-
,bbiamo eliminato la generalizzazione (utente) e (utente con proflo) e
l*abbiamo sostituito con una relazione (diventa) tra le nuove entitE (utente con
proflo) e (utente inattivo) in seguito alle decisioni prese nello sc!ema
iniziale$divido utente da utente con proflo perc!D una volta c!e cancello il
proflo devo mantenere nella relazione (!a postato) la cronologia dei post
relativi allFutente&-
,bbiamo inserito gli stessi attributi di (utente con proflo) in (utente inattivo)-
nonostante sia una ridondanza% "uesta ridondanza D necessaria perc!D gli
accessi agli attributi dell*entitE D signifcativamente alto-
,bbiamo inserito un nuovo attributo (+foto) come c!iave primaria dell*entitE
(foto) poic!D gli attributi inseriti precedentemente non potevano garantire
l*unicitE dell*occorrenza-
,bbiamo inserito un nuovo attributo (+post) come c!iave primaria dell*entitE
(post) poic!D gli attributi inseriti precedentemente non potevano garantire
l*unicitE dell*occorrenza-
,bbiamo inserito un nuovo attributo (+utente) come c!iave primaria dell*entitE
(utente con proflo) poic!D gli attributi inseriti precedentemente non potevano
garantire l*unicitE dell*occorrenza-
0egole aziendali#
+ei gruppi privati il creatore seleziona e invita i partecipanti tra i propri amici-
=e amicizie cancellate vengono eliminate dalla tabella (in amicizia)
immediatamente-
,micizie e foto dopo essere cancellate rimangono nel database per 8 mesi $per
"uesto abbiamo salvato la data di cancellazione come attributo di F393&-
Cuando un utente disattiva il proprio proflo% cancella amicizie%foto e gruppi di
cui era amministratore dal database mentre i dati personali e i post vengono
mantenuti-
Cuando un utente disattiva il proprio proflo% si spostano gli attributi da (utente
con proflo) a (utente inattivo) e si spostano tutte le tuple relative allFutente
dalla tabella (posta) alla tabella (!a postato)-
se i post di un utente disattivo !anno come riferimento un utente ancora attivo
esso D da ricercare nella tabella (utente con proflo)% precisamente in colonna
(+utente).
Schema logico in orma grafca
Partecipa$!utente % !omeGruppo % !utenteAmm&-
nvitato$!utente % !omeGruppo % !utenteAmm&-
Utente'onProflo$!utente% 'ittE% Scuola% +ome% 'ognome% =avoro&-
Utentenattivo$!utente% +utente'onProflo% 'ittE% Scuola% +ome% 'ognome% =avoro&-
Gruppo$!omeGruppo" !utenteAmm% Privato% =ocale&-
nG,micizia$!utente#% !utente$% ,ccettata% Data'ancellazione&-
Posta$!utentePostante" !utenteA%uiPosta" !post&-
HaGPostato$!utentePostante" !utenteA%uiPosta" !post &-
Foto$!oto% =uogo% ndirizzo% Data'anc% NutentePostante&-
Post$!post% =ink% 9esto% DataPubblicazione%+fotoI&-
DD&
'0:,9: 9,/=: Utente
$
+utente varc!ar$4A& U+CU: primarJ keJ%
+ome varc!ar$4A& +39 +U==%
'ognome varc!ar$4A& +39 +U==%
Scuola varc!ar$4A& +39 +U==%
=avoro varc!ar$4A& +39 +U==%
'ittE varc!ar$4A& +39 +U==
&
'0:,9: 9,/=: nG,micizia
$
+utente2 varc!ar$4A& foreign keJ references Utente$+utente&%
+utente4 varc!ar$4A& foreign keJ references Utente$+utente&%
,ccettata tinJint$2& +39 +U== default A%
DataG'ancellazione datetime%
primarJ keJ$+utente2%+utente4&
&
'0:,9: 9,/=: Gruppo
$
+omeGGruppo varc!ar$4A& +39 +U==%
+utenteG,mm varc!ar$4A& foreign keJ references Utente$+utente&%
Privato tinJint$2& +39 +U== default A%
=ocale varc!ar$4A&%
primarJ keJ$+omeGGruppo% +utenteG,mm&
&
'0:,9: 9,/=: Partecipa
$
+utente varc!ar$4A& foreign keJ references Utente$+utente&%
+omeGGruppo varc!ar$4A& foreign keJ references Gruppo$+omeGGruppo&%
+utenteG,mm varc!ar$4A& foreign keJ references Utente$+utente&%
primarJ keJ$+utente% +omeGGruppo% +utenteG,mm&
&
'0:,9: 9,/=: nvitato$
+utente varc!ar$4A& foreign keJ references Utente$+utente&%
+omeGGruppo varc!ar$4A& foreign keJ references Gruppo$+omeGGruppo&%
+utenteG,mm varc!ar$4A& foreign keJ references Utente$+utente&%
primarJ keJ$+utente% +omeGGruppo% +utenteG,mm&
&
'0:,9: 9,/=: Posta
$
+utenteGPostante varc!ar$4A& foreign keJ references Utente$+utente&%
+utenteGSuG'uiGPosta varc!ar$4A& foreign keJ references Utente$+utente&%
+post varc!ar$4A& foreign keJ references Post$+post&%
primarJ keJ$+utenteGPostante% +utenteGSuG'uiGPosta% +post&
&
'0:,9: 9,/=: Foto
$
+foto varc!ar$4A& primarJ keJ%
=uogo varc!ar$4A&%
ndirizzo varc!ar$4A&%
DataG'anc datetime%
+utente varc!ar$4A& foreign keJ references Utente$+utente&
&
'0:,9: 9,/=: Post
$
+post varc!ar$4A& primarJ keJ%
=ink teKt%
9esto teKt%
DataGPubblicazione datetime +39 +U==%
+foto varc!ar$4A& foreign keJ references Foto$+foto&
&
Popolazione data'ase