我有一个注册页面,用户可以在其中注册他/她自己和其他20个人。现在我可以存储所有这些值,我的问题是如何在表中识别。所以,让我们说约翰登记自己和他的20个朋友。在表格中,我会用他的身份证号码1标记他和他的小组,但我会用明星标记他的身份证明,所以我知道他是那个注册其他人的人。
这是我想要的想法,但我不知道如何在实践中这样做。什么是最好的方式,我该如何做到这一点?我想我可以编写代码,但我只需要一些概念来解决问题。
答案 0 :(得分:1)
您可以为此创建三个表。 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)
);
答案 1 :(得分:0)
有点难以完全准确,但可能会记录用于注册的IP,然后您通常会知道有多少帐户来自该IP。
答案 2 :(得分:0)
如果将RegisteredByID列添加为NULL,如果它们已注册为NULL,那么它也很容易找到该组。
答案 3 :(得分:0)
这可能是@Adrian所说的重复,但我并不是真的了解他,所以......
当John注册时,他获得了一个user_id,对吗?
在表中为registrar_id添加一列。
对于其他20个用户记录,请将John的user_id放在registrar_id列中。