Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 在数据库中存储多个技能类别的最佳方法是什么?_Database_Database Design_Database Normalization - Fatal编程技术网

Database 在数据库中存储多个技能类别的最佳方法是什么?

Database 在数据库中存储多个技能类别的最佳方法是什么?,database,database-design,database-normalization,Database,Database Design,Database Normalization,我有一个表用户,我想为其存储技能 显然,我打算使用一个允许用户拥有多种技能的链接表,但是例如,这些技能被分为“技术技能”和“管理技能”等类别 最好是有一个存储技能类型的单一技能表,然后是一个单一链接表USER\u SKILL,还是有单独的表Management\u SKILL和TECHNICAL\u SKILL,然后还有单独的链接表,如USER\u Management\u SKILL和USER\u TECHNICAL\u SKILL?您的问题令人困惑,但我会尽力帮助我理解它 第一种方法: 每个

我有一个表用户,我想为其存储技能

显然,我打算使用一个允许用户拥有多种技能的链接表,但是例如,这些技能被分为“技术技能”和“管理技能”等类别


最好是有一个存储技能类型的单一技能表,然后是一个单一链接表USER\u SKILL,还是有单独的表Management\u SKILL和TECHNICAL\u SKILL,然后还有单独的链接表,如USER\u Management\u SKILL和USER\u TECHNICAL\u SKILL?

您的问题令人困惑,但我会尽力帮助我理解它

第一种方法:

每个用户都有多个技能,这些技能是不同的,它们共享相同的体系结构(idSkill,skillName,…),并且它们有一个停滞的变化是技能类型:管理型或技术型,在这种情况下,您只需要两个表:
技能
表格和
技能类型
表格

第二种方法

如果我们认为每种技能类型都有自己的架构,例如

managerial_skills (idSkill, marketing, accounting, ...)
technical_skills (idSkill, web, databases, mobile, desktop ....)

然后您还需要这些表。

USER(1-n)USER\u SKILL(n-1)SKILL。就这样。USER_SKILL可以有一个UserID和SkillID的复合主键,以避免重复。这不能回答如何定义技能类别为子类型/超类型重新排列不是DB规范化。谢谢,建议的答案很有用。我还有一个问题。在回答中,你建议他们提及保单和保险继承。比如说,汽车保险也可以属于另一个表,比如用户。因此,保单和用户都可以拥有相同的汽车保险。当汽车保险从保单继承PK时,这是如何工作的?请参阅了解如何使用@通知一位非唯一非海报评论者或某个其他用户有关评论。(海报和关注者会得到通知。)(只有关注者会收到你最后一次评论的通知。)请在(自己的)问题帖子中提出一个新的(特定的、非重复的)问题,而不是在评论中。谢谢,也可以说,例如,你有一个表作业类型(Id、名称)和作业(Id、作业类型、Id)。如果我想使用JOB_类型作为一种技能,它应该是一个单独的表,还是可以使用相同的表?或者技能表中是否应该有工作类型的副本?您只需要在技能表中添加一个外键(idSkill,idSkill_type,job_id_type…)否,但该工作类型正被用作技能而非技能。您是否只需将工作类型id用于技能类型I?例如,另一种技能类型将是job_skills,它只包含一个job_类型,但是job_类型也在其他地方使用,所以我不能在job_技能中直接包含job_类型。