我正在做一个与订票有关的项目。我可以存储旅客资料,如姓名、年龄、性别以及机票号码。但问题是,如果另一张机票是为同一名乘客预订的,我将不得不重新输入相同的乘客数据&只是机票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 | |
+-------+-------------+------+-----+---------+-------+有谁能告诉我怎样才能尽量减少这种冗余呢?
任何链接、参考、线索或想法都是值得赞赏的。谢谢
发布于 2013-10-07 09:10:04
您可以存储一个乘客实体,包括姓名/年龄/性别等(在乘客实体表中),然后您的旅客订票表将只包含乘客实体ids (整数、GUID等)。这是一种正常化的形式。
然而,这可能是一个过于优化。您是否真的这样做取决于您有多少重复的实体等等,以及它们对您来说是否是一个真正的绩效/管理问题。你是否希望为乘客存储更多的数据(地址、飞行常客信息等)。
发布于 2013-10-07 09:09:49
在mysql这样的关系数据库中,乘客数据和票务数据当然应该放在单独的表中。因此,有一个乘客表,其中包括个人详细信息,如姓名,DateOfBirth,地址,电话等,然后有一个机票表,有ticketNumber,日期等,以及passengerId (经典的多到一个关系)。
发布于 2013-10-07 09:17:32
乘客参数应属于乘客表。并且票证参数应该属于票证表。
乘客和车票之间的连接只是一个外键,如"fk_passenger“与id_passenger的连接。
https://stackoverflow.com/questions/19220752
复制相似问题