MySQL:在一个表中引用各种表ID

时间:2016-10-07 08:31:55

标签: mysql database-normalization

我正在开展一个项目,人们可以收到有关足球比赛(飞行,酒店,景点,体育场)的信息。该网站还应该包含一个约会列表(我的航班何时何地,我的酒店在哪里,何时我必须去体育场......)在我看来,如果你参考航班,这将是非常酷的,此约会表中的酒店等向用户显示有关此约会的一些其他信息

总的来说,我可以像

那样做
appointmentID | appointmentDate | appointmentDuration | flightID | hotelID | stadiumID

并使用NULL填充不需要的值。但我认为这不是一个好主意。

我也可以这样存储它们:

appointmentID | appointmentDate | appointmentDuration | appointmentType | appointmentTypeID

并使用表格的字符串(Hotels,Flights,...)填充appointmentType,并使用appointmentType的ID填充appointmentTypeID。但这种方式并不好。

所以我的问题是:将这些值保存在数据库中的最佳方法是什么?

编辑:我知道目标是规范化表格。一般来说,我知道我要将哪些数据放在单独的表格中。我的问题是如何在这种特殊情况下做到这一点

1 个答案:

答案 0 :(得分:0)

第一种方式似乎是更好的选择。

我会有以下内容,但我会添加一个参考表

Appointment_table APP_ID app_f_id(引用航班表的id) app_h_id(引用酒店表的id) app_s_id(引用Stadium表的id) app_ref_table(这将包含一个唯一生成的引用,因为使用id将来会成为问题,因为id可能会延伸到数百万......)

Flight_table F_ID f_carrier f_date_booking f_date_confirmed

Hotel_table h_id h_descripion h_guests

Stadium_table S_ID s_description

每年参考表将从序列1开始,或者您喜欢哪个。在我看来,这是表结构的巧妙方法。 Reference_table R_ID r_year r_sequence r_app_id(生成引用号的最后一个id)