我正在跳过一个位于Sql Server 2008数据库之上的项目,对我来说这似乎是一个低效的架构。但是,我不是SQL的专家,所以我正在寻求指导。
通常,架构具有如下表格:
ID | A |乙
我的问题如下:
现在数据库很容易被人类阅读,但它的大小正在快速增长,我觉得设计效率低下。目前在任何地方都没有索引。正如我所说,我不是专业人士,但会更多地了解这个主题。目标是建立一个快速的系统。谢谢你的建议!
答案 0 :(得分:1)
与大多数事情一样,取决于它。
通过将动物名称直接放在表格中,通过消除对许多联接的需要,它可以提高报告查询的效率。
使用类似第3范式的形式(具有动物的ID /名称表)会使数据库变小,但需要更多联接才能进行报告。
无论哪种方式,请务必添加一些索引。
答案 1 :(得分:1)
这听起来像是一个可能代表兽医诊所的数据库。
如果您描述的表格代表了来到诊所的各种患者(动物),那么具有特定属性的表格可能在主要餐桌上最佳。但是,正如您所说的列“A”包含物种名称,将其链接到辅助表可能是值得的,以节省存储这些名称的冗余:
例如:
Patients
--------
ID Name SpeciesID Color DOB Weight
1 Spot 1 Black/White 2008-01-01 20
Species
-------
ID Species
1 Cocker Spaniel
如果您的主表应该由客户或所有者分组,那么您可能想要添加一个动物表并链接它:
Customers
---------
ID Name
1 John Q. Sample
Animals
-------
ID CustomerID SpeciesID Name Color DOB Weight
1 1 1 Spot Black/White 2008-01-01 20
...
对于原始列B,如果只需要存储两个状态,请考虑将其转换为布尔值(BIT
)。除此之外,请考虑CHAR
存储固定数量的字符。