【问题标题】:How to create derived entities (with their own attributes) based on the attributes values of another entity如何根据另一个实体的属性值创建派生实体(具有自己的属性)
【发布时间】:2015-05-30 11:21:05
【问题描述】:

我有一个房地产实体。

我有一个带有属性的房地产类别实体:

  • 号码
  • 类型(房屋、公寓、工作室、田野、土地、办公室、 商业)
  • 报价(出租、出售)
  • 价格
  • 表面

根据类型和报价的值,我需要创建具有自己属性的专用实体。

例子:

对于类型=房子或公寓

  • 房间数
  • 车库数量
  • 设备齐全的厨房
  • 花园表面

对于类型=房子

  • 楼层数

for type = not field(除字段外的所有类型)

  • 说明

对于类型 = 办公室或商业

  • 表面
  • 空格数

我如何在 ER 图中描述这些专业化(Peter Chen Notation)并在类图中进行后续翻译。

编辑见附图

【问题讨论】:

  • 试试这个:根据您的知识自行创建图表。然后post在这里,问是否可以。您需要将图表放在公共服务器上并链接它,直到您有足够的声誉来直接在此处包含图像。
  • 感谢托马斯的建议。这是一个 ER 图的链接,其中仅包含必要的实体:Specialization by predicate on Gliffy。我不知道这是否正确。如果是这样,我如何在类图中应用这些条件来进行一种条件特化。

标签: uml entity-relationship data-modeling


【解决方案1】:

您的方法几乎是正确的。唯一的问题是您需要将约束括在大括号中

根据以下 BNF,约束显示为大括号 ({}) 中的文本字符串:

<constraint> ::= ‘{‘ [ <name> ‘:’ ] <Boolean-expression> ‘ }’

(来自上层建筑 2.1.1 第 61 页)

您还应该删除if

不幸的是,《上层建筑》是一个非常糟糕的文档。我无法找到<Boolean-expression> 的定义,但我会使用== 而不是=,就像在大多数类C 语言中一样。所以你的约束之一应该是

{Property.Category.Offer == "for rent"}

【讨论】:

  • 感谢您的帮助,托马斯。我将添加大括号并更正语法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-16
  • 2021-05-30
  • 2014-12-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多