MySQL: ссылка на различные идентификаторы таблиц в одной таблице
Я работаю над проектом, где люди могут получать информацию о футбольном матче (полет, гостиница, достопримечательности, стадион). На сайте также должен быть список встреч (когда и где мой рейс, где находится мой отель, когда мне нужно идти на стадион...) На мой взгляд, было бы очень здорово, если бы вы упомянули рейсы, отель и т. д. в этой таблице встреч, чтобы предоставить пользователю дополнительную информацию об этой встрече
В общем я мог бы сделать что-то вроде
appointmentID | appointmentDate | appointmentDuration | flightID | hotelID | stadiumID
и заполните ненужные значения NULL. Но я думаю, что это не очень хорошая идея.
Также я мог бы хранить их таким образом:
appointmentID | appointmentDate | appointmentDuration | appointmentType | appointmentTypeID
и заполняйте назначениеСтрока строками таблицы (Отели, Авиабилеты,...) и назначение TypeID с идентификатором назначенияТип. Но этот путь не чувствует себя хорошо.
Итак, мой вопрос: что будет лучшим способом сохранить эти значения в базе данных?
РЕДАКТИРОВАТЬ: Я знаю, что цель состоит в нормализации таблицы. И вообще, я знаю, какие данные я должен поместить в отдельные таблицы. Мой вопрос, как я могу сделать это в этом конкретном случае
1 ответ
Первый способ кажется лучшим вариантом.
У меня было бы следующее, но я бы добавил справочную таблицу
Appointment_table app_id app_f_id (Ссылка на идентификатор таблицы полета) app_h_id (Ссылка на идентификатор таблицы отеля) app_s_id (Ссылка на идентификатор таблицы стадиона) app_ref_table (Это будет содержать уникальную сгенерированную ссылку, потому что использование идентификатора станет проблематичным в будущем как идентификатор может простираться на миллионы...)
Flight_table f_id f_carrier f_date_booking f_date_confirmed
Hotel_table h_id h_descripion h_ghest
Stadium_table s_id s_description
Каждый год справочная таблица будет начинаться с последовательности 1 или того, который вы когда-либо предпочитаете. На мой взгляд, это аккуратный подход к структуре таблицы. Reference_table r_id r_year r_sequence r_app_id (последний идентификатор, для которого был создан ссылочный номер)