avi*_*viv 1 sql database performance table-relationships
假设我有搜索工作的人,我有一份工作清单.所以我有两张桌子:人和工作.现在我有一个人的技能列表,我有一份工作要求的技能列表.
有一个这样的技能表更好:
CREATE TABLE skills_reference
(
id INT,
reference_id INT, -- can reference people(id) or job(id)
reference ENUM('person','job'),
skill FOREIGN KEY REFERENCE skills(id)
)
Run Code Online (Sandbox Code Playgroud)
或者有两个表,一个用于people_skills,一个用于jobs_skills.哪一个会带来更好的性能效果?
谢谢.
海事组织,你应该让两个表,一个是job_skill(job_id, skill_id)和一个person_skills(person_id,skill_id).两者都指向相同的技能表.
我应该指出,性能只是一个考虑因素,在许多情况下,您应该首先关注数据模型的逻辑声音设计,然后关注性能(如果它完全是一个问题).
在RDBMS工作的情况下,在许多情况下(80%),最干净的设计也是性能最佳的.