代码之家  ›  专栏  ›  技术社区  ›  dierre

设计一组属性

  •  0
  • dierre  · 技术社区  · 14 年前

    我的老板给了我一大堆我不太确定如何在DBMS中设计它们的需求。基本上,用户必须以旧的方式描述定义其属性的对象:“key”=>“value”。 问题是,用户在选择键和值时有“自由意志”,因此他可以为这个对象编写他想要的任何内容。 当然,这个对象属于某些类别,所以,在我看来,即使是 自由意志模式开启 我认为每个类别(=gt;对象)的键数不应超过15/20。

    我的老板让我按照以下方式来构造它(这只是框架):

    对象(ID) [主键] , 姓名)

    对(ID) [初级] 密钥 ObjyID [对象的外键 表 关键值

    但我不太相信。我认为应该是这样的:

    对象(ID) [主键] , 姓名)

    对(ID) [初级] 密钥 ObjyID [对象的外键 表 钥匙 [密钥的外键 表

    钥匙(ID) [主键] , 钥匙 [独特的] )

    当然还有专栏 key 将被净化,冗余将受到限制。

    我是对的,是我想得太多了还是我错了?

    1 回复  |  直到 14 年前
        1
  •  1
  •   Justin Niessner    14 年前

    我个人认为你们两个都错了。我会选择:

    Objects 
    -------
    id (PRIMARY_KEY)
    name
    
    Keys
    ----
    id (PRIMARY_KEY)
    value
    
    KeyValuePairs
    -------------
    id (PRIMARY_KEY)
    keyId (FOREIGN_KEY(Keys))
    value
    
    Objects_KeyValuePairs
    ---------------------
    objectId (PRIMARY_KEY, FOREIGN KEY (Objects))
    kvpId (PRIMARY_KEY, FOREIGN KEY (KeyValuePairs))
    

    现在,您有一个表来存储键/值对(“key”=>“value”),一个表来存储父级,以及一个表来存储键/值对与对象可能具有的多/多关系。