【问题标题】:Transformation from UML class diagram to object-relational (SQL-99) model从 UML 类图到对象关系 (SQL-99) 模型的转换
【发布时间】:2022-01-05 17:34:09
【问题描述】:

我正在尝试研究对象关系数据库,并且很难找到有关它的信息并理解这个概念。我只找到了一些例子。可能是因为英语不是我的第一语言。

我希望能够以 UML 类图的形式制作对象关系数据库设计模型,然后在 Oracle 中创建对象关系 (SQL-99) 表。我不知道该怎么做。

这是一个导航模型示例(我认为):

【问题讨论】:

  • 术语导航模型没有ISO定义。那你追求什么?你展示的是什么类型的图表?
  • @qwerty_so 我真的不知道英文名字。但我的名字是导航模型。我不想从 uml 转换为它,所以我想知道该怎么做。
  • 我已将您问题中的“导航”一词重命名为“对象关系”模型(对应于 SQL-99),因为这正是您的问题所在。

标签: oracle database-design uml object-relational-model


【解决方案1】:

Navigational models 是已被关系模型取代的过时数据库技术的遗留物:

  • 史前的hierarchical model 允许在树中对记录进行分组。所以每条记录都有指向相关记录的指针。导航是自上而下的,据我所知是单向的。
  • 史前较少的network model 是一种替代方案,其中记录之间的导航功能更强大,并且不一定限于树结构。它获得了一定的欢迎,因为它可以在关系数据库在小型计算机上性能不高的时代非常有效地关联记录(请记住,Oracle 5 有一个表锁定机制!)

两者都基于固定的结构化记录,并且导航需要预先修复。这是过去。如果您想学习现代 ORM 或 NoSQL,请不要去那里。从 UML 类图到数据库模型的转换很简单。如果您需要将大类细分为较小的类(如 Employee 和 Address),则意味着您的类太大。在原始 UML 模型中修复它:将类分解为更小的类。

UML 允许使关联可导航(但如果您最终以关系数据库为目标,则它没有用)。然后有一些技术可以让您轻松地从该模型构建表格,例如使用 identity fieldsforeign key mapping(对于一对一或一对多)或 association table mapping(对于许多-太多)。但是有关于这些技术的完整文章或书籍,在这里开发它会太长。

P.S:你需要提高你的英语水平。关于这个话题的法国文学太差了。我可以根据自己的经验判断。 ;-)

【讨论】:

  • 虽然分层和网络 DB 模型具有历史意义(并且在这个意义上已经过时),但对象 DB 和对象关系 (SQL99) DB 的范例却不是。
  • 请注意,UML 类模型中的导航不一定与 UML 的“可导航性”箭头相关,但可以由关联所有权点和它们所代表的引用属性提供。例如,在 OOP 语言中,像 person1.father.sister 这样的表达式是可导航的。在 RDB 中,您通过外键导航。
  • @GerdWagner 感谢您的澄清。事实上,我的观点是关于过时的数据库模型。当然,在对象数据库或 ORM 中导航仍然是相关的。我的观点更多的是建模应该在 UML 中完成,而不是重新引入一些老派的表示。虽然 ORM 不需要 UML 中的显式导航(我认为双向 FK 导航在其中一个链接或至少本书中进行了解释),但其他技术,例如图形数据库或 JSON(或更好的 BSON)文档DB 可能需要更多思考 ;-)
  • 请你告诉我如何学习这个(书籍或网站)?我应该看看如何从 UML 类图转换为对象关系模型(sql-99)?
  • @MAR1 这是一个非常 quick intro in another answer。这里是更全面的site about UML and databases 和这里some tips 用于数据库建模(即中间模型,如果有用的话)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-11-21
  • 2015-06-22
  • 2023-03-13
  • 2019-05-12
  • 1970-01-01
  • 1970-01-01
  • 2014-01-08
相关资源
最近更新 更多