2015-02-22 5 views
0

Для университетского курса мне нужно создать базу данных SQL.Может ли внешний ключ использоваться как первичный ключ?

Мы должны создать базу данных, содержащую информацию о продаже дома. Для этого я создал 3 таблицы: 1, содержащую информацию о домах, 1, содержащую информацию о предложениях, и 1 информацию о закрытых продажах.

Это я уже совершил и не могу быть изменен.

Это оставляет мне вопрос. Таблица Предложение содержит в качестве первичного ключа OfferID. Таблица Sales относится к таблице с использованием OfferID. Для меня было бы логично также использовать OfferID в качестве первичного ключа в Sales, так как продажа может состояться только 1 на 1 с предложением.

Это звучит логично? Или я должен делать это по-другому?

ответ

2

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

1

Если вы уверены, что это отношение 1 к 1, почему бы и нет. Но у вас должно быть ясно, что это ограничение, которое вы добавляете, что может быть проблематичным для будущего изменения, если модель изменится. (больше продаж с таким же предложением). Учитывая, что это университетский курс, не уверен, что является лучшим решением.

+0

Я на 100% положителен, это отношение 1 к 1. Кроме того, это вводный курс. Мы должны идентифицировать внешние ключи, используемые в наших базах данных, и я не был уверен, что это также следует пометить как внешний ключ, так как это также первичный ключ – gooper20

+0

. Jenish прав, это отношение от 0 до 1. Это также внешний ключ, потому что он связан с таковым на другом столе. –

+0

@LeonardoFesta Я возвращаю свой комментарий, поскольку люди всегда произносят его как 1 к 1, но с точки зрения ограничения - от 1 до 0 или 1. –

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