设置表来存储每条记录的可变字段数?

时间:2011-10-29 18:10:39

标签: mysql database database-design

如果我不知道每个记录会填充的字段数,我该如何设置我的数据库/表?

例如,如果我有一个允许用户输入他拥有的所有汽车的Web表单,并且我不想将他限制为某个数字,我将如何将其存储在数据库端?

上述问题延伸到类似的情况,例如存储用户的订单(每个订单的可变项目数量)等。

2 个答案:

答案 0 :(得分:9)

在关系数据库管理系统(RDBMS)中,您可以在依赖表中创建子记录,这些子记录将子实体(汽车)与父实体(用户)相关联。有一个称为数据库规范化的概念,目标是每个表包含单一类型实体的数据。

所以你有一个user表,其中包含用户信息:

user_id | user_name | email             | ...
  1234  | User1     | user1@example.com | ...
  2356  | User2     | user2@example.com | ...

然后另一个表用于存储用户每辆车的信息:

user_car_id | user_id | car_label | make      | model | ...
          1 |   1234  | MyCar     | Ford      | 2011  | ...
          2 |   2356  | A Car     | Chevrolet | 2010  | ...
          3 |   1234  | MyOtherCar| BMW       | 2000  | ...

因此,您不必在user表中存储汽车信息,而是通过user_car列设置一个表格,用于存储与每个用户相关的汽车(user_id)信息。这是一对多关系的一个例子,其中一个用户可以拥有许多相关的汽车。

答案 1 :(得分:3)

这是一个完整的主题:数据库规范化。

简短的回答是你制作了多张桌子。

在你的例子中,你会有人员表,一张车牌表,以及第三个将人与车相关联的人