2010-10-09 3 views
3

Что такое термин, описывающий взаимосвязь между таблицами, в которых используется общий первичный ключ?Таблицы с общим первичным ключом

Вот пример:

Таблица 1
свойство (PROPERTY_ID, property_location, property_price, ...);

Таблица 2
квартира (PROPERTY_ID, flat_floor, flat_bedroom_count, ...);

ответ

5

Что у вас есть выглядит как наследование таблицы. Если ваша структура таблицы такова, что все записи flat представляют собой одиночные property, но не все property записей относятся к flat, то это наследование таблицы. Это способ моделирования чего-то близкого к объектно-ориентированным отношениям (другими словами, flat наследует от property) в реляционной базе данных.

0
+0

Я считаю, 'иностранные key' это термин, связанный с столбцов таблицы не таблицы Я искал термин, описывает таблицы. –

+0

@ Emanuil: Ах, тогда я неверно истолковал ваш вопрос. Так вы действительно ищете мне для отношения между таблицами, которые связаны внешним ключом? –

+0

@Oil: В частности, я считаю, что он ищет имя для шаблона проектирования, где первичный ключ одной таблицы * также * внешний ключ к другой таблице. –

4

Если я правильно понимаю ваш пример, термином моделирования данных является тип Supertype/Subtype. Это метод моделирования, в котором вы определяете корневую таблицу (супертип), содержащую общие атрибуты, и одну или несколько ссылочных таблиц (подтипов), которые содержат разные атрибуты на основе моделируемых объектов.

Например, у вас может быть таблица Person (супертип), содержащая столбцы для атрибутов, относящихся ко всем людям, например Name. Тогда у вас может быть таблица Employee (подтип), содержащая атрибуты, характерные только для сотрудников, такие как ставка оплаты и дата найма. Затем вы можете продолжить этот процесс с помощью дополнительных таблиц для других специализаций Лица, таких как Подрядчик. Каждая из таблиц подтипа будет иметь столбец ключевых слов PersonID, который может быть основным ключом таблицы подтипа, а также внешний ключ, ссылающийся на таблицу Person.

Для получения дополнительной информации, найдите в Google «объекты супертипа и подтипа» и просмотрите ссылки ниже.

1

Существует не хорошее имя для этого отношения в общей терминологии баз данных (насколько я знаю). Это не отношение «один к одному», потому что не гарантируется запись в «расширяющейся» таблице для каждой записи в основной таблице. Это не отношение «один-ко-многим», потому что допускается максимум одна запись, которая в противном случае была бы «большой» стороной отношений.

Лучшее, что я могу сделать, это отношения «один к одному» или «нет» или «один к одному». (Я сам признаюсь в неаккуратной терминологии - я просто называю это взаимно-однозначным отношением.)

Независимо от того, что вы решили назвать, вы можете правильно моделировать его и поддерживать целостность в своей базе данных, создав столбец property_id в свойство PK и столбец property_id в плоском PK, а также FK для свойства.

0

«Логика и базы данных» выдвигает термин «от одного до максимум одного» для такого рода отношений. (Обратите внимание, что безумно присваивать имена таблицам, за счет которых они участвуют.)

Остерегайтесь людей, которые предложили такие вещи, как «внешний ключ», «наследование таблицы», краткие, все остальные ответы, приведенные здесь. Эти люди делают предположения, что вы явно не заявляли, что они действительны, а именно, что одна из ваших двух таблиц будет содержать все ключевые значения, которые появляются в другом.

+0

Как бы вы интерпретировали «... которые имеют общий первичный ключ?», Если не означать, что одна из двух таблиц будет содержать все ключевые значения, которые появляются в другом? Можете ли вы привести пример, включающий две таблицы с разделяемыми первичными ключами, где одна таблица не будет содержать все ключевые значения, которые появляются в другом? – JeremyDWill

+0

ОП в других комментариях заявляет, что он спрашивает о сценариях, где первичный ключ таблицы * также * является внешним ключом к другой таблице. В таком случае родительская таблица (таблица, на которую ссылается внешний ключ другой таблицы) * *, гарантированно содержит все ключевые значения, которые появляются в другом. –

0

(дисфункциональности сайта не позволяет мне добавлять это как комментарий в соответствующем месте.)

«Как бы вы интерпретировать» ... что доля общей первичный ключ?»"

I интерпретировать это в единственном разумном смысле: в таблице 1 значения атрибутов для первичного ключа гарантируются как уникальные, а в таблице2 значения атрибутов для первичного ключа гарантируются как уникальные. И кроме того, первичный ключ в обеих таблицах имеет одинаковые [набор] имен атрибутов и что типы, соответствующие атрибуту первичного ключа [s], также попарно одинаковы. Не больше, не меньше.

В частности, «совместное использование первичного ключа» означает «наличие общего первичного ключа», а это означает, в свою очередь, «наличие определенного правила внутренней уникальности», но эта общность не гарантирует никоим образом что значение первичного ключа, отображаемое в одной таблице, должно также отображаться во второй таблице.

«Можете ли вы привести пример с двумя таблицами с разделяемыми первичными ключами, где одна таблица не будет содержать все значения ключей, которые появляются в другом?» "

Таблица1: колонка А целочисленного типа, первичный ключ А Table2: колонка А целочисленного типа, первичный ключ А

Строки в таблице 1: {A: 1}.. Удовлетворяет первичный ключ для table1 Строки в table2: {A: 2}..?. Удовлетворяет первичный ключ для table2

будучи убеждена

+0

Как указано в другом комментарии, который я только что опубликовал, OP в других комментариях заявил, что он спрашивает о сценариях, где первичный ключ таблицы также является внешним ключом к другой таблице. В таком случае родительская таблица (таблица, на которую ссылается внешний ключ другой таблицы), будет содержать все ключевые значения, которые появляются в другом. Ваш ответ и предостережение не касаются сценария, о котором все говорят. –

+0

Мой ответ и осторожное высказывание РЕШИТЕ ​​сценарий, о котором говорит «кто-то», потому что OP допускает этот сценарий, учитывая очень точную формулировку его вопроса. –

+0

Учитывая очень точную формулировку поставленного вопроса, все ответы, кроме моих, были _wrong_, потому что все они полагались на предположения, которые нельзя было утверждать из вопроса, поскольку он был сформулирован. –

Смежные вопросы