各位,
连续第 n 次,我再次遇到同样的老问题。它是关于“我如何以一种轻松的方式将 OOP 结构映射到数据库表。”
这是一个场景:我的系统中有几种类型的“参与者”—— worker 、雇主、联系人。它们具有某些共同的功能;其他作品则大不相同。所有参与者处理的实体是“通信”、“注释”(管理员喜欢在客户身上留下注释)等等。每个 actor 类型处理大量其他实体类型,而其他类型则不处理。
目前,我的数据库架构包括以下表:
Actor :
- worker
- 雇主
- 联系
实体:
- 沟通
- 笔记
- 等等
实体和参与者之间的关联表:
- worker 通讯协会
- 雇主沟通协会
- worker 笔记协会
- 等等,你得到了训练。
这对我来说就像是一种“代码味道”。每当客户改变他们的角色(即从“联系人”提升为“雇主”)时,需要运行一堆疯狂的脚本。糟糕......另一方面,如果我在一个纯粹的 OOP 驱动的世界中操作,这会容易得多 - 为所有具有共同属性的实体创建一个基类,并完成它......
在数据库世界中,该选项在理论上似乎是可行的,但听起来非常困惑......即如果我没有理解错的话,我就会有一个新的 base_actor 表,并且每个其他 actor 都会有一个 base_actor_id,然后关联将在 base_actor 和实体之间......但是,我该如何进行反向关联查询? IE。 “显示与 worker 类型的转换的所有通信”?
有什么建议吗?关于“将 OOP 结构映射到关系数据库”的主题有什么一般性想法吗?
最佳答案
.. It's about "how do I map OOP structures to database tables in a painless way."
你没有。
面向对象和关系代数是两种根本不同的范式。如果没有主观解释,您就无法在它们之间转换。这称为阻抗失配,并被称为 The Vietnam of Computer Science .
关于php - 关系数据库中的面向对象结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/600684/