gpt4 book ai didi

mysql - 加入多个外键

转载 作者:搜寻专家 更新时间:2023-10-30 20:39:21 25 4
gpt4 key购买 nike

我有一个 tbl_categories 表,如下所示:

id  category_name   parent_id   status  category_order  slug 

我有另一个表tbl_users,其中每个用户记录最多可以属于 3 个主要类别和每个主要类别中的 3 个子类别(因此,总共 3 个主要类别和 9 个子类别)

我知道我可以在 tbl_users 表上使用别名并创建我的查询,该查询将返回用户所属的类别和子类别。然而,我能想到的 tbl_users 表的表结构看起来像这样:

id username password maincat_1 subcat_1_1 subcat_1_2 subcat_1_3 maincat_2 subcat_2_1 subcat_2_2 subcat_2_3 maincat_3 maincat_3_1 maincat_3_2 maincat_3_3

是否有更好的结构/方式来做到这一点?

最佳答案

有一个更好的方法:

tbl_categories 的结构没问题。

添加另一个存储用户数据的结构:

id username password 

每个用户将在这里存储一次。然后添加一个“数据透视表”或翻译表 USERS_CATEGORIES 以连接您的usercategories 表:

userID categoryID

每个用户可以在这里存储不止一次,例如三个主要类别存储三次。

如果你想获取用户所在的所有类别名称,你可以执行如下查询:

SELECT tbl_categories.category_name
FROM tbl_categories, USERS_CATEGORIES, USERS
WHERE USERS.username = 'My Name'
AND USERS.id = USERS_CATEGORIES.userID
AND USERS_CATEGORIES.categoryID = tbl_categories.id

理论背景称为“数据库规范化”- 参见 here

关于mysql - 加入多个外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26815344/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com