SQL - 一个很长的 table 有几个外键 VS 几个短的 table
SQL - One very long table with several foreign keys VS several short tables
在性能方面,什么会更好?
一个 table 有几个外键和很多行
或
几个 table 有一个外键,每个 table 的数据较少。
示例:
我想创建一个 table,其中包含供用户查看的注释,每个注释都与另一个 table 相关。
在一个选项中它将是
备注(ID、文本、CustomerID、AccountID、UserID、AnotherID)
它将包含每个不相关的外键的空值,因此:
ID Text CustomerID AccountID UserID AnotherID
1 "Call James" 1 null null null
2 "Call Havale" null 2 null null
3 "Call Shimi" null null 4556 null
另一种选择是打开单独的 tables,每个都将输入外键:
AccountNotes(ID, Text, AccountID)
CustomerNotes(ID, Text, CustomerID)
UserNotes(ID, Text, UserID), etc...
最后一个选项是将其视为多对多关系,尽管它不是(例如 Notes_to_Accounts(NoteID,AccountID)
table..)。
我在这里找到的所有答案都是关于一个 table 有几列,然后是很多小的 table 有更少的列,这不是我要解决的问题。
提供第三种选择,但对于简单的实体(一个文本字段)来说可能太复杂了:
Notes(Id, Text)
AccountNotes(AccountId, NoteId)
CustomerNotes(CustomerId, NoteId)
在性能方面,什么会更好?
一个 table 有几个外键和很多行
或
几个 table 有一个外键,每个 table 的数据较少。
示例:
我想创建一个 table,其中包含供用户查看的注释,每个注释都与另一个 table 相关。 在一个选项中它将是
备注(ID、文本、CustomerID、AccountID、UserID、AnotherID) 它将包含每个不相关的外键的空值,因此:
ID Text CustomerID AccountID UserID AnotherID
1 "Call James" 1 null null null
2 "Call Havale" null 2 null null
3 "Call Shimi" null null 4556 null
另一种选择是打开单独的 tables,每个都将输入外键:
AccountNotes(ID, Text, AccountID)
CustomerNotes(ID, Text, CustomerID)
UserNotes(ID, Text, UserID), etc...
最后一个选项是将其视为多对多关系,尽管它不是(例如 Notes_to_Accounts(NoteID,AccountID)
table..)。
我在这里找到的所有答案都是关于一个 table 有几列,然后是很多小的 table 有更少的列,这不是我要解决的问题。
提供第三种选择,但对于简单的实体(一个文本字段)来说可能太复杂了:
Notes(Id, Text)
AccountNotes(AccountId, NoteId)
CustomerNotes(CustomerId, NoteId)