为用户配置文件创建mysql数据库

时间:2010-11-27 15:38:52

标签: mysql

我需要创建一个数据库,其中有3个表,其中一个是FRIENDS,第二个是USERS,第三个是PICTURES。我在用户和朋友之间有一对多的关系。用户和图片表之间存在一对多的关系。我在这里提出了一个问题,标题是为用户配置文件构建一个数据库,但这对lilbit来说很困惑。他们将userid作为外键,但我认为图片ID应该是用户表中的外键。

还有一个问题是,我们可以在一个表中有2个外键,因为我有一对多的用户表与图片和朋友表的关系。对不起,我的数据库不好。我只是需要一些帮助。谢谢

3 个答案:

答案 0 :(得分:1)

如果您尝试创建某种Facebook'朋友'功能,那么您需要引用同一个表。例如,您的USERS表可能如下所示:

userID ,姓名,电子邮件,朋友,)

然后,朋友们可以通过列出他们的相关信息(userID)来引用很多用户的朋友:

“23,345,34,34,23”

所有人都在同一领域。您需要写入列表朋友的任何功能都可以使用它与explode()来收集朋友的详细信息。

最后,是的,表中可以有2个外键,你可以拥有你需要的任意数量。

另外,更具可扩展性的是在数据库中包含以下表格。

USERS FRIENDS PICTURES

然后,好友表将列出两个用户之间的关系,如下所示:

FRIENDS TABLE

user1 = 34< ---这是引用USERS表中的userID的外键 user2 = 44< ---这是引用USERS表中的userID的外键

答案 1 :(得分:1)

您可以根据需要拥有尽可能多的外围关键字。如果要将多个图片链接到用户,则为PICTURES提供用户ID是有意义的。如果您希望每个用户只有一张图片,您可以给USERS一个pictureid。

你也可以同时做这两件事。如果您想要查看主图片(如肖像图片或头像)并允许PICTURES拥有用户ID,请参阅USERS.pictureid,以便您也可以为每个用户管理一组图片。您还可以为用户提供多个pictureid,例如driverslicencepictureid,avatarpictureid,portraitpictureid等,每个都是PICTURES.pictureid的外键。

您甚至可以考虑将每张图片链接到多个用户的可能性,例如Facebook,它允许每个用户在多张图片中“标记”,但也允许在每张图片中标记多个用户。

在这种情况下,您需要一个表来附加这两个。定义包含用户标识和pictureid的USERSPICTURES交叉表。您可以使用此表来定义用户和图片之间的交叉链接。

正如我之前所说,除了交叉表之外,您仍然可以为每个用户提供特定图片的ID。

同样适用于FRIENDS的课程。每个人都可以成为每个人的朋友。所以在这种情况下,您可以使用FRIENDS表来存储两个USERS之间的关系。给朋友表一个User1Id和一个User2Id,它允许存储两个用户之间的连接(如果这是你想要的)。

答案 2 :(得分:1)

您可以在一个表中使用两个外键,但根据您的描述,您不会。朋友将拥有用户FK,图片将拥有用户FK。这就是FKs。

首先要提出有关您的架构的问题(例如,如果用户是用户的朋友,他们的朋友仍然是用户,那么应该通过友谊等多对多链接表建立友谊),但是根据您的描述,您应该用FK表示,因为您在一个表中没有2个FK。