为SQL中的许多实体表实现Notes表的最佳方法

Joh*_*ohn 5 sql entity-framework

我有很多桌子:客户,潜在客户,朋友......
他们都有一些笔记.

问题1:我是否应该与所有父表共享一个Notes表.
或者
我应该有NotesCustomer,NotesProspects,NotesFriends表吗?

问题2:
如果最好的解决方案是第一个,那么这个通用Notes表应该有一个FK到父表但是也是父表的类型?

我正在使用EntityFramework,但这个问题也是一般我猜...

谢谢乔恩

Phi*_*ler 6

第一个选项是Prospects,Customers和Friends的独特Notes表,可能是一个更清晰的解决方案.

如果使用常规注释表,则需要有三个可空的FK列来确定FK所属的相关表,每行中只填充其中一个.

一般来说,良好关系模型的目标不是(或不一定)将类似数据存储在一起,而是仅存储一次特定数据.因此,在设计这个问题时要问自己一个很好的问题是"通过将所有笔记存储在同一个表格中,我获得了什么?"

  • +1.我做了一次单笔记表类型的东西,我再慢做一次.我认为它为我节省的最大的一件事就是在我的SQL脚本中创建了更少的表,这在事情方案中并不是什么大问题,结果证明这是一件很痛苦的事情. (4认同)
  • +1 本来打算提出相反的建议,但是“一个好的关系模型的目标不是(或不一定)将类似的数据存储在一起,而是只存储一次特定的数据”让我思考 (2认同)

Rit*_*ary 1

第一个选项是最好与所有其他人共享一个注释表。

您可以使用两个字段notes_obj_id和notes_obj_type来实现表通用注释