繁体   English   中英

规范MySQL数据库中的联系人

[英]Normalize contacts in MySQL database

我正在尝试使用登录名创建聊天应用程序。 我正在使用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

我为每个用户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;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM