【发布时间】:2011-10-29 18:10:38
【问题描述】:
如果我不知道每条记录要填充的字段数,我应该如何设置我的数据库/表?
例如,如果我有一个网络表单,允许用户输入他拥有的所有汽车,并且我不想将他限制在某个数量,我将如何将其存储在数据库端?
上述问题扩展到类似的情况,例如存储用户的订单(每个订单的商品数量可变)等。
【问题讨论】:
标签: mysql database database-design
如果我不知道每条记录要填充的字段数,我应该如何设置我的数据库/表?
例如,如果我有一个网络表单,允许用户输入他拥有的所有汽车,并且我不想将他限制在某个数量,我将如何将其存储在数据库端?
上述问题扩展到类似的情况,例如存储用户的订单(每个订单的商品数量可变)等。
【问题讨论】:
标签: mysql database database-design
在关系数据库管理系统 (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_id 列存储与每个用户相关的汽车 (user_car) 信息。这是一对多关系的示例,其中一个用户可以拥有许多相关的汽车。
【讨论】:
这是一个完整的主题:数据库规范化。
简短的回答是您制作的桌子不止一张。
在您的示例中,您将有人员表、汽车表和将人员链接到汽车的第三个表
【讨论】: