Отношения базы данных с использованием PHPMYADMIN (композитные ключи)
-
24-09-2019 - |
Вопрос
Я немного запутался при хорошей реляционной базе данных. Я использую phpmyadmin, чтобы создать базу данных. У меня есть следующие четыре столы. Не беспокойтесь об этом факте, и цена не являются обязательными, они просто.
- Человек (обязательный)
- Пункт (обязательный)
- Место (необязательно)
- Цена (необязательно)
Предмет - главный стол. У него всегда будет связано лицо. * Я знаю, что вы присоединяетесь к MySQL для таблиц. Если я хочу связать таблицы вместе, я могу использовать композитные клавиши (используя идентификаторы каждой таблицы), однако это наиболее правильный способ связать таблицы? Это также означает, что товар будет иметь 5 идентификаторов, включая свои собственные. Это все вызывает нулевые значения (видимо, большие нет нет, которые я могу понять), потому что если место и цена являются необязательными и не используются на одной записи в таблицу элементов, у меня там будет нулевое значение. Пожалуйста помоги!
Заранее спасибо. Я надеюсь это имеет смысл.
Решение
Нулевые значения
Это также означает, что товар будет иметь 5 идентификаторов, включая свои собственные. Это все вызывает нулевые значения (видимо, большие нет нет, которые я могу понять), потому что если место и цена являются необязательными и не используются на одной записи в таблицу товаров, у меня будет нулевое значение там
Лично я думаю, что это одна ситуация, где NULL
Значения идеальны, и я, безусловно, не будет никаких сомнений в том, чтобы положить это в мою конструкцию базы данных.
Один из способов, я видел других, достигая то же самое без NULL
Значения состоит в том, чтобы создать запись в дополнительных таблицах (место и цену в вашем примере) с идентификатором 0, который означает, что нет никакой связанной записи - но это просто делает в 10 раз больше работы для разработчика приложения для фильтрации этих записей - Гораздо проще сделать присоединение, и если вы не получите какие-либо записи, нет связанных записей в дополнительной таблице.
Просто не забудьте сделать LEFT
или RIGHT OUTER
Присоединяйтесь, если вы хотите вернуться Item
независимо от того, имеют ли у них Place
или Price
связано (вы получите NULL
значения в дополнительных столбцах таблицы для Item
S, что не имеет связанных записей) и INNER
Присоединяйтесь, если вы Только хочу Item
с этим делать иметь связанную необязательную запись.
Композитные клавиши
Композитный ключ - ключ в таблице, состоит из более чем одного столбца. Если каждый из ваших Person
, Item
, Place
а также Price
У всех есть идентификатор (даже если это просто номер автоматического увеличения), вам не понадобится композитный ключ - просто столбец первичного ключа в каждой таблице, а также столбец внешнего ключа в Item
Таблица для каждой связанной таблицы - например, item_id
, person_id
, place_id
, price_id
. Отказ Вы говорите это Item
имеет свой собственный идентификатор, поэтому вам не нужно нужен композитный ключ - просто первичный ключ на item_id
столбец.