2015-04-29 4 views
0

У меня есть база данных, подобная этой database tables.
Как вы можете видеть, это база данных отелей, в которой хранится вся информация о бронировании, заказчиках и номерах. Проблема заключается в бронировании и таблицах BookDates. Каждый клиент, который делает бронирование, может забронировать несколько дат, и они не должны быть в любом порядке. Вот почему мне пришлось создавать BookDates, чтобы избежать этого enter image description here Но теперь у меня есть проблема, как связать эти две таблицы, поскольку я не могу просто связать часть составного ключа с другой таблицей. Так выглядит таблица BookDates. Первичного ключа нет. enter image description hereЧасть коммандного ключа как внешнего ключа, избегающего избыточности

+0

«Как связать эти две таблицы». Какие две таблицы? BookDates имеет BookDate как иностранный ключ в Booking. – Thilo

+0

В Резервировании нет поля BookDate, поэтому я не знаю, о чем вы говорите. –

+0

Извините, я имею в виду BookNum. BookNum является основным ключом бронирования и упоминается в BookDates. – Thilo

ответ

0

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

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

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

+0

Да, вы правы, и ваш ответ кажется правильным. Однако я попытался это сделать, и я не знаю, как это сделать, поскольку он не позволяет мне сделать ключ Compound (Dates & BookNum) рядом с внешним ключом (BookNum). –

+0

Где вы хотите его реализовать? (MySql, сервер Sql, что-то еще?) Какая ошибка вы получаете? Каков сценарий, который вы пытаетесь запустить? – Aster

0

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

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

  2. Добавить новый BookDatesId в качестве первичного ключа, который может быть столбец идентификации и сделать что, как ПК, это будет «Суррогатный ключ».