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

もともと、選択した車の追加機能の配列を使用して予約テーブルに追加の列を追加し、次のように予約にリンクする予定でした: 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 に答える