【问题标题】:SET() or Please suggest suitable designSET() 或请建议合适的设计
【发布时间】:2013-05-10 05:25:35
【问题描述】:

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

假设我想创建一个关于 person 的人员详细信息的表格,并且可以说除了姓名、地址、联系人编号等基本信息之外。等等。我还需要存储此人是投资者、导师、人力资源专家、校友、合作伙伴、捐助者还是服务提供商。他可以在上面列出的多个领域。

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

我想到的其他选项是:

1.原始表中的每个字段都有 7 个额外的布尔列。

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

请建议一些好的出路!!在此先感谢

【问题讨论】:

    标签: mysql database-design set


    【解决方案1】:

    标准化。

    一个表来存放不同的类型,然后,由于一个人可以有零个或多个类型,另一个表将它们粘合在一起。考虑这样的设计;

    person:
    --------------
    id int
    name varchar
    email varchar
    ...
    
    
    type
    --------------
    id int
    name varchar
    
    
    person_type
    --------------
    person_id
    type_id
    

    【讨论】:

    • 非常感谢@Hank。但是你确定这不会影响搜索速度,因为我需要主要根据 type_id 进行搜索......而且获得有关人员的基本信息会花费太多时间,因为它会吸收加入......
    • type.person_id 和 type.type_id 都应该是主键,也应该连接主键,这有点像数据库所做的,而且他们做得很好。
    猜你喜欢
    • 2012-08-30
    • 1970-01-01
    • 2012-04-23
    • 1970-01-01
    • 1970-01-01
    • 2011-03-15
    • 2016-10-05
    • 2014-07-18
    • 1970-01-01
    相关资源
    最近更新 更多