Tecniche di progettazione di database relazionale

November 27

progettazione di database relazionali si basa su tre principali tecniche: la relazione uno-a-molti, la tabella unirsi, e la relazione molti-a-molti. Per capire la progettazione di database relazionali, è importante conoscere queste tecniche, così come concetti specifici per quanto riguarda il campo chiave.

La relazione uno-a-molti

La tecnica più comune database relazionale è il rapporto uno-a-molti. Questo si collega un singolo record nella tabella primaria (cioè, un database flat-file di record e campi), con qualsiasi numero di record di una tabella secondaria. relazioni uno-a-molti sono caratterizzate da collegamenti univoci nella tabella secondaria; ciascuno di questi record può avere più di un record correlato nella tabella primaria.

Questi collegamenti sono realizzati utilizzando "settori chiave", che sono voci univoche nella tabella primaria; Di solito questi campi vengono creati e applicati assegnando automaticamente un numero di serie sequenziale di ogni nuovo record. Ogni record nella tabella secondaria che condivide tali dati unica sarà collegato a un record primaria.

Ora, esplorare questa con un database libro esempio indirizzi. Dire che si desidera un design che permette a tutti nel database per avere più numeri di telefono. Questo è il modo più comune per ottenere questo risultato:

tabella People:
Notizia 1: (PersonID: 1, nome: "Franklin Roosevelt")
Record 2: (PersonID: 2, nome: "Lyndon Johnson")

tavolo Cellulari:
Notizia 1: (PersonID: 1, telefono: "202-555-1932")
Record 2: (PersonID: 1, telefono: "202-555-1936")
Record 3: (PersonID: 2, telefono: "202-555-1964")

Quando queste due tabelle sono correlate dal campo chiave PersonID, Franklin avrà due numeri di telefono, ma Lyndon avrà solo uno. Allo stesso modo, ogni numero di telefono è univocamente associato ad una sola persona nella tabella persone.

unire le tabelle

Una seconda tecnica è chiamata una "tabella join", che viene utilizzato per le registrazioni che sono tirati da altri due tavoli. Questo è comunemente usato quando i dati devono essere scelti tra tavoli fissi; unire le tabelle possono contenere solo dati relazionali, in modo che tutti i dati inseriti al loro interno devono essere tirati da tabelle esistenti.

Ad esempio, si supponga di voler aggiungere un "lavoro" o etichetta "casa" a ciascuno dei numeri di telefono nel database esempio. A tale scopo, riscrivendo il rapporto come una tabella join:

tabella People:
Notizia 1: (PersonID: 1, nome: "Franklin Roosevelt")
Record 2: (PersonID: 2, nome: "Lyndon Johnson")

tavolo Cellulari:
Notizia 1: (PhoneID: 1, telefono: "202-555-1932")
Record 2: (PhoneID: 2, telefono: "202-555-1936")
Record 3: (PhoneID: 3, Telefono: "202-555-1964")

tavolo PHONETYPE:
Notizia 1: (PhoneTypeID: 1, Tipo: "lavoro")
Record 2: (PhoneTypeID: 2, Tipo: "casa")

Partecipa tabella:
Notizia 1: (PersonID: 1, PhoneID: 1, PhoneTypeID: 1)
Record 2: (PersonID: 2, PhoneID: 2, PhoneTypeID: 2)
Record 3: (PersonID: 3, PhoneID: 3, PhoneTypeID: 1)

In questo database, tutte le relazioni connettersi al tavolo aderire, che fa tutto il lavoro di un nome relativo a un numero di telefono, e due di questi ad un tipo di numero di telefono. Una versione più efficiente potrebbe utilizzare due uniscono le tabelle, dal momento che il nome della persona non deve essere direttamente correlato al tipo di telefono: PersonID e PhoneID Registrazione tabella 1, PhoneID e PhoneTypeID Registrazione tabella 2.

Utilizzando unire le tabelle di creare molti-a-molti

In unire le tabelle, la relazione uno-a-molti non è più applicata. Se ci piace, possiamo assegnare lo stesso numero di telefono per molte persone, o la "casa" o l'etichetta "lavoro" al maggior numero di telefoni come ci piace. Questo ci permette di impostare fino molti-a-molti, in cui qualsiasi record in una tabella di collegarsi a molteplici record in altre tabelle. Questa è una tecnica potente database, ma dal momento che può creare relazioni tra dati, deve essere utilizzato solo quando una relazione uno-a-molti non sarà sufficiente.