gpt4 book ai didi

mysql - 为项目分配特定标签的数据库设计

转载 作者:太空宇宙 更新时间:2023-11-03 11:04:22 24 4
gpt4 key购买 nike

我正在尝试构建一个小系统,将特定标签分配给一个项目,或者准确地说是一个人。所以,我有一个人员列表和一个标签列表。我需要为每个人分配 3 个特定标签(对应于此人可能拥有的 3 种不同技能)。

简而言之,输出看起来像这样:

Person 1 | webdesign, ux, jquery
Person 2 | blogging, photography, wordpress
Person 3 | graphic-design, 3d, inventor
...

目前,这些列表存储在两个不同的表中:

persons
-------
person_id
person_name

tags
-------
tag_id
tag_name

我的主要目标是避免重复并简单地将 3 个现有标签分配给现有人员。

你能给我一些关于如何实现它的提示吗?我知道一个three-table标签系统的设计很常见,但它与我的情况相关吗?

感谢您的帮助。

最佳答案

如果你想确保你没有任何重复并且能够向一个人添加 N 标签,那么为了正确实现规范化设计你需要第三个表来链接标签给每个

persons_2_tags
--------------
person_id
tag_id

为保证唯一性,您可以使用复合主键,或向包含两列的表添加唯一索引

请参阅此 SQL Fiddle 中的上述示例.

如果您需要在数据库级别强制执行 3 个标签限制,您可以将第三列添加到 persons_2_tags 表(例如 tag_number),它是 enum 的值为 1, 2, 3 并将其添加到您的 unique index。插入逻辑需要在应用程序级别处理,但会由 index 强制执行。

关于mysql - 为项目分配特定标签的数据库设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13114180/

24 4 0