gpt4 book ai didi

php - ORM 的最佳表结构是什么

转载 作者:行者123 更新时间:2023-11-29 14:51:24 25 4
gpt4 key购买 nike

我有 4 个这样相关的表

+-----------+    +------------+    +---------+    +----------+
| Project | | Slide | | Shape | | Points |
+-----------+ +------------+ +---------+ +----------+
| id | | id | | id | | id |
+-----------+ | project_id | |slide_id | | shape_id |
+------------+ +---------+ | x |
| y |
+----------+

从我一直在阅读的关于 CodeIgniter 中内置的 Active record 对象的 ORM 文档中,最好保持表的结构像这样,或者将它们更改为以下方式之一。

首先是使用像这样的总关系表

+-----------+    +------------+    +---------+    +----------+  +-------------------------------+
| Projects | | Slides | | Shapes | | Points | | Projects_Slides_Shapes_Points |
+-----------+ +------------+ +---------+ +----------+ +-------------------------------+
| id | | id | | id | | id | | id |
+-----------+ +------------+ +---------+ | x | | Project_id |
| y | | Slide_id |
+----------+ | Shape_id |
| Point_id )
+-------------------------------+

这样,所有内容都通过一个表关联,或者我应该将事物与单独的表关联起来,这样关系表就会看起来像这样,而不是上面的。

+-----------------+   +---------------+  +---------------+
| Projects_Slides | | Slides_Shapes | | Shapes_Points |
+-----------------+ +---------------+ +---------------+
| id | | id | | id |
| Project_id | | Slide_id | | Shape_id |
| Slide_id | | Shape_id | | Point_id |
+-----------------+ +---------------+ +---------------+

第一种方式将具有较少数量的条目,但构建 ORM 对象的查询较少,而另一种方式则具有较少的条目和较多的查询。我真的不知道哪个最好或者 ORM 更喜欢哪个。或者 ORM 是否可以处理其中之一。

或者对于 ORM,我可以让它们保持原样吗?我误解了文档。

感谢您的建议。

最佳答案

您应该首先确定您定义的四个不同对象之间将建立什么样的关系。

例如,除非“Project”和“Slides”之间存在多对多关系,否则无需创建“Projects_Slides”表。事实上,我假设您希望每个项目都有许多幻灯片,并且每张幻灯片仅与一个项目关联?在这种情况下,您有一对多关系,第一个架构是最好的。

如果您要定义一张幻灯片可以属于多个项目,那么这将是一种多对多关系,并且“Projects_Slides”表就有意义。

关于php - ORM 的最佳表结构是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5672220/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com