我目前正在使用PDO PHP和MySQL构建汽车预订系统,但我正在努力构建我的表格,以便用户可能已将其添加到预订中。
我目前有以下表格,使用reservation_table链接booking_id和car_id(取自他们各自的表格):
car_table:
ID | car_make | car_name
1 | Ford | Focus
2 | BMW | Z3
3 | Audi | A5
booking_table:
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
reservation_table:
ID | booking_ID | car_ID
1 | 125674 | 2
2 | 887463 | 2
3 | 209930 | 1
extras_table:
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
答案 0 :(得分:1)
你是完全正确的:创建带有每行额外行的selected_extras_table是最好的解决方案。当您查询该表时,您将获得您感兴趣的任何booking_ID中的所有额外内容的列表,并且您不需要从单个字段中解析出多个值(例如,“[2,3]” )。让数据库保持值分开。你走在正确的轨道上。