2010-08-26 4 views
0

J'ai commencé à concevoir une base de données que je n'avais pas encore réalisée. Et je me demande quel est le meilleur moyen de gérer l'appartenance à un groupe dans la base de données.Modélisation de l'appartenance à un groupe dans une base de données

Dites que j'ai deux tables.

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, 
); 

Suis-je mieux ajouter un champ [MemberOfGroup] aux ordinateurs tableau, l'ajout d'un champ [Member] à la table ComputerGroups ou la création d'une 3ème table de jonction et en ajoutant le [ComputerID] [ComputerGroupID] FK de.

Je peux surement obtenir ce fonctionnement mais quel est le meilleur moyen d'accomplir ceci et pourquoi?

Répondre

0

Si un ordinateur peut appartenir à plusieurs groupes, vous avez une relation Plusieurs-à-plusieurs. En SQL normal, vous avez besoin d'une table de jonction pour y parvenir.

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

Si un ordinateur ne peut être membre d'un groupe , il vous suffit d'ajouter le groupId comme un champ dans la table d'ordinateur.