【问题标题】:SQL data type SET() or alternatives?SQL 数据类型 SET() 或替代方案?
【发布时间】:2012-08-21 20:54:33
【问题描述】:

我想这个问题很基础,但我认为这些是最难的。

假设我想创建一个关于汽车可以拥有的额外物品的表格,假设它们是 5,所以汽车可以有,没有,全部,一个或一些这些额外物品。

是否推荐使用带有 5 个选项的 set() 字段?似乎是这样做的逻辑方式,但我读到 set() 字段对大型数据库中的搜索不友好。

我想到的其他选项是:

  1. 拥有一个表的外键,其中包含汽车的 id 和每个附加信息(这样如果汽车有所有附加信息,这将是 5 行)

  2. 对于原始文件中的每个额外内容有 5 个额外的布尔列 表。

考虑到数据库/表会很大,哪种方法最好?

【问题讨论】:

    标签: mysql sql database-design database-schema sqldatatypes


    【解决方案1】:

    对我来说这听起来不合逻辑。将SET() 用于各大洲而不是汽车附加服务可能是有意义的。 Extras 会随着时间的推移而改变,您不希望每次发生这种情况时都改变您的应用程序和数据库设计。显而易见的设计是为 extras 创建一个表并通过外键链接它。

    【讨论】:

    • 在你的回答和更多的研究之后,我会用传统的方式来做,这肯定是最好的。谢谢
    【解决方案2】:

    第二个绝对不是一个选项。我强烈建议不要这样做,因为当引入第六个选项时会发生什么?然后是第七,第八等?第一是更传统和明显的方法。高级索引结构可以为您提供良好的结果 1

    【讨论】:

    • 是的,我认为你们俩都是对的,我想我对 set() 的用途感到困惑
    猜你喜欢
    • 2011-03-18
    • 2010-10-28
    • 1970-01-01
    • 1970-01-01
    • 2017-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多