用户与消息之间的关系

时间:2015-02-10 17:24:12

标签: sql

我有一个用户表:

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的用户表。

这应该以另一种方式完成吗?

1 个答案:

答案 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)