2011-08-28 13 views
10

Si consideri il seguente:Data Modeling: è sempre necessario utilizzare una tabella di intersezione?

Ho due tabelle (clienti e cause) definiti come segue:

**Customers** 
CustomerId (PK) 
CustomerName 
CustomerPhone 

**Cases** 
CaseId (PK) 
CaseManager 
CaseNotes 

Ogni cliente può avere un numero illimitato di casi, tuttavia ogni singolo caso può appartenere solo a un cliente. Quindi, al fine di collegare le tabelle tra loro, vorrei utilizzare una tabella di intersezione (CustomerCases), che consiste rispettivamente delle chiavi esterne di ciascuna tabella.

Tuttavia, non è possibile aggiungere l'ID cliente dalla tabella Clienti come chiave esterna alla tabella Casi? Mi sento come se mi mancasse qualcosa. Ci sono delle insidie ​​di cui dovrei essere a conoscenza se dovessi scegliere di non utilizzare una tabella di intersezioni?

risposta

6

Se un caso può appartenere solo a un cliente, mi sembra del tutto ragionevole che si aggiunga un FK CustomerID alla tabella Casi.
Se si ritiene che il requisito possa eventualmente cambiare (ad esempio un caso potrebbe avere più clienti), l'approccio alla tabella di intersezione potrebbe avere più senso.
Inoltre, a meno che non si disponga di un numero indefinito di CaseManager, potrebbe anche avere senso avere una tabella Managers e avere un FK dalla tabella Cases a quella.

+0

Grazie mille! Sono nuovo qui, e non posso dirti quanto significhi ottenere una risposta completa così velocemente! – TelJanini

5

Una tabella "intersezione" (nota anche come "junction" o "cross-reference") è necessaria solo per modellare una relazione molti-a-molti. In questa situazione, un caso partecipa a una relazione molti-a-uno con un cliente. Quindi, una chiave straniera è tutto ciò che è richiesto - e in effetti sarebbe una soluzione più convenzionale. Evita l'inutile complessità di una tabella di giunzioni, a meno che non vi sia una ragione architettonica in senso contrario (ad esempio, l'applicazione si basa su un componente che richiede che tutte le relazioni siano rappresentate utilizzando le giunzioni).

+0

Molto apprezzato! Mi hai risparmiato un sacco di mal di testa! Grazie ancora! – TelJanini

+0

+1 per la terminologia e spiegando quale tipo di relazione richiede questo modello – Wiseguy

Problemi correlati