Часть ключа compund в качестве внешнего ключа, исключающего избыточность

Здравствуйте, у меня есть база данных, как этотаблицы базы данных,
Как видите, это база данных отелей, которая содержит всю информацию о бронировании, клиентах и ​​номерах. Проблема с таблицами бронирования и BookDates. Каждый клиент, который делает заказ, может забронировать несколько дат, и они не должны быть в любом порядке. Вот почему я должен был создать BookDates, чтобы избежать этоговведите описание изображения здесь Но теперь у меня есть проблема, как связать эти две таблицы, так как я не могу просто связать часть составного ключа с другой таблицей. Так выглядит таблица BookDates. Там нет первичного ключа.введите описание изображения здесь

2 ответа

Если я правильно понимаю ваш вопрос, его можно сформулировать так: какие отношения (внешний и первичный ключи) необходимо создать для отношений между таблицами BookDates и Bookings?

Если это вопрос, который я бы сказал, создайте первичный ключ, объединяющий оба поля в BookDates (комбинация должна быть уникальной). Бронирование имеет первичный ключ на BookNum. Создайте внешний ключ из поля BookNum в BookDates для BookNum в Bookings.

Еще один момент внимания: я бы назвал мои таблицы и поля в единственном числе. Например таблица BookDate, с полями BookNum и Date. Каждая запись содержит только одну bookDate. Когда вы получаете несколько элементов из вашей таблицы, у вас есть список записей BookDate.

На диаграмме ER для таблицы BookDates я вижу, что вы уже отметили BookNum как PK & FK. FK в порядке, но использование поля BookNum в качестве PK не будет работать, поскольку BookNum может повторяться и не может быть уникальным. Вы можете рассмотреть следующие варианты:

  1. Создайте составной первичный ключ на BookNum & BookDates

  2. Добавьте новый BookDatesId в качестве первичного ключа, который может быть столбцом Identity, и сделайте его как PK, это будет "Суррогатный ключ".

Другие вопросы по тегам