Relazioni di database usando phpmyadmin (tasti compositi)
-
24-09-2019 - |
Domanda
Sono un po 'confuso nel creare un buon database relazionale. Sto usando PhpMyAdmin per creare un database. Ho le seguenti quattro tabelle. Non preoccuparti di questo luogo di fatto e il prezzo sono opzionali.
- Persona (obbligatorio)
- Articolo (obbligatorio)
- Luogo (opzionale)
- Prezzo (opzionale)
L'elemento è la tabella principale. Avrà sempre una persona collegata. * So che fai unito a Mysql per i tavoli. Se voglio collegare insieme le tabelle, potrei usare i tasti compositi (usando gli ID da ogni tabella), tuttavia è il modo più corretto per collegare le tabelle? Significa anche che l'oggetto avrà 5 ID inclusi i propri. Tutto ciò causa valori null (apparentemente un no grande no, che posso capire) perché se il luogo e il prezzo sono opzionali e non sono usati su una voce nella tabella degli articoli avrò un valore nullo lì. Per favore aiuto!
Grazie in anticipo. Spero che questo abbia senso.
Soluzione
Valori nulli
Significa anche che l'oggetto avrà 5 ID inclusi i propri. Tutto questo causa valori null (apparentemente un no grande no, che posso capire) perché se il luogo e il prezzo sono opzionali e non sono usati su una voce nella tabella degli articoli avrò un valore null lì
Personalmente penso che questa sia una situazione in cui NULL
I valori sono perfetti e certamente non avrei dubbi sul metterlo nel mio design del database.
Un modo in cui ho visto altri raggiungere la stessa cosa senza NULL
Valori è quello di creare un record nelle tabelle opzionali (luogo e prezzo nel tuo esempio) con un ID di 0 che significa che non esiste un record correlato - ma questo rende 10 volte più lavoro per lo sviluppatore dell'applicazione per filtrare questi record - È molto più facile fare un join e se non ricevi alcun record, non ci sono record correlati nella tabella opzionale.
Ricorda solo di fare un LEFT
o RIGHT OUTER
Unisciti se vuoi tornare Item
s indipendentemente dal fatto che abbiano un Place
o Price
Associato (otterrai NULL
valori nelle colonne della tabella opzionali per Item
s che non hanno record associati) e un INNER
Unisciti se te solo voglio il Item
s that fare avere un record opzionale associato.
Tasti compositi
Una chiave composita è una chiave in una tabella composta da più di una colonna. Se ognuno dei tuoi Person
, Item
, Place
e Price
Tutti hanno un ID (anche se è solo un numero di incrementazione automatica) non avrai bisogno di una chiave composita - solo una colonna chiave primaria in ogni tabella e una colonna di chiave esterna in Item
Tabella per ogni tabella correlata - EG item_id
, person_id
, place_id
, price_id
. Lo affermi Item
ha il suo ID, quindi non dovresti aver bisogno di una chiave composita, solo una chiave primaria su item_id
colonna.