У меня есть 4 таблицы, связанные так
+-----------+ +------------+ +---------+ +----------+
| Project | | Slide | | Shape | | Points |
+-----------+ +------------+ +---------+ +----------+
| id | | id | | id | | id |
+-----------+ | project_id | |slide_id | | shape_id |
+------------+ +---------+ | x |
| y |
+----------+
Из документов ORM, которые я читал для объекта Active record, встроенного в CodeIgniter, лучше всего сохранять таблицы структурированными так или менять их одним из следующих способов.
Сначала нужно использовать итоговую реляционную таблицу, подобную этой
+-----------+ +------------+ +---------+ +----------+ +-------------------------------+
| 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 может обрабатывать один или другой.
Или для ОРМ я могу оставить их такими, какие они есть, и я неправильно понимаю документы.
Спасибо за совет.