SQL Server中不同类型的用户配置文件的数据库设计

时间:2013-06-10 14:50:31

标签: database-design

我有一个网络应用程序,我有两种用户:教师和其他人。我在accountinfo所在的位置创建了一个usertable。使用accountinfo,我的意思是电子邮件地址,用户名,密码,lastactivitydate等。每个用户都有一个配置文件和一个配置文件包含年龄,大约,地址等数据,所以这个信息本质上不同于用户表中的信息,这就是为什么我有一个单独的UserProfile表,其中FK为UserId,指向用户表。

我对这个设计感到非常满意,直到我意识到教师的简介为其他人提供了更多的领域(其他人可能会在未来获得与教师不同的其他领域)。对于老师,我需要他的学校等等。那么我将有一个额外的TeacherProfile表包含额外的数据。这意味着我会在3个表之间进行连接以获取教师的所有数据:User,BaseUserProfile,TeacherProfile。所以我想知道将基本userprofile数据分离到一个单独的表是否是一个好主意,我应该将该表与User表合并吗?这个问题有什么其他选择?

1 个答案:

答案 0 :(得分:1)

  

2种用户

这些通常称为roles。所以你通常会有这些表:

  • tblUser
    • UserId(PK)
    • RoleId(FK)
    • 电子邮件
    • LastLoggedIn
    • PasswordHash
  • tblUserProfile
    • UserProfileId(PK)
    • UserId(FK)
    • 包含教师和学生的列,学生的一些值为NULL
  • tblUserRole
    • RoleId(PK)
    • ROLENAME

我知道这可能是一项学习任务,但即使开始使用良好的安全措施 - 也不要存储密码(加密或不加密)。而是存储用于生成哈希的密码和盐的安全哈希。