Wartości NULL
Oznacza to również, że przedmiot będzie miał 5 identyfikatorów, w tym własny. To wszystko powoduje wartości null (najwyraźniej duże nie, co rozumiem), ponieważ jeśli miejsce i cena są opcjonalne i nie są używane w jednym wpisie do tabeli przedmiotów, będę miał tam wartość pustą
Osobiście uważam, że jest to sytuacja, w której NULL
wartości są doskonałe i na pewno nie miałbym żadnych wątpliwości co do umieszczenia tego w projekcie mojej bazy danych.
Jednym ze sposobów, w jaki widziałem, jak inni osiągnęli to samo bez NULL
wartościami jest utworzenie rekordu w opcjonalnych tabelach (miejsce i cena w twoim przykładzie) z identyfikatorem 0, co oznacza, że nie ma powiązanego rekordu - ale to po prostu sprawia, że programista aplikacji ma 10 razy więcej pracy, aby odfiltrować te rekordy - DUŻO łatwiej jest wykonać sprzężenie, a jeśli nie otrzymasz żadnych rekordów z powrotem, w opcjonalnej tabeli nie ma żadnych powiązanych rekordów.
Pamiętaj tylko, aby wykonać LEFT
lub RIGHT OUTER
dołącz, jeśli chcesz zwrócić Item
niezależnie od tego, czy mają Place
lub Price
powiązane (otrzymasz NULL
wartości w opcjonalnych kolumnach tabeli dla Item
s, które nie mają powiązanych rekordów) i INNER
dołącz, jeśli tylko chcesz Item
co robi? mieć powiązany opcjonalny rekord.
Klucze złożone
Klucz złożony to klucz w tabeli, która składa się z więcej niż jednej kolumny. Jeśli każda z Twoich Person
, Item
, Place
i Price
wszystkie mają identyfikator (nawet jeśli jest to tylko liczba automatycznie zwiększająca się), nie będziesz potrzebować klucza złożonego - tylko kolumna klucza podstawowego w każdej tabeli i kolumna klucza obcego w Item
tabela dla każdej powiązanej tabeli - np. item_id
, person_id
, place_id
, price_id
. Oświadczasz, że Item
ma swój własny identyfikator, więc nie powinieneś potrzebować klucza złożonego - tylko klucz podstawowy w item_id
kolumna.