1

我早些时候问过这个问题但找不到答案..首先对不起我的英语..

我有一个包含 80 个复选框的表单:这些复选框是 car 的选项,
例如 car ;Mp3 播放器 | ABS | 安全气囊 | 空调 |

用户应该从复选框中选择他自己的汽车选项并将其发布。问题是?我应该如何将它们存储在数据库中?顺便说一句,用户应该能够稍后更新它们..

我应该使用 implode() 并将它们存储为

option1 , option2 , option34 , option45 , option66 ,  in one column

或者像那样

Car_ID | Options | 
155      option2
155      option34
155      option45
155      option66 

(他们应该如何更新它们?)

或在数据库中打开 80 列之类的,

Car_ID | Option1 | Option2 | Option3 | Option4 | Option5
155         true     true      false     false     false
4

2 回答 2

3

您应该有一个选项表、一个用户表和一个关联它们的 user_options 表。这将允许您根据需要轻松修改选项并添加或删除选项。

Users
user_id,username

Options
option_id,option_name

User Options
option_id,user_id

如果每个用户可以拥有多辆汽车,则应该是:

Users
user_id,username

Options
option_id,option_name

Cars
car_id,car_name

User_Car_Options
user_id,car_id,option_id
于 2013-01-18T00:37:53.570 回答
0

最好的方法是这样

+---------+----------+----------+----------+
| Car_ID  | Option1  | Option2  | Option3  |
+---------+----------+----------+----------+
| 1       | TRUE     | FALSE    | NULL     |
| 2       | TRUE     | NULL     | FALSE    |
| 3       | NULL     | TRUE     | FALSE    |
+---------+----------+----------+----------+

(如果您觉得这会使您的原始表格变得混乱,您也可以简单地将这些列放在一个单独的表格中,并在它们之间建立 1:N 的关系)

编辑 :

但是,如果复选框是动态的,并且您希望能够从列表中添加/删除框,则可能需要设置 N:M 关系,其中表格中的每一行都可以为每个复选框设置一个值。这将需要一个单独的表来存储复选框,以及一个中间表来存储表 A 中的每一行对于每个复选框的值。像:

/* Your table */
+-----+
| AID | 
+-----+ 
| 1   |
| 2   |
| 3   | 
+-----+

/* The table for the boxes */
+-------+-------+
| BoxID | Label |
+-------+-------+
| 1     | Box1  |
| 2     | Box2  |
| 3     | Box3  |
+-------+-------+

/* The intermediary table 
 * linking them together */
+-----+-------+-------+
| AID | BoxID | Value |
+-----+-------+-------+
| 1   | 1     | TRUE  |
| 1   | 2     | FALSE |
| 2   | 1     | TRUE  |
| 2   | 3     | FALSE |
| 3   | 2     | TRUE  |
| 3   | 3     | FALSE |
+-----+-------+-------+
于 2013-01-18T00:39:02.513 回答