NULL-värden
Det betyder också att objektet kommer att ha 5 id inklusive sitt eget. Allt detta orsakar nollvärden (uppenbarligen ett stort nej nej, vilket jag kan förstå) för om plats och pris är valfria och inte används på en post i objekttabellen kommer jag att ha ett nollvärde där
Personligen tror jag att detta är en situation där NULL
värdena är perfekta, och jag skulle absolut inte tvivla på att lägga in detta i min databasdesign.
Ett sätt jag har sett andra uppnå samma sak utan NULL
värden är att skapa en post i de valfria tabellerna (plats och pris i ditt exempel) med ett ID på 0 som betyder att det inte finns någon relaterad post - men detta gör bara 10 gånger mer arbete för utvecklaren av applikationen att filtrera bort dessa poster - det är MYCKET lättare att göra en join och om du inte får tillbaka några poster finns det inga relaterade poster i den valfria tabellen.
Kom bara ihåg att göra en LEFT
eller RIGHT OUTER
gå med om du vill returnera Item
s oavsett om de har en Place
eller Price
associerad (du får NULL
värden i de valfria tabellkolumnerna för Item
s som inte har associerade poster) och en INNER
gå med om du bara vill ha Item
är det gör har en tillhörande valfri post.
Kompositnycklar
En sammansatt nyckel är en nyckel i en tabell som består av mer än en kolumn. Om var och en av dina Person
, Item
, Place
och Price
alla har ett ID (även om det bara är ett automatiskt ökande nummer) du behöver inte en sammansatt nyckel - bara en primärnyckelkolumn i varje tabell och en främmande nyckelkolumn i Item
tabell för varje relaterad tabell - t.ex. item_id
, person_id
, place_id
, price_id
. Du anger att Item
har sitt eget ID, så du borde inte behöva en sammansatt nyckel - bara en primärnyckel på item_id
kolumn.