0

我目前正在使用 PDO PHP 和 MySQL 构建一个汽车预订系统,但我正在努力解决如何为用户可能添加到他们的预订中的任何汽车附加服务构建我的表格。

我目前有以下表格,它们使用 reservation_table 将 booking_id 与 car_id 链接(取自他们单独的表格):

车表:

ID     | car_make | car_name
1      | Ford     | Focus
2      | BMW      | Z3
3      | Audi     | A5

预订表:

booking_ID  | booking_time | total_cost | etc..
125674      | 2013-02-02   | 91.55     
887463      | 2013-01-19   | 52.00     
209930      | 2013-01-11   | 23.99     

预订表:

ID     | booking_ID | car_ID
1      | 125674     | 2
2      | 887463     | 2
3      | 209930     | 1

附加表:

ID     | car_extra     | extra_price
1      | GPS           | 22.99
2      | Baby Seat     | 12.99
3      | Car Charger   | 15.99

最初我打算使用一组选定的汽车附加功能将一个额外的列添加到 reservation_table 中,以将它们与预订链接,如下所示:booking_table:

ID     | booking_ID | car_ID | car_extras
1      | 125674     | 2      | [2,3]
2      | 887463     | 2      | [1]
3      | 209930     | 1      | [1,3]

但我读过这是不好的做法。如何构建我的表格以便我可以将选定的汽车额外 ID(范围可以从用户选择 0 到 12)分配给特定的预订?

以下是否可以通过创建一个仅将 booking_ID 与 extra_ID 链接的新表来工作(这意味着同一预订 id 的多行):

selected_extras_table:

ID     | booking_ID | car_extra_ID
1      | 125674     | 2
2      | 125674     | 3
3      | 887463     | 1
4      | 209930     | 1
5      | 209930     | 3
4

1 回答 1

1

你是完全正确的:创建 selected_extras_table,每额外一行是最好的解决方案。当您查询该表时,您将在任何您感兴趣的 booking_ID 中获得所有额外内容的列表,并且您不需要从单个字段中解析出多个值(例如,“[2,3]” )。让数据库将值分开。你在正确的轨道上。

于 2013-02-20T15:59:35.783 回答