在我的应用程序中,用户可以选择创建3个配置文件。
目前,我在数据库中有3个表来表示配置文件。每个配置文件一个表。
但我不知道如何以正确的方式使用此代码。
假设我输入以下网址访问个人资料:
mysite.com/fishness
要么从数据库中获取属于" fishness"个人资料,我必须搜索三个表。我该怎么做搜索? 我应该为每张桌子做三个查询吗?或者这是一个更好的方法吗?
另一件事是当用户登录时。我应该如何获取属于登录用户的配置文件?
我应该在我的AppUser
模型(用户模型)中有导航属性吗?
丑陋的事情在我看来,我必须在我的navigation
中为所有三个配置文件添加AppUser
属性。
有人可以给我一些关于如何设计这个的提示吗?
这是我的三个个人资料表:
Profile1的:
Id
UserId (the users Id)
Name
CoverPicture
Description
WelcomePage
Profile2的:
Id
UserId (the users Id)
Name
CoverPicture
Description
WelcomePage
Profile3的:
Id
UserId
Firstname
Lastname
Birth
Profilepicture
WelcomePage
答案 0 :(得分:0)
你的设计并不好,因为它不可扩展,想象你想要创建一个新的配置文件,你将不得不创建新的表并编辑你的代码。
我的建议是创建一个表profile
和user
,用户有一个 profileId 列,引用个人资料列ID(外键)
Table profile
ProfileID
ProfileDesignation
Table user
UserId
Firstname
Lastname
Birth
Profilepicture
CoverPicture
Description
WelcomePage
ProfileID references profile.ProfileID
答案 1 :(得分:0)
您的问题似乎是“如何在我的数据库中实现继承”的典型案例。 SO上有几个类似的问题;最好的答案是here。
据我了解,您有3种类型的个人资料。它们各自共享一些属性(ID,UserID和WelcomePage),但每种类型可能具有不共享的属性(配置文件1和配置文件2看起来与我相同)。这是一个经典的继承方案。
对于这种情况,关系模型中没有干净的实现;相反,你必须做出权衡。您目前的设计是“每个混凝土表”,非常合理。
答案 2 :(得分:0)