我正在写这条消息,就“如何设计我的数据库”提出建议。
我不是开发人员,只是拥有一些基本知识来编写我自己的网站,并设计一些非常基本的DRM。
我的“问题”如下:
我通常根据相同的基本原则(不使用外键)创建我的表(无论我使用的数据库,MySQL,Oracle等),最后,我的程序总是有大量查询,我称之为“软”关系(如教程中所见..),例如:
select
a.field1
a.field2
b.field3
c.field4
d.field5
d.field16
x.fieldN
from
table1 a,
table2 b,
table3 c,
table4 d,
tableN x
where
table1.id = table2.user_id
and table1.thingid = table3.thing_id
and table1.group_id = table3.group_id
and table2.id = table4.id
and so.on
and so.on
and so.on
and so.on
and so.on
问题是多方面的:
所以我的问题是:
答案 0 :(得分:1)
(在MySQL中......)
"大量加入"将工作(最多61个),但它是一个糟糕的架构设计的症状。除了EAV架构(这是有问题的)之外,很少看到超过4个表加入。
FOREIGN KEY
生成INDEX
。执行INDEX
需要JOIN
。如果没有索引,则需要完全扫描第二个表(无论哪个表);使用合适的索引,查找是“立即”。
有时大量的联接来自初学者"过度正常化"。
您是否愿意进一步描述您的应用程序和架构;然后我们可以通过示例教学而不是手工挥动。