Valori NULL
Significa anche che l'oggetto avrà 5 ID incluso il suo. Tutto ciò causa valori nulli (apparentemente un grande no no, che posso capire) perché se il posto e il prezzo sono opzionali e non vengono utilizzati su una voce della tabella degli articoli avrò un valore nullo lì
Personalmente penso che questa sia una situazione in cui NULL
i valori sono perfetti e di certo non avrei dubbi sull'inserirlo nella progettazione del mio database.
In un modo ho visto altri ottenere la stessa cosa senza NULL
valori è quello di creare un record nelle tabelle facoltative (posto e prezzo nell'esempio) con un ID 0 che significa che non c'è alcun record correlato - ma questo rende solo 10 volte più lavoro per lo sviluppatore dell'applicazione per filtrare questi record - è MOLTO più facile fare un join e se non si recupera alcun record, non ci sono record correlati nella tabella opzionale.
Ricorda solo di fare un LEFT
o RIGHT OUTER
iscriviti se vuoi restituire Item
s indipendentemente dal fatto che abbiano un Place
o Price
associato (otterrai NULL
valori nelle colonne della tabella facoltative per Item
s che non hanno record associati) e un INNER
iscriviti se solo vuoi l'Item
s che fa avere un record facoltativo associato.
Chiavi composite
Una chiave composita è una chiave in una tabella composta da più di una colonna. Se ciascuno dei tuoi Person
, Item
, Place
e Price
tutti hanno un ID (anche se è solo un numero a incremento automatico) non avrai bisogno di una chiave composta:solo una colonna di chiave primaria in ogni tabella e una colonna di chiave esterna in Item
tabella per ogni tabella correlata - es. item_id
, person_id
, place_id
, price_id
. Dichiari che Item
ha un proprio ID, quindi non dovresti aver bisogno di una chiave composita:solo una chiave primaria su item_id
colonna.