MySQL:在一张表中引用多个表ID

标签 mysql database-normalization

我正在开发一个项目,人们可以接收有关足球比赛的信息(航类、酒店、景点、体育场)。该网站还应该包含约会列表(我的航类何时何地,我的酒店在哪里,我什么时候必须去体育场......)在我看来,如果您引用航类,那将非常酷,此约会表中的酒店等,向用户提供有关此约会的一些附加信息

一般来说,我可以做一些事情

appointmentID | appointmentDate | appointmentDuration | flightID | hotelID | stadiumID

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

我也可以这样存储它们:

appointmentID | appointmentDate | appointmentDuration | appointmentType | appointmentTypeID

并用表的字符串(酒店,航类,...)填充appointmentType,并用appointmentType的ID填充appointmentTypeID。但这种方式感觉不太好。

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

编辑:我知道目标是标准化表格。一般来说,我知道我必须将哪些数据放入单独的表中。我的问题是在这种特殊情况下我该怎么做

最佳答案

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

我会有以下内容,但我会添加一个引用表

预约表 应用程序ID app_f_id(引用航类表的id) app_h_id(引用酒店表的id) app_s_id(引用Stadium表的id) app_ref_table(这将包含一个唯一的生成引用,因为使用该 id 将来会出现问题,因为该 id 可能会延伸到数百万...)

航类表 f_id f_载体 f_日期_预订 f_date_confirmed

酒店表 h_id h_描述 h_guests

体育场_球 table s_id s_描述

每年引用表都会以顺序 1 或您喜欢的顺序开始。我认为这是表结构的巧妙方法。 引用表 r_id r_year r_序列 r_app_id(生成引用号的最后一个 ID)

关于MySQL:在一张表中引用多个表ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39912865/

相关文章:

database - 归一化 - 2NF 与 3NF

database - 每个表中都有地址列或其他表引用的地址表?

mysql - Doctrine/MySQL性能: 470 columns in one table

database - 'too many' 在一个表中有多少个字段?

php - 如何在mysql中设置money的数据类型

php - SQL 命令语法错误

mysql - #1221 - UPDATE 和 ORDER BY 的使用不正确

database - 在数据库列中存储分隔列表真的那么糟糕吗?

mysql - 数据库数据完整性问题

mysql - 为什么MYSQL中两个表之间出现 "before update trigger"这个错误?