更正具有许多属性的Object的架构

时间:2015-03-07 00:45:22

标签: database database-design

我有一个对象,说它是一个小工具。我的窗口小部件有许多属性,可能是我需要跟踪的众多值之一。将此Widget存储在数据库中的正确方法是什么?

我想到了三种方式:

  1. 创建一个以Widget的序列号作为主键的表。然后,其他属性都存储在它们自己的表中,在这些表中它们具有自动生成的主键,并且文本用于描述它们。像这样:

    serial   attr1fk   attr2fk  ...  attrNfk
    ----------------------------------------
    serial1  1         19            7
    serial2  16        12            3
    ...
    serialN  45        9             7
    

    然后外键指定Widget的属性值:

    attr1id   color
    ---------------
    1         red
    2         blue
    ...
    

    等等Widget的其他属性。

  2. 创建一个只保存Widget序列号的表,然后保存属性值的表使用serial作为外键来描述Widget。

    serial
    ------
    serial1
    serial2
    ...
    serialN
    

    使用serial作为外键的表:

    serialfk   color
    ----------------
    serial1    red
    serial2    orange
    ...
    
  3. 然后最后一种方法使用三个表:一个用于保存序列号,一个用于保存序列号和属性值之间的关联,两个用作外键。这个似乎太多了,因为获取Widget属性的文本值需要两个连接。

  4. 这些是最好的架构设计,数据库设计的哪些原则使其成为最佳?还有更好的方法吗?

    谢谢

0 个答案:

没有答案