【问题标题】:How to model "change" in a database and object orientation如何在数据库和面向对象中建模“变化”
【发布时间】:2023-02-15 22:14:55
【问题描述】:

一段时间以来,我与 OOP 没有太多关系,我不确定如何解决以下问题。为了更新我的知识,我决定用 Java 编写一个小程序。

主要问题在于三个类的建模。因此存在一个抽象基类,如人类和子类 Mother、Father、Child。母亲和父亲可以有多个孩子。但是一个孩子也可以成为父母并生孩子等等。我还没有考虑过使用接口的想法。 就个人而言,第二种方法似乎更准确,但我不确定。我将如何在数据库中对其进行建模。

我想到的两种方法

【问题讨论】:

  • 我不确定你想用你的图表表达什么,但它绝对不是 UML
  • 你说的是继承关系还是所有权关系?你的标题也提到监控“变化”,但你的问题没有,你能澄清一下吗?
  • 一种方法是有一个Person表,并且每个Person行都有指向MotherFather的外键。 Person 行也将有一个儿童/成人 boolean 标志。

标签: java oop


【解决方案1】:

无需为家庭的各个成员创建单独的类,因为:

  • 每个成员都是人。
  • 每个人都有父母(甚至母亲和父亲也有母亲和父亲)。
  • 每个人都可能有也可能没有孩子。

所以你数据库中的每个人,无论是母亲、父亲还是孩子,都有:

  • 一位亲生母亲(链接到另一个人)。
  • 亲生父亲(链接到另一个人)。
  • 零个或多个孩子(链接到零个或多个其他人)。

因此,您可以将它们都建模为具有这些属性的人类,并且它们都可以在同一张人类表中。如果一个“孩子”最终有了孩子,只需添加到它的孩子集合中即可。

如果你想涵盖未知父母的可能性,那么你可以让母亲和父亲链接为空。

其他属性,例如性别、年龄、成年状况等等,都是您可以根据需要添加的额外内容,但一般来说,它们都是具有等级结构的人类。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多