【发布时间】:2016-07-19 13:20:33
【问题描述】:
我现在被困在如何实现更复杂(至少对我而言)的数据库结构上,在我看来,这就像一个表中的动态列数。
我需要为一个班车模块创建一个 SQL 表,该模块将存储许多班车,每个班车都有不同的座位数,每个座位应该有不同的价格。
例如:
一排:8 个座位的穿梭巴士,1 号座位 = 20 美元,2 号座位 = 15 美元,3 号座位 = 13 美元……8 号座位 = 7 美元。
一排:16 个座位的班车,1 号座位 = 25 美元,2 号座位 = 22 美元,3 号座位 = 20 美元……16 号座位 = 15 美元。
解决方案应处理不同类型的班车,一种有 8 个座位,一种有 16 个座位或任何其他座位数,具体取决于管理员希望添加的座位数。
现在,我想了几个方法,我认为这两种方法都不够好。
1.我的第一个想法是 创建一个最多包含 16 列座位的表,所有列都可以为空,然后管理员插入带有所需座位数的新班车,其余的将为空。我觉得这是一个非常糟糕的主意。 如果管理员想要添加超过 16 个座位,这是一个巨大的缺点,让我们忽略这种情况,这就是桌子的样子:
Table: shuttle
Columns: id, name, num_of_seats, seat_1_price, seat_2_price, seat_3_price..., seat_16_price
那么此表中的一行可能如下所示:
1, Florida Shuttle, 8, 20, 15, 10, 8..., 5, NULL, NULL, NULL
我 100% 确定这种方法是错误的。
2.我的第二个想法是创建2个表,一个存储shuttle细节将被称为“shuttles”,第二个存储shuttle_seats_price关系,例如:
table: shuttles
columns: id, name, num_of_seats
table2: shuttle_seats_price
columns: id, shuttle_id, seat_number, seat_price
此结构中的典型条目如下所示:
table: shuttles
columns: id, name, num_of_seats
row: 2, Florida Shuttle, 8
table 2: shuttle_seats_price
columns: id, shuttle_id, seat_number, seat_price
row: 1, 2, 1, 20
row: 1, 2, 2, 15
row: 1, 2, 3, 13
row: 1, 2, 4, 11
...
row: 1, 2, 8, 5
所以总而言之,我需要创建一个解决方案来存储具有不可预测座位数量的不同班车,每个座位都有不同的价格价值,一张桌子对我来说似乎不是正确的解决方案,因为在我看来,它不是一种创建 100 列的好方法,每个席位的每一列并开始使用 NULL 值对其进行膨胀。
提前致谢!我希望我问的很清楚!
【问题讨论】:
-
数据库是信息的存储库,而不是计算引擎。使用 SQL 以外的编程语言完成任务。
-
能否给个更详细的回答?目前,我需要将数据存储在某个地方,并且这些数据是动态的,管理员正在创建一些班车,每个班车都有不同数量的座位,价格不同,用户可以选择他想要的班车......没有如何实现它?
-
发生更改时将更改存储在数据库中。每次你想要一个穿梭机时,加载整个数据集,用 PHP(或 Java 或 VB 或......)咀嚼它,然后提供答案。
-
好的,在 SQL 中是可以的。但我宁愿用其他语言而不是 SQL 来编程。
-
好的,谢谢你的回答,让我看看我是否理解你的建议,只为班车创建一个表,添加一个名为 seat_prices 的列并以逗号分隔格式存储?像这样:20、15、13、10?然后拿价格,做一些PHP并以这种方式编程?这是一个好方法吗?顺便问一下,如何在 SQL 中实现呢?你将如何创造这样的东西?因为我之前已经遇到过类似的问题,创建了一个列数未知的表,因为有时需要更多的列,然后在此示例中为多个座位创建相同的列。
标签: mysql sql database database-design relational-database