mysql - 如何最优地构建此表,每个用户的技能基于另一个表

标签 mysql normalization

我有一个问题被“作家”阻止。我正在为 Mysql 中的网络应用程序构建数据库。我有两个表,我们将它们称为用户和作业。我想要另一张 table ,我们称之为技能。现在我想要的是一种将用户与他们拥有的技能联系起来的方法,以及另一种将工作与同一组技能联系起来的方法。我认为在保持一切正常化的同时做到这一点的唯一方法是基本上为每个用户和每个作业提供完整的作业列表。当然这太糟糕了,我无法接受,更何况以后添加技能或删除技能将是一场噩梦。

那么我该如何去做呢?我唯一必须拥有的是用户表(键 ID UserID)、作业表(键 ID JobId)和技能表(键 ID SkillID),我似乎无法想出添加表\行\或列的解决方案,并且我肯定正在寻求更有知识的人的答案。

最佳答案

您需要两个额外的映射表:user_skills 将具有 UserIDSkillID,并使用它们的唯一组合作为(主)键。同样,job_skillsJobIDSkillID 再次使用组合的唯一键。有了该架构,只需简单查询即可获取您需要的任何数据。

关于mysql - 如何最优地构建此表,每个用户的技能基于另一个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30749802/

相关文章:

mysql - Rails 部署期间的 "error 28 from storage engine"

mysql - MYSQL中如何从Varchar字段中选择Max Numeric

c++ - Unicode 规范化 C++ 源代码引用

python-3.x - yolov5 中的非标准化标签

MySQL表设计和规范化协助

php - Jquery UI datepicker 字段中来自数据库的 Prefil 日期

MySQL - SQL代码优化

python - 如何在 python 中规范化 URL

php - 如何减少规范化数据库中的查询数量?

database - 我应该将可选的记录属性放在单独的表中吗?