gpt4 book ai didi

mysql - 使用整数数组设置外键

转载 作者:行者123 更新时间:2023-11-28 23:20:12 25 4
gpt4 key购买 nike

我对使用 SQL 还很陌生,但我在 Stack Overflow 上遇到过这个关于使用标签的问题。

Recommended SQL database design for tags or tagging

这促使我在我的数据库中创建了以下表格:

文档

---------------------------------------------------------------
| Doc Id (PK)(int) | Doc Title (varchar) | Doc Link (varchar) |
---------------------------------------------------------------
| 1 | Printing | http://example.com |
---------------------------------------------------------------
| 2 | Format | http://example.com |
---------------------------------------------------------------

标签

--------------------------------------
| Tag Id (PK)(int) | Title (varchar) |
--------------------------------------
| 1 | print |
--------------------------------------
| 2 | guide |
--------------------------------------
| 3 | support |
--------------------------------------

文档标签

---------------------------------
| DocId (int) | TagId (varchar) |
---------------------------------
| 1 | 1, 3 |
---------------------------------
| 2 | 2, 3 |
---------------------------------

但是,我无法在 DocTag 表和其他两个表之间创建外键,因为我需要在 DocTag< 的 TagId 中创建一个排序数组 因为一个文档可以有多个标签。我在尝试创建主键时遇到错误,我认为这是因为 TagId 中的 varchar 变量。

有什么克服这个问题的建议?

最佳答案

文档标签

---------------------------------
| DocId (int) | TagId (int) |
---------------------------------
| 1 | 1 |
---------------------------------
| 1 | 3 |
---------------------------------
| 2 | 2 |
---------------------------------
| 2 | 3 |
---------------------------------

外键必须匹配它们引用的列的数据类型。

每个外键引用必须是单个值。没有逗号分隔的列表。

将每个 TagId 值放在它自己的一行中,即使您必须重复 DocId。

参见 my answer to: "Is storing a delimited list in a database column really that bad?"

关于mysql - 使用整数数组设置外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42043739/

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