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

xbo*_*nez 6 mysql database database-design

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

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

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

Xin*_*nt0 9

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

所以你有一个user包含用户信息的表:

user_id | user_name | email             | ...
  1234  | User1     | user1@example.com | ...
  2356  | User2     | user2@example.com | ...
Run Code Online (Sandbox Code Playgroud)

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

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  | ...
Run Code Online (Sandbox Code Playgroud)

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