我将如何在数据库中进行设计

时间:2011-03-15 15:07:22

标签: database-design

此时我感到很困惑,而且我只是在寻找让人们反弹的人,所以你们就是这样。

我正在为我们的组织开展基于网络的广告资源计划。

此时我希望它尽可能通用,所以我正在寻找这样的结构:

enter image description here

所以我看的是项目类型或类别,每个项目类型都有一组属性和属性可以共享,每个项目都有一个项目类型,然后给出可以用值填充的项目属性,然后,这些值必须与属性相关联。

这对其他人有意义吗?我很困惑,在这一点上无济于事,所以任何想法或建议,甚至阅读材料都会让我走上正确的大方向,我们将不胜感激。

2 个答案:

答案 0 :(得分:2)

好吧,我看到一个ItemTypes表定义了类型(类型id,类型名称);一个定义属性的属性表(属性id,属性名称);一个ItemTypeProperties表,列出了适用于每种类型的属性(即项类型id,属性id);一个Items表,列出了项目及其类型(项目ID,项目类型);和ItemProperties表,列出每个项目的属性值(即项目ID,属性ID,值)。

这有意义吗?

答案 1 :(得分:1)

通过显示所涉及的关系的基数,该图可以更清楚。但我得到的设计基本上就是。

它被称为“实体 - 属性 - 值”模型,又称“开放模式”,在数据库中这不是一件不寻常的事情。但是,您应该意识到这种方法存在重大缺陷:

  • RDBMS对属性及其类型的验证变得更加困难
  • 查询检索特定实体的属性值更复杂
  • 使用数据库查询更难推断该实体

总而言之,您将不得不让您的应用程序或存储过程执行大量管理这些属性的工作,因为除了纯存储和查找之外,数据库无法为您提供更多支持。

请参阅http://en.wikipedia.org/wiki/Entity-attribute-value_model,了解这个设计何时可能是一个好主意。另请查看http://en.wikipedia.org/wiki/Inner-platform_effect有关可能是错误的原因。您必须为您的申请决定这是否适合您。

如果您要做的是为对象提供持久性,我应该注意到这是面向对象的数据库尝试以更自然的方式解决的问题。如果您对此设计感到非常沮丧,并且您可以自由地查看DBMS可能解决的问题,那么您可以考虑一下。