我有一个注册页面,用户可以在其中与其他20个人一起注册他/她自己。现在,我可以很好地存储所有这些值,我的问题是如何在表中进行标识。假设约翰注册了自己和他的20个朋友。在表中,我将为他和他的小组标识一个ID号1,但是我将为他的ID专门标记一个星星,所以我知道他是向其他所有人注册的人。

这就是我要尝试的想法,但我不知道如何在实践中做到这一点。最好的方法是什么,我如何真正做到这一点?我想我可以编写代码,但是我只需要一些概念即可。

最佳答案

您可以为此创建三个表。 UserList包含所有用户的所有记录。 GroupList包含所有组和组的所有者。最后是PersonGroup,其中包含user_id和某个用户所属的组。

CREATE TABLE UserList
(
    ID INT AUTO_INCREMENT,
    FullName VARCHAR(50),
    -- ... other columns if you want ...
    CONSTRAINT ul_pk PRIMARY KEY (ID),
    CONSTRAINT ul_uq UNIQUE (FullName)
);

CREATE TABLE GroupList
(
    ID INT AUTO_INCREMENT,
    GroupName VARCHAR(25),
    OwnerID INT,
    -- ... other columns if you want ...
    CONSTRAINT gl_PK PRIMARY KEY (ID),
    CONSTRAINT gl_UQ UNIQUE(GroupName),
    CONSTRAINT gl_FK FOREIGN KEY (OwnerID) REFERENCES UserList(ID)
);

CREATE TABLE PersonGroup
(
    RecordID INT AUTO_INCREMENT,
    User_ID INT,
    GROUP_ID INT,
    CONSTRAINT pg_PK PRIMARY KEY (RecordID),
    CONSTRAINT pg_uq UNIQUE (User_ID, GROUP_ID),
    CONSTRAINT pg_FK1 FOREIGN KEY (User_ID) REFERENCES UserList(ID),
    CONSTRAINT pg_FK2 FOREIGN KEY (GROUP_ID) REFERENCES GroupList(ID)
);

关于mysql - Mysql的多个条目,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12468807/

10-11 03:18
查看更多