|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Jul 2008
Città: Bologna
Messaggi: 466
|
Aiuto schema relazionale
Ragazzi ho un piccolo problema con un progetto.
![]() Guardando lo schema, vi sembra coerente? Allora io ho un dubbio e mi piacerebbe sapere come la pensate, l'associazione "Avvenuto" come la rappresento in forma tabellare? |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Oct 2000
Città: Udine
Messaggi: 3178
|
AVVENUTO(IdEvento, IdCentro, IdElemento) dove tutte sono FK e IdElemento è FK che può essere NULL. Magari se fornisci la descrizione testuale è meglio.
In questo caso un evento, se avvenuto, deve far riferimento per forza ad un centro ed eventualmente è collegato ad un elemento. Un elemento può far riferimento a più centri, e due eventi diversi possono far riferimento allo stesso centro, ma lo stesso elemento non può far riferimento allo stesso centro neanche se coinvolge elementi diversi. L'ultima situazione si evita imponendo che anche IdElemento faccia parte della chiave, ma in quel caso non possono esistere eventi senza qualche elemento associato. Spero di non aver cannato visto che sono le 3
__________________
Desktop: Intel i7-4770K | Asus Gryphon Z87 | Crucial 16GB DDR3 1600MHz | Gigabyte GTX 780 OC Windforce x3 | Samsung 840 Pro 128GB (x 2 RAID0) | be quiet! Straight Power E9 680W CM Mercatino: bottoni, Dede371, pippokennedy, Bulbi_67, randose, DarkSiDE, davidepaco, _Legend_ Ultima modifica di Gremo : 29-05-2010 alle 03:13. |
|
|
|
|
|
#3 | |
|
Senior Member
Iscritto dal: Jul 2008
Città: Bologna
Messaggi: 466
|
Quote:
|
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Oct 2000
Città: Udine
Messaggi: 3178
|
Vediamo se ho capito...
Codice:
Attestazione(IdAttestazione, DataAttestazione, Descrizione, IdEvento ->) Codice:
Elemento(IdElmento, Valore, Elemento, IdAttestazione ->) Codice:
Evento(IdEvento, Descrizione) Centro(IdCentro, Nome, Descrizione, EsistenzaOdierna) Avvenuto(IdEvento ->, IdCentro ->) Ovviamente un evento è automaticamente collegato a uno o più elementi di una stessa attestazione (e avere anche più attestazioni). PS: bell'esercizio!
__________________
Desktop: Intel i7-4770K | Asus Gryphon Z87 | Crucial 16GB DDR3 1600MHz | Gigabyte GTX 780 OC Windforce x3 | Samsung 840 Pro 128GB (x 2 RAID0) | be quiet! Straight Power E9 680W CM Mercatino: bottoni, Dede371, pippokennedy, Bulbi_67, randose, DarkSiDE, davidepaco, _Legend_ Ultima modifica di Gremo : 29-05-2010 alle 14:23. |
|
|
|
|
|
#5 | |
|
Senior Member
Iscritto dal: Jul 2008
Città: Bologna
Messaggi: 466
|
Quote:
Un esercizio alla dottor House. |
|
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Oct 2000
Città: Udine
Messaggi: 3178
|
Bhè allora che dubbi avevi? Faresti la stessa traduzione?
|
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Jul 2008
Città: Bologna
Messaggi: 466
|
Non leggo come fai ad associare elemento ad avvenuto.
|
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Oct 2000
Città: Udine
Messaggi: 3178
|
Tramite attestazione, che si collega un evento e quindi ad avvenuto
![]() Cmq facci vedere come l'avresti fatto tu no? |
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Jul 2008
Città: Bologna
Messaggi: 466
|
Bè il tuo ragionamento potrebbe andare bene. Come dici tu dovrei eliminare l'elemento dall'associazione avvenuto, giusto?
Io invece avevo pensato a utilizzare una chiave univoca nell'associazione avvenuto senza utilizzare la doppia chiave. Cioè: Avvenuto(IdAvvenuto, IdEvento, IdCentro, IdElemento) ma non ne sono tanto entusiasta. |
|
|
|
|
|
#10 |
|
Senior Member
Iscritto dal: Oct 2000
Città: Udine
Messaggi: 3178
|
Facciamo un esempio con il tuo schema:
Instanze valida di Attestazione ed Elemento: Codice:
ATTESTAZIONE IdAttestazione | IdEvento -> a1 e1 a2 e2 a3 e1 Attestazioni diverse possono far riferimento a eventi diversi o agli stessi eventi. NOTA: non puoi avere una cosa del tipo: a1 e1 a1 e2 Cioè attestazioni uguali non possono far riferimento ad eventi diversi. ELEMENTO IdElemento | IdAttestazione -> el1 a1 el2 a2 el3 a1 Elementi diversi fanno riferimento ad attestazioni diverse o alla stessa attestazione. NOTA: non puoi avere una cosa del tipo: el1 a1 el1 a2 Cioè elementi uguali non posso riferirsi ad attestazioni diverse. Codice:
IdAvventuo | IdEvento -> | IdElemento -> | IdCentro -> #1 e1 el1 c1 #2 e2 el3 c2 Codice:
IdEvento | IdElemento | IdAttestazione e1 el1 a1 e2 el3 a1 |
|
|
|
|
|
#11 |
|
Senior Member
Iscritto dal: Jul 2008
Città: Bologna
Messaggi: 466
|
Comunque ragionandoci un po’ su non so se la tua idea va bene nel mio caso.
Cerco di fare un esempio per capire il contesto della base di dati. Es: In iraq c’è la guerra, il new york times afferma che a bagdad sono morti 50 civili mentre a Nasiriyya sono morti 10 civili, mentre El Pais afferma che a bagdad sono morti 48 civili e a Nasiriyya sono morti 10 civili. I dati adesso vengono salvati così: Codice:
CENTRO RIFERIMENTO IDCENTRO NOME ESISTENZAODIERNA DESCRIZIONE 1 Bagdad si null 2 Nasiriyya si null Codice:
EVENTO STORICO IDEVENTO DESCRIZIONE 3 Guerra in Iraq Codice:
ATTESTAZIONE STORICA IDATTESTAZIONE DESCRIZIONE 4 Giornale New York Times 5 Giornale El Pais Codice:
ELEMENTO IDELEMENTO ELEMENTO VALORE IDATTESTAZIONE 6 vittime civili 50 4 7 vittime civili 10 4 8 vittime civili 48 5 9 vittime civili 10 5 Codice:
ATTESTA IDEVENTO IDATTESTAZIONE 3 4 3 5 Codice:
AVVENUTO IDEVENTO IDCENTRO IDELEMENTO 3 1 6 3 2 7 Ultima modifica di mkel84 : 29-05-2010 alle 17:59. |
|
|
|
|
|
#12 |
|
Senior Member
Iscritto dal: Oct 2000
Città: Udine
Messaggi: 3178
|
Scusa ma quindi tra attestazione ed evento c'è una relazione molti a molti?
L'esempio è chiaro ma non capisco la domanda...fa un altro esempio di cose non saresti in grado di esprimere!
__________________
Desktop: Intel i7-4770K | Asus Gryphon Z87 | Crucial 16GB DDR3 1600MHz | Gigabyte GTX 780 OC Windforce x3 | Samsung 840 Pro 128GB (x 2 RAID0) | be quiet! Straight Power E9 680W CM Mercatino: bottoni, Dede371, pippokennedy, Bulbi_67, randose, DarkSiDE, davidepaco, _Legend_ Ultima modifica di Gremo : 29-05-2010 alle 18:20. |
|
|
|
|
|
#13 |
|
Senior Member
Iscritto dal: Jul 2008
Città: Bologna
Messaggi: 466
|
Come faccio a sapere, dato le tabelle che ho, chi ha scritto che a bagdad sono morti 50 civili e chi invece ha scritto che ne sono morti 48? Io adesso non posso inserire nella tabella Avvenuto due tuple che differenziano solo nell'elemento.
|
|
|
|
|
|
#14 |
|
Senior Member
Iscritto dal: Jul 2008
Città: Bologna
Messaggi: 466
|
Nessun aiuto?
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 07:37.













L'esempio è chiaro ma non capisco la domanda...fa un altro esempio di cose non saresti in grado di esprimere!








