0

我正在从事与机票预订相关的项目。我可以在乘客表中存储乘客数据,即姓名、年龄、性别以及票证 ID。但问题是,如果为同一乘客预订了另一张票,我将不得不重新输入相同的乘客数据,只是票证 ID 会有所不同。

mysql> desc passenger;
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| Name  | varchar(32) | NO   |     | NULL    |       |
| Age   | int(11)     | NO   |     | NULL    |       |
| sex   | char(1)     | NO   |     | NULL    |       |
| PNR   | varchar(32) | YES  | MUL | NULL    |       |
+-------+-------------+------+-----+---------+-------+

谁能告诉我如何才能最大限度地减少这种冗余?

任何链接、参考、线索或想法都将是可观的。谢谢

4

4 回答 4

1

您可以存储一个乘客实体,包括姓名/年龄/性别等(在乘客实体表中),然后您的乘客预订表将仅包含乘客实体 ID(整数、GUID 等)。这是规范化的一种形式。

然而,这可能是一个太过分的优化。你是否这样做真的取决于你有多少重复的实体等,以及它们是否对你来说是一个真正的性能/管理问题。例如,您是否希望为乘客存储更多数据(地址、常旅客信息等)。

于 2013-10-07T09:10:04.317 回答
0

在 mysql 这样的关系数据库中,passenget 和 ticket 数据肯定应该在不同的表中。所以有一个包含个人详细信息的乘客表,例如姓名、出生日期、地址、电话等,然后有一个包含票号、日期等以及乘客 ID(经典的多对一关系)的票证表。

于 2013-10-07T09:09:49.127 回答
0

您可能需要创建一个表 Users 和 Ticket details,其中 users 表将存储用户的详细信息, Ticket_details 将存储工单详细信息。这里 user_id 将用作 ticket_details 表中的外键(您可以根据自己的方便命名此表)

 TABLE users
 +---------+-------------+------+-----+---------+---------------+
 | Field   | Type        | Null | Key | Default | Extra         |
 +-------+-------------+------+-----+---------+-----------------+
 | user_id | int(11)     | NO   | PK  |         | AutoIncrement |
 | name    | varchar(32) | NO   |     | NULL    |               |
 | age     | int(11)     | NO   |     | NULL    |               |
 | sex     | char(1)     | NO   |     | NULL    |               |
 +-------+-------------+------+-----+---------+-----------------+`


 TABLE ticket_details
 +---------+-------------+------+-----+---------+-----------------+
 | Field   | Type        | Null | Key | Default | Extra           |
 +-------+---------------+------+-----+---------+-----------------+
 | ticket_id | int(11)     | NO   | PK  |         | AutoIncrement |
 | user_id   | int(11)     | NO   | FK  |         |               |
 | PNR       | varchar(32) | NO   |     |         |               |
 +-------+-------------+------+-----+---------+-------------------+
于 2013-10-07T09:18:57.007 回答
0

乘客参数应该属于乘客表。并且票据参数应该属于票据表。

乘客和车票之间的链接只是一个外键,如“fk_passenger”与 id_passenger 链接。

于 2013-10-07T09:17:32.977 回答