对数据库中的整个数据实现超类型和子类型是否不好?在转向这个方向之前,我需要一些建议......
例如,
我将这些表作为对象,它们是相关的,
users
pages
images
entities
表作为超类型
entity_id entity_type
1 page
2 page
3 user
4 user
5 image
6 image
users
桌子
user_id entity_id
1 3
2 4
pages
桌子
page_id entity_id
1 1
2 2
images
桌子
image_id entity_id
1 5
2 6
这是将表格与表格进行映射 的表格,因为某些图像属于某个页面(可能是将来的博客文章等),images
entities
map_entity_image
桌子
entity_id image_id
1 1
1 2
entities
因此,当我要创建页面、图像、用户等时,我将在表中插入一行。
最终,这些表中的行数将大量增加。所以我担心它可以处理大量行吗?这个数据库会随着时间变得越来越慢吗?
毕竟,这些是一个糟糕的结构吗?
或者我做的超类型/子类型不正确?
编辑:
我认为entity
应该只有这些数据,
entity_id entity_type
1 page
2 page
除非我想将图像附加到用户等,否则应该是这样的,
entity_id entity_type
1 page
2 page
3 user
4 user
也许我错了……
编辑:
所以这是我如何找出页面 id 1 附加了多少图像的查询,
SELECT E.*, P.*, X.*,C.*
FROM entities E
LEFT JOIN pages P ON (P.entity_id = E.entity_id)
LEFT JOIN map_entities_images X ON (X.entity_id = E.entity_id)
LEFT JOIN images C ON (C.image_id = X.image_id)
WHERE P.page_id = 1
返回2张图像。