Моделирование членства в группах в базе данных - PullRequest
0 голосов
/ 26 августа 2010

Только начал проектировать базу данных, чего я раньше не делал. И мне интересно, как лучше всего обрабатывать членство в группах в базе данных.

Скажем, у меня есть две таблицы.

CREATE TABLE [dbo].[Computers] (
    [ComputerID]        INT              IDENTITY (1, 1) NOT NULL,
    [Name]              NVARCHAR (50)    NOT NULL,
 );


CREATE TABLE [dbo].[ComputerGroups] (
    [ComputerGroupID] INT            IDENTITY (1, 1) NOT NULL,
    [Name]                NVARCHAR (50)  NOT NULL,
);

Мне лучше добавить поле [MemberOfGroup] в таблицу Компьютеры , добавить поле [Member] в таблицу ComputerGroups или создать 3-ю таблицу соединений и добавить [ ComputerID] [ComputerGroupID] FK.

Я могу безжалостно заставить это работать, но какой лучший способ сделать это и почему?

1 Ответ

0 голосов
/ 26 августа 2010

Если компьютер может быть членом нескольких групп, у вас есть отношение «многие ко многим». В нормальном SQL для этого вам нужна таблица соединений.

create table GroupMembership (
  ComputerID int not null,
  GroupID int not null,
  --here you can add info that concearns the Membership, like expiry date and such--
)

Если компьютер может быть членом только одной группы, вам нужно только добавить groupid как поле в таблице Computer.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...