【问题标题】:Implementing database from UML从 UML 实现数据库
【发布时间】:2013-05-08 18:46:01
【问题描述】:

我最近建模了一个基本上涉及关联的 UML 图。假设代码是:

public class Seller{
    private int idSeller;
    private String name;
    private String passw;
    private List<Phone> phones = new ArrayList<Phone>();

    public Seller() {           
    }

    public Seller(int idSeller, String name, String passw, List<Phone>phones) {
        super();
        this.idSeller = idSeller;
        this.name = name;
        this.passw = passw;
        this.phones = phones;
    }

    //getters and setters
}

public class Phone {
    private int idPhone;
    private String description;
    private String number; //will have some chars in it

    public Phone() {
    }

    public Phone(int idPhone, String description, String number) {
        super();
        this.idPhone = idPhone;
        this.description = description;
        this.number = number;
    }

    //getters and setters
}

我不想限制卖家可以拥有的手机数量,而且这只是我整个代码的摘录。

现在,我需要创建我的 SQLite 数据库并将数据插入其中,但我对如何表示从 UML 到数据库的关联有点困惑。

如果我不使用 OO,我会在 Phone 表中放置一个外键,指代拥有手机的卖家 id,但 OO 的概念让我怀疑这是否是正确的做法。

我对 UML 有很好的理解,但这是我第一次尝试实现 UML 图并从数据库加载数据。有人可以帮我说一下正确的方法吗?

【问题讨论】:

  • 两次投反对票,没有任何解释。谁能告诉我怎么了?
  • 数据库表之间需要一个外键。您刚刚体验了对象-关系阻抗en.wikipedia.org/wiki/Object-relational_impedance_mismatch
  • 我喜欢“对象-关系阻抗”这个术语,它准确地代表了发生在我身上的事情。谢谢。

标签: sqlite foreign-keys uml


【解决方案1】:

我认为您确实需要阅读数据库理论。这是一个非常简单的模式编写——几乎是模式的你好世界。不要认为它是 UML 或 OO 的术语——这些是思考数据的错误术语。您需要考虑如何组织数据。稍后将其映射到对象中是程序员的工作。

你有两张桌子。表一是卖方表。它有一个 id(这是您的主键)、一个名称、一个密码(应该以散列形式存储,而不是明文形式)。第二张桌子是电话。它有一个 id(主键)、一个数字和一个 int 类型的 owner 字段,该字段是卖方 id 的外键。

当您确实需要将数据加载到代码中时,首先您通过对表 1 的查询来加载卖方结构(数组除外)。然后您在表 2 中查询所有具有匹配卖方 ID 的手机,然后循环返回将其添加到您的手机数组中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-29
    • 1970-01-01
    • 2015-06-07
    • 2022-01-03
    • 1970-01-01
    相关资源
    最近更新 更多