У меня есть таблица пользователей:связи между пользователями с сообщениями
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
)
Каждый пользователь имеет одну или несколько ролей.
Мне нужно связать пользователей друг с другом в периоды типа.
Например, один профессор своих студентов в течение 4-х месяцев в 2015 году
И я также необходимо отслеживать сообщения между пользователями.
Одна из моих идей было бы следующее:
create table dbo.UserToUser
(
FirstUserId int not null,
SecondUserId int not null,
StartDate datetime not null,
EndDate datetime not null
)
Будучи как FirstUserId и SecondUserId FK-х из таблицы Users.
create table dbo.Message
(
ToId int not null,
FromId int not null,
Text nvarchar(max) not null,
Created datetime not null
)
Быть как таблицей ToId, так и FromId FK's Users.
Должно ли это быть сделано по-другому?
Они, кажется, хорошо, за исключением я бы ожидать UserToUser иметь категорию «тип отношения», чтобы указать, почему существует связь. – Hogan
Это имеет смысл ... Спасибо –
Выглядит неплохо. В UserToUser EndDate, вероятно, должен иметь значение NULL (мы не знаем, когда отношения закончатся наверняка). Вы можете захотеть поставить дату начала и окончания на userrole, чтобы позволить ролям меняться со временем. то есть ученик может преподавать класс, а затем вернуться к тому, чтобы быть просто учеником. – LeeG