Отношения базы данных с использованием PHPMYADMIN (композитные ключи)

StackOverflow https://stackoverflow.com/questions/2574228

Вопрос

Я немного запутался при хорошей реляционной базе данных. Я использую phpmyadmin, чтобы создать базу данных. У меня есть следующие четыре столы. Не беспокойтесь об этом факте, и цена не являются обязательными, они просто.

  1. Человек (обязательный)
  2. Пункт (обязательный)
  3. Место (необязательно)
  4. Цена (необязательно)

Предмет - главный стол. У него всегда будет связано лицо. * Я знаю, что вы присоединяетесь к MySQL для таблиц. Если я хочу связать таблицы вместе, я могу использовать композитные клавиши (используя идентификаторы каждой таблицы), однако это наиболее правильный способ связать таблицы? Это также означает, что товар будет иметь 5 идентификаторов, включая свои собственные. Это все вызывает нулевые значения (видимо, большие нет нет, которые я могу понять), потому что если место и цена являются необязательными и не используются на одной записи в таблицу элементов, у меня там будет нулевое значение. Пожалуйста помоги!

Заранее спасибо. Я надеюсь это имеет смысл.

Это было полезно?

Решение

Нулевые значения

Это также означает, что товар будет иметь 5 идентификаторов, включая свои собственные. Это все вызывает нулевые значения (видимо, большие нет нет, которые я могу понять), потому что если место и цена являются необязательными и не используются на одной записи в таблицу товаров, у меня будет нулевое значение там

Лично я думаю, что это одна ситуация, где NULL Значения идеальны, и я, безусловно, не будет никаких сомнений в том, чтобы положить это в мою конструкцию базы данных.

Один из способов, я видел других, достигая то же самое без NULL Значения состоит в том, чтобы создать запись в дополнительных таблицах (место и цену в вашем примере) с идентификатором 0, который означает, что нет никакой связанной записи - но это просто делает в 10 раз больше работы для разработчика приложения для фильтрации этих записей - Гораздо проще сделать присоединение, и если вы не получите какие-либо записи, нет связанных записей в дополнительной таблице.

Просто не забудьте сделать LEFT или RIGHT OUTER Присоединяйтесь, если вы хотите вернуться Itemнезависимо от того, имеют ли у них Place или Price связано (вы получите NULL значения в дополнительных столбцах таблицы для ItemS, что не имеет связанных записей) и INNER Присоединяйтесь, если вы Только хочу Itemс этим делать иметь связанную необязательную запись.

Композитные клавиши

Композитный ключ - ключ в таблице, состоит из более чем одного столбца. Если каждый из ваших Person, Item, Place а также Price У всех есть идентификатор (даже если это просто номер автоматического увеличения), вам не понадобится композитный ключ - просто столбец первичного ключа в каждой таблице, а также столбец внешнего ключа в Item Таблица для каждой связанной таблицы - например, item_id, person_id, place_id, price_id. Отказ Вы говорите это Item имеет свой собственный идентификатор, поэтому вам не нужно нужен композитный ключ - просто первичный ключ на item_id столбец.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top