database-design - ER 图可以通过递归实现吗

标签 database-design erd

我正在尝试掌握使用 ER 图来建模的窍门,大多数递归示例都类似于“人是经理”之类的事情,这一点很明确。

但是如果我不确定以下内容是否可以在 ER 中建模:

我有一个实体“章节”(带有 id、标题、字数),它本身可以不包含任何章节或 N 个其他章节作为子章节(并且可以重复)。我做了这个递归。

但是我可以:

a) 显示 ER 中子章节的顺序 b) 模型中章节的字数包括其子章节的字数?

或者这些事情不应该在 ER 图中考虑,而应该在稍后阶段考虑?

最佳答案

ER 图不太适合显示大多数类型的依赖关系和约束。如果这些东西完全显示在 ER 图中,那么它们通常会作为文本注释添加。

在 UML 建模中,“聚合”有一个特定的符号,例如构成章节一部分的子章节。我认为在大多数情况下这是否有用是有争议的。根据我的经验,UML 建模者在使用关联/聚合/组合方面往往有点不一致。下面是一个显示聚合的 UML 图示例:

enter image description here

如果您对更详细的规则建模感兴趣,那么对象角色建模是一个非常强大的工具。 ORM 的非循环环约束表示法、子集约束可以很好地代表您的章节和子章节的情况。

尝试以图形方式表示太多事物的问题是,图表越复杂,理解起来就越困难。有时一两句话可以起到更好的作用。

关于database-design - ER 图可以通过递归实现吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52688239/

相关文章:

language-agnostic - 如何在 ERD(表)设计中处理 "OR"关系?

sql - 三种潜在的数据库设计

ms-access - 无法添加或更改记录,因为表 'COMPANY' 中需要相关记录

sql - 数据库设计受UI需求影响: Should I make an extra field or a new relation?

mysql - 我应该如何创建一个数据库表,在其中保留多个事件名称及其时间戳,并使用设备 token 作为外键

SQL - 查询 - max(count())

database - 如何确定一个想法在关系数据库中应该被视为表还是属性?

为具有多项数据的用户设计Mysql

mysql - 用于具有装配和产品层次结构的制造的数据库 (BE) 设计

database-design - 好的数据库表设计: One table mixing different entities or separate table for each entity