我正在尝试创建一个带有登录名的聊天应用程序。我正在使用 MySQL 数据库来存储用户数据。我的表称为 userData
。它包含:
userID*
userPass
firstname
surname
role
contacts
好的,这个系统是为教职员工和学生准备的,用户可以将联系人添加到他们的列表中。我正在努力构建我的数据库以有效地存储联系人。基本上我不确定如何使用联系人列进行规范化。
例如……
userID* userPass firstname surname 角色联系人
1234 2012海绵宝宝学生 1345
1234 2012海绵宝宝学生 3421
1234 2012海绵宝宝学生 1445
我是否适合为每个用户 ID 创建一个表来存储联系人?我正在使用 MySQL 数据库在 JAVA 中进行此操作。如有任何提示,我们将不胜感激。
最佳答案
您应该有两个表,一个包含用户数据,另一个包含联系人。然后可以使用共享标识符加入。
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;
关于mysql - 标准化 MySQL 数据库中的联系人,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23109504/