SQL Server表具有不同的用户配置文件

时间:2011-07-30 00:17:55

标签: sql-server-2005 database-design architecture

我在SQL Server 2005中设计我的数据库表并遇到了一个小的设计/体系结构问题......我有我的主Users表(username, password, lastlogin,等),但我也需要存储2个不同的用户配置文件,即存储的配置文件数据在两者之间是不同的。我已将所有常用用户数据放入Users表中。

我是否为ConsumersMarketers创建单独的表格?如果是,那么这些表中的主键是否[table-name]_UserIDUsers_UserID上的1:1关系?

基本上,注册后,用户可以选择注册为消费者或营销商。当用户登录时,将查询Users表,并从任一表中查询其随附的配置文件。

我知道这种方法很混乱,这就是为什么我来这里询问如何实现这一目标的最佳方式。

谢谢!

编辑:此外,在Users表格中,我有一个Users_UserType标记,可让我在用户登录时区分用户,从而了解哪些要查询的个人资料表

1 个答案:

答案 0 :(得分:-1)

你的直觉是正确的。您想要normalize您的数据。使用单独的表可以减少数据重复或空/空列。

不幸的是,如果有这样的反向关系,你就不会有一个很好的干净的外键,从User到Consumer或Marketer,因为它可能是一张桌子或另一张桌子。

您可能希望将User_Id从Consumer / Marketers表映射回User。

您可以使用左连接在单个查询中查询它:

Select 
     u.*,
     c.*,
     m.*
     From Users u
        left join Consumers c on c.User_Id = u.ID
        left join Marketers m on m.User_Id = u.ID
     Where
        u.ID = @UserId