Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
SQL Server 2000/2005/2008, Express, Access, MySQL, Oracle
Relazioni chiavi - problema di ripetizione percorsi a cascata
venerdì 23 marzo 2012 - 12.12
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
Elenco Tags
Windows Server 2008 R2
|
SQL Server 2008 R2
|
SQL Server 2008
|
SQL Server Express
andrestu
Profilo
| Expert
772
messaggi | Data Invio:
ven 23 mar 2012 - 12:12
allego un immagine con il diagramma della struttura tabellare sintetizzato al massimo per farvi capire meglio il 'problema'.
1173x751
31Kb
Spiegazione:
- tutti i record cantieri devono avere associato un utente
- tutti i record immobili devono avere associato un utente
- i record immobili possono avere associato un cantiere (ma anche no)
Azione:
- se elimino un record cantiere devo eliminare anche tutti i record immobili ad esso associati
Risoluzione:
- imposto sulla relazione tra cantieri e immobili "delete rule: cascade"
Azione:
- se elimino un record utente devo eliminare tutti i record cantieri e immobili ad esso associati
Risoluzione parziale (rimarrebbero orfani tutti gli immobili a cui non è associato nesun cantiere):
- imposto sulla relazione tra utenti e cantieri "delete rule: cascade"
a questo punto per fare in modo che anche gli immobili a cui non è associato nessun cantiere vengano eliminati dovrei impostare la stessa regola (delete rule: cascade) anche nella relazione tra utenti e immobili ma non posso perchè mi viene restituito il messaggio:
... may cause cycles or multiple cascade paths. Specify ON DELETE NO ACTION ...
Come risolvere il problema?
L'unica cosa che mi è venuta in mente è modificare la struttura eliminando la relazione tra utenti e immobili e facendo in modo che ad ogni immobile corrisponda sempre un cantiere, in questo modo eliminando un utente elimino anche tutti i cantieri ad esso associati eliminando anche gli immobili.
Non mi piace molto come soluzione perchè così dovrei obbligatoriamente associare ogni immobile ad un cantiere, cosa che per alcuni record sarebbe inutile...
Grazie in anticipo per possibili soluzioni o idee alternative...
Andrea Restucci - Web Developer
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
ven 6 apr 2012 - 11:28
>allego un immagine con il diagramma della struttura tabellare
>sintetizzato al massimo per farvi capire meglio il 'problema'.
>
>
>
>Spiegazione:
>- tutti i record cantieri devono avere associato un utente
>- tutti i record immobili devono avere associato un utente
>- i record immobili possono avere associato un cantiere (ma anche no)
sinceramente non metterei proprio l'idutente nella immobili.
Ma per affermare questo, è necessario che l'idutente del cantiere sia lo stesso degli immobili.
In questo modo l'idutente è relazionato SOLO coi cantieri e un cantiere detiene la relazione coi suoi immobili.
Mi sembra un modello più normale a prima vista.. che dici?
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT
http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
andrestu
Profilo
| Expert
772
messaggi | Data Invio:
ven 6 apr 2012 - 12:33
ciao Alex,
nel frattempo ho modificato la struttura in questo modo:
836x486
14Kb
ogni immobile e cantiere sono legati alla tabella ImmobileCantiereMaster,
per n.1 immobile avrò un record nella tabella ImmobileCantiereMaster e uno nella tabella Immobile
per n.1 cantiere avrò un record nella tabella ImmobileCantiereMaster e uno nella tabella cantiere
se al cantiere voglio collegare nX immobili basta che i recordi della tabella immobili fanno riferimento allo stesso record della tabella ImmobileCantiereMaster a cui fa riferimento il cantiere in questione
cancellando un cantiere eliminando il relativo record nella tabella ImmobileCantiereMaster verrà eliminato sia il cantiere che tutti gli immobili ad esso associtai
cosa ne pensi?
Andrea Restucci - Web Developer
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
mar 10 apr 2012 - 18:24
>cosa ne pensi?
se per la tua situazione reale è ok, credo che vada bene. Non posso dirti altro
considerato il fatto che siamo partiti da una situazione un po' diversa e hai comunque adattato lo schema ad una tua soluzione
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT
http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !