У меня есть база данных, подобная этой .
Как вы можете видеть, это база данных отелей, в которой хранится вся информация о бронировании, заказчиках и номерах. Проблема заключается в бронировании и таблицах BookDates. Каждый клиент, который делает бронирование, может забронировать несколько дат, и они не должны быть в любом порядке. Вот почему мне пришлось создавать BookDates, чтобы избежать этого Но теперь у меня есть проблема, как связать эти две таблицы, поскольку я не могу просто связать часть составного ключа с другой таблицей. Так выглядит таблица BookDates. Первичного ключа нет.
Часть коммандного ключа как внешнего ключа, избегающего избыточности
ответ
Если я правильно понимаю ваш вопрос, его можно сформулировать следующим образом: какие отношения (внешние и первичные ключи) должны быть созданы для отношений между таблицами BookDates и Bookings?
Если это вопрос, который я бы сказал, создайте первичный ключ, объединяющий оба поля в BookDates (комбинация должна быть уникальной). Заказы имеют первичный ключ в BookNum. Создайте внешний ключ из поля BookNum в BookDates для BookNum при бронировании.
Еще одна точка внимания: я бы назвал свои таблицы и поля единственными. Например, Table BookDate, с полями BookNum и Date. Каждая запись содержит только одну книгу. Когда вы извлекаете несколько элементов из своей таблицы, у вас есть список записей BookDate.
Да, вы правы, и ваш ответ кажется правильным. Однако я попытался это сделать, и я не знаю, как это сделать, поскольку он не позволяет мне сделать ключ Compound (Dates & BookNum) рядом с внешним ключом (BookNum). –
Где вы хотите его реализовать? (MySql, сервер Sql, что-то еще?) Какая ошибка вы получаете? Каков сценарий, который вы пытаетесь запустить? – Aster
В диаграмме ER, для таблицы BookDates, я вижу, что вы уже отметили BookNum как PK & FK. FK в порядке, но с использованием поля BookNum, поскольку PK не будет работать, поскольку BookNum может быть повторен и не может быть уникальным. Вы можете рассмотреть следующие варианты:
Создание составного первичного ключа BookNum & BookDates
Добавить новый BookDatesId в качестве первичного ключа, который может быть столбец идентификации и сделать что, как ПК, это будет «Суррогатный ключ».
«Как связать эти две таблицы». Какие две таблицы? BookDates имеет BookDate как иностранный ключ в Booking. – Thilo
В Резервировании нет поля BookDate, поэтому я не знаю, о чем вы говорите. –
Извините, я имею в виду BookNum. BookNum является основным ключом бронирования и упоминается в BookDates. – Thilo