如何使用EAV基于类,属性和值设计对象?

时间:2011-11-30 12:34:07

标签: entity-attribute-value

我想设计一个系统,用户可以灵活地定义类,对象,属性和值,对象可以绑定到类,然后获取类的属性,然后为每个属性赋值。

我想为某些属性设置多个值,例如,如果一个对象有2个地方的2个电话号码(电话和号码是位置类的属性)我想知道哪个电话是针对1个对象的哪个地方?什么是最好的设计?

我的设计就像吼叫:

  • 分类:IdName
  • 对象:IdName
  • ClassObject:IdClassIdObjectId
  • 属性:IdNameClassId
  • 价值:IdClassObjectIdAttributeIdValue

1 个答案:

答案 0 :(得分:0)

回答你的设计问题:
为了关联手机和地方,您必须使用额外的课程“地点”,并将属性“电话”提供给课程“地点”。类“location”的实例可能有2个类“place”的实例。

这要求您有另外两个表:

  • “link”:Id,SourceId,TargetId,RelationId
  • “relation”:Id,SourceClassId,TargetClassId,Name

顺便说一下。你的元模型很有趣:允许一个对象属于多个类,它非常灵活 因此你可以表达: 对象“Arnold Schwarzenegger”所属的类:BodyBuilder,Immigrnt,演员,书籍作者,商人,政治家。

另一方面,类之间没有继承/子类型关系。 您的属性定义中似乎没有明确的值类型声明。