“FirstName”和“LastName”存储在数据库USER或USER_PROFILE表中?

时间:2010-04-20 04:14:46

标签: sql-server oracle database-design

目前我将用户的“FirstName”和“LastName”存储在USER表中,但我也有一个USER PROFILE表(提供有关用户的其他信息),并且让用户的“FirstName”和USER PROFILE表中的“LastName”也是如此。

那我该怎么办?制作两份“FirstName”和“LastName”?


USER表,包含用户用于登录其帐户控制面板的用户凭据,即用户名,密码,注册日期,安全问题等

USER_PROFILE表,包含有关用户的信息,例如地址,电话号码,出生国家/地区,公民身份等

关系

USER 1. * USER_PROFILE

5 个答案:

答案 0 :(得分:3)

将第一个名字和姓氏放在用户个人资料中,除非在登录过程中需要它们。这样就可以处理更少的数据,并且它们不仅仅包含帐户信息。如果需要,只留下登录数据,这样可以加快查询速度。

正如其他人所说,不要复制数据。您可以在需要时加入表格。您的用户表上应该有一个主键(最好不是用户名,他们可以更改),这是从用户配置文件表中引用的。如果不这样做,请在考虑做其他事情之前先添加一个。

答案 1 :(得分:1)

不,不要制作2份。将其保留在USER表中,或将其移至USERPROFILE表。

如果两者都有用户ID,则可以使用连接。

如果您可以在USER和USERPROFILE之间提供更多结构细节,我们可以确定它属于哪一个。从我的想法来看,似乎USERPROFILE是用户的个人详细信息,因此这似乎是提供所述信息的合理位置。

答案 2 :(得分:0)

USER表中还存储了哪些其他数据?

USER_PROFILE和USER中的数据有什么区别?

一旦你回答了这个问题,希望用户的名字可以非常清楚地符合这两个区别中的一个。

无论哪种方式,都不要复制它。

答案 3 :(得分:0)

不要复制日期。将它们放在与最常用的其他字段分组的表中。

例如,如果名字和姓氏字段是私有字段,必需,并且与用户表中的字段一起使用的次数比配置文件表更频繁......将它们放在USER表中。

如果需要,但最常用于电话号码,地址等,请将它们放在配置文件表中。

如果它们是可选的,毫无疑问将它们放在配置文件表中。

答案 4 :(得分:0)

如果USER中的每个条目在USER_PROFILE中只有一个条目,反之亦然,那么从逻辑上(即从标准化的角度来看)它们应该是一个单独的表(可能有不同的视图,例如,只有授权的人才能看到地址和电话号码)。

您可能遇到用户个人资料映射到多个用户的情况(例如,个人拥有普通用户和“管理员”帐户)。在这种情况下,firstname,lastname将成为配置文件的一部分。

此外,如果用户有多个配置文件(例如通用管理员帐户),这些配置文件也适合使用firstname,lastname作为配置文件的一部分。