簡體   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