NULL стойности
Това също означава, че артикулът ще има 5 идентификатора, включително неговия собствен. Всичко това причинява нулеви стойности (очевидно голямо не, не, което мога да разбера), защото ако мястото и цената са по избор и не се използват при един запис в таблицата с артикули, там ще имам нулева стойност
Лично аз мисля, че това е една ситуация, в която NULL
стойностите са перфектни и със сигурност няма да имам никакви съмнения относно влагането на това в дизайна на моята база данни.
По един начин съм виждал други да постигат същото без NULL
стойности е да създадете запис в незадължителните таблици (място и цена във вашия пример) с идентификатор 0, което означава, че няма свързан запис - но това просто прави 10 пъти повече работа на разработчика на приложението да филтрира тези записи - ДАЛЕЧЕ по-лесно е да направите присъединяване и ако не получите никакви записи обратно, няма свързани записи в незадължителната таблица.
Просто не забравяйте да направите LEFT
или RIGHT OUTER
присъединете се, ако искате да върнете Item
s независимо дали имат Place
или Price
свързани (ще получите NULL
стойности в незадължителните колони на таблицата за Item
s, които нямат свързани записи) и INNER
присъединете се, ако самоте искате Item
това справи имат свързан незадължителен запис.
Композитни клавиши
Съставният ключ е ключ в таблица, която се състои от повече от една колона. Ако всяко от вашите Person
, Item
, Place
и Price
всички имат идентификационен номер (дори ако това е просто автоматично нарастващо число) няма да ви е необходим съставен ключ - само колона с първичен ключ във всяка таблица и колона с външен ключ в Item
таблица за всяка свързана таблица - напр. item_id
, person_id
, place_id
, price_id
. Заявявате, че Item
има свой собствен идентификатор, така че не трябва да се нуждаете от съставен ключ - само първичен ключ в item_id
колона.