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