Nah*_*kht 2 database oop computer-science database-design
每次我编程我都认识到类和表之间的这种关系,或者我想象它.
每个数据库表或每个类的表可以有一个类,即:
    tables: customer, products, order.
    classes: customer, products, order, may have methods such as addRecord, deleteRecord, updateRecord.
这个叫什么?对象关系?我不是DBA.
这完全取决于您使用的数据库类型。如果您使用的是面向对象的数据库(OODB),则没有关系,因为对象和持久化数据是一回事。举例来说,如果你有一个Customer类,并且将它保存在一个面向对象数据库,则该实例的客户是什么存储在数据库中。
如果您使用的是关系数据库,那么类实例以及它们在数据库中的持久表示可能是同一件事,但很多时候它们不是。这是因为大多数人使用规范化以有效的方式(在关系数据库中)表示他们的数据。这意味着,您可以让一个类由多个表表示,而不是每个类都有一个表。在Customer示例中,表现在可能是Customer(具有姓名、出生日期和其他属性)和Order(订单指向另一个表中的产品)。其原因与基数有关,以及Customers有多个订单。当您的业务逻辑需要来自 DB 的这些信息时,数据访问层的工作是将数据(称为ORM)从 DB映射到您的类中。
如果您正在使用另一种类型的数据库,那么类(域模型)与数据库中持久化的内容之间将存在不同的关系。
但是,至于为这种关系起个名字吗?不,没有名字。
除了鲍勃的回答之外,还有以下几点.
在对象建模中,类和子类之间的关系由继承处理,对象建模者知道如何使用继承来获得良好的优势.关系数据模型和扩展SQL数据库不会为您实现继承.您必须设计表格以获得一些相同的结果.
在ER(实体 - 关系)建模中,相应的概念称为泛化/专门化.这告诉您如何建模类/子类关系,但它并没有告诉您在构建数据库时如何设计表.
有三种技术可以很好地理解,在处理类和子类时非常有用.这是他们的标签: 单表继承 class-table-inheritance shared-primary-key.不幸的是,许多关于数据库设计的教程从未涉及这些技术.对于了解对象建模并希望加快关系建模速度的人来说,它们非常有用.