多用途和使用类型字段与任何用途的字段

时间:2015-04-20 10:43:03

标签: sql-server oracle database-design

我有一个用于某些用途的表,例如:

一个名为tblObject的对象的表,需要存储一些属性;所以,我可以使用以下解决方案之一:

  1. 为每个属性添加一个字段,并使用自己的数据类型。
  2. 只需在tblObjProp中添加一个与下面模型相关的外键字段,我需要另一个字段来存储变量值:
  3. +-----------+         +------------+         +-------------+
    | tblObject | 1-----* | tblObjProp | *-----1 | tblProperty |
    +-----------+         +------------+         +-------------+
    

    我认为使用此解决方案是基于属性计数,因为我不知道计数,我需要像本网站中的推荐一样引用以识别该计数或任何其他推荐。

    此外,我还需要valuetblObjProp字段的数据类型的建议,在SQL中我有sql_variantnvarchar(max)等等。

    如果答案与RDBMS相关,我需要 SQL Server 2012 Oracle 11g


    如果我的Person表格中包含Id, FirstName, LastName, BirthDate, Comments, NID, ...列,则每列都有一个选项:

    • Person表格中将其设为静态。
    • 将其添加到tblProperty

    我想知道我应该总是选择第二个选项,例如CommentsNID第一选择更好?

1 个答案:

答案 0 :(得分:0)

如果您知道属性的数量,并且这个数字不会经常变化,那么我会选择解决方案1,因为这样可以正确索引字段(我的想法是正确的数据库设计)。

但是如果每行的属性数量可能不同,并且频繁添加属性,那么我已经看到了解决方案2(google"键值对")。当你获得大量物品(我的经验数百万)你持有物品的物品时,这种解决方案变得非常缓慢。