繁体   English   中英

SQL数据库的索引和表关系

[英]Indexing and table relationships for sql database

我非常感谢有关如何设置表设计以及应使用哪种类型的索引的一些建议。

我认为这种要求已经提出很多,因此希望我能从您的建议中受益!

该要求以及我的初步计划如下:

我有一张表格可以识别数量有限的表格

FormID FormName Desc etc..

我将拥有第二个表格,用于填充这些表格的信息。 (EquipmentIds是唯一的。因此,一件设备可能需要上表中的一种形式。)

ID  FormID  EquipmentID  Element       Value 
-----------------------------------------------------
 1   25     3432         lightswitch   GE Lightbulb
 2   25     3432         lamp          nice lamp
 3   25     3432         rug           really ties the room together
 4   25     3432         shelf         good shelf
 5   25     3432         ...           ....
 6   23     2314         ...           ....

因此,基本上所有表格信息都在第二个表中。 要填充表单,我将在FormID AND EquipmentID的表单填充器中进行选择。

有更好的方法吗? 这对我来说很有意义,但是我可以看到表增长很快,我想知道索引第二张表的最佳方法是什么。

非常感谢您的时间和帮助

您正在实现Entity-Attribute-Value设计的变体。 我已经写过好几次了,这不是关系数据库的有效设计。

  • 您将失去适当使用SQL数据类型的能力。
  • 您将失去使用诸如UNIQUE,FOREIGN KEY甚至NOT NULL之类的SQL约束的能力。
  • 对EAV数据的查询无法很好地扩展。
  • 存储空间庞大且效率低下。 它不仅会创建许多行,而且前三列的值重复很多,从而使索引的效率降低。
  • 要使用EAV数据,您必须编写更多的应用程序代码来检查数据类型,模拟约束并重新格式化结果集。 RDBMS已经为您更有效地完成了这项额外工作。

关系数据库的正确设计是为每个表单设计一个表,表单字段位于不同的列中,因此您可以适当地选择列名称,数据类型和约束。 允许多个值的表单字段也需要单独的子表。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM