【问题标题】:Set up Table to store variable number of fields per record?设置表以存储每条记录的可变数量的字段?
【发布时间】:2011-10-29 18:10:38
【问题描述】:

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

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

上述问题扩展到类似的情况,例如存储用户的订单(每个订单的商品数量可变)等。

【问题讨论】:

    标签: mysql database database-design


    【解决方案1】:

    在关系数据库管理系统 (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) 信息。这是一对多关系的示例,其中一个用户可以拥有许多相关的汽车。

    【讨论】:

    • 谢谢。这非常说明问题!
    • 请注意 - 在此模型中,您不能在多个用户之间“共享”一辆车(例如,如果他们互相出售)...
    【解决方案2】:

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

    简短的回答是您制作的桌子不止一张。

    在您的示例中,您将有人员表、汽车表和将人员链接到汽车的第三个表

    【讨论】:

    • 好的,假设我有一个专门用于汽车的表格,其中每辆汽车及其数据与唯一的汽车 ID 一起驻留。与人相似。连接两者的表格是什么样的。如果某个人添加了多辆汽车,这是否等同于第三个表中的多条记录?另外,我将研究数据库规范化。谢谢
    • 是的。例如,中间表 person_car 至少有两个字段:person_id 和 car_id,它们将引用其他适当的值。 (例如,您可能也想在这里约会)
    猜你喜欢
    • 2019-12-20
    • 2020-06-30
    • 2013-04-08
    • 1970-01-01
    • 2012-04-10
    • 2016-12-15
    • 2011-04-22
    • 2013-12-11
    • 1970-01-01
    相关资源
    最近更新 更多