我正在尝试用登录创建一个聊天应用程序。我使用MySQL数据库来存储用户数据。我的桌子叫userData。它包括:
userID*
userPass
firstname
surname
role
contacts好的,这个系统是为工作人员和学生和用户可以添加联系人到他们的名单。我正在努力构建我的数据库,以有效地存储联系人。基本上,我不知道如何与联系人栏正常化。
例如..。
userID* userPass firstname surname role contacts 1234 2012 Sponge Bob Student 1345 1234 2012 Sponge Bob Student 3421 1234 2012 Sponge Bob Student 1445
我是否应该为每个userID创建一个表来存储联系人?我正在使用MySQL db在JAVA中实现这一点。如果有任何建议我会很感激的。
发布于 2014-04-16 12:34:33
您应该有两个表,一个有用户数据,另一个有联系人。然后,可以使用共享标识符将其连接起来。
CREATE TABLE userData (userID int primary key, userPass varchar(32), firstname varchar(32), surname varchar(32), roleID int);
CREATE TABLE roles (roleID int primary key, rolename char(32));
CREATE TABLE contacts (userID int, contactID int);我把“角色”举了个例子。然后,您可以在必要时加入这些内容,例如:
SELECT contacts.* FROM contacts
JOIN userData USING (userID)
WHERE userData.userID=1234;或进一步从正常化中受益:
SELECT CONCAT(ud.firstName,' ',ud.surName),
CONCAT(cd.firstName,' ',cd.surName)
FROM contacts
JOIN userData AS cd on (cd.userID=contacts.contactID)
JOIN userData AS ud on (ud.userID=contacts.userID)
WHERE
contacts.userID=1234;https://stackoverflow.com/questions/23109504
复制相似问题