我有一个用户表:
create table dbo.User
(
Id int identity not null,
Name nvarchar (400) null,
// Other coluns as Login, Password, etc.
)
create table dbo.Role
(
Id int identity not null,
Name nvarchar (20) null
)
create table dbo.UserRole
(
UserId int not null,
RoleId int not null
)
每个用户都有一个或多个角色。
我需要在类型的时段内将用户彼此关联。
例如,2015年4个月内,其中一名教授为其学生。
我还需要跟踪用户之间的消息。
我的一个想法如下:
create table dbo.UserToUser
(
FirstUserId int not null,
SecondUserId int not null,
StartDate datetime not null,
EndDate datetime not null
)
同时是用户表的FirstUserId和SecondUserId FK。
create table dbo.Message
(
ToId int not null,
FromId int not null,
Text nvarchar(max) not null,
Created datetime not null
)
同时使用ToId和FromId FK的用户表。
这应该以另一种方式完成吗?
答案 0 :(得分:0)
这看起来很好,但你可以更加通用的关系。例如,您可能希望在一段关系中拥有2个以上的人。有很多方法可以做到这一点,但我会这样做:
Relationship
------------
ID
StartDate
EndDate
Category
... etc
RelationshipMembers
-------------------
RelationshipID
UserID
Order (may not be needed)
MembershipCategory (eg Professors and Students // messageFrom and messageTo)