一个与零或一的关系,其他表只与零或一个表相关

时间:2015-01-02 21:27:01

标签: sql-server database relational-database

所以我有一个User表来保存我的应用程序中的所有用户信息。用户最多只能拥有一个个人资料,但并非所有用户都拥有个人资料(例如,管理员)。因此,我将这两个表之间的关系设为零或一。

enter image description here

这很好用,但是个人资料可以包含仅与个人资料相关的其他数据。例如,用户可能具有的各种社交媒体帐户的链接。这些链接仅在显示配置文件时显示,因此我继续从SocialMediaLink到Profile而不是User表建立关系。 SocialMediaLinkType只是社交媒体网站的查找表 - " Twitter"," Facebook"等

enter image description here

现在我的问题源于第二种关系。将Profile表上的UserId PK / FK列引用到SocialMediaLink表而不是仅引用User表上的UserId PK似乎很奇怪。但与此同时,SocialMediaLink并没有直接引用用户,因为它实际上是个人资料的一部分。只有在显示配置文件时才会显示SocialMediaLink。此外,还有至少3个其他配置文件数据表,因此会有

我过度复杂吗?让User表引用SocialMediaLink和与Profile相关的任何其他附加表是否完全正常,即使某些用户记录没有那些相关记录(如管理员的情况)?或者将链接保留在Profile表上是否有好处,例如对于级联删除,删除配置文件会删除所有其他表数据,而不必触及User表?

另外,对于它的价值,我在应用程序中使用Entity Framework和这个数据库,但我对实际的关系数据库理论建议与如何使用EF的方式更感兴趣。

0 个答案:

没有答案