sql - 通常在数据库设计中,一张表有两个引用或一张表哪个更好?

标签 sql database performance table-relationships

假设有人在找工作,我有一份工作 list 。 所以我有两个表: 人和工作。 现在我有一个人的技能列表,我有一个工作要求的技能列表。

最好有一个这样的技能表:

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)
)

或者有两张表,一张用于 people_skills,一张用于 jobs_skills。 哪一个会提供更好的性能结果?

谢谢。

最佳答案

IMO,您应该制作两张表,一张用于job_skill(job_id, skill_id),一张用于person_skills(person_id,skill_id)。两者都指向相同的技能表。

我应该指出,性能只是一个考虑因素,在很多很多情况下,您应该首先关注数据模型的逻辑合理设计,然后才是性能(如果它确实是一个问题的话)。

对于 RDBMS 工作,在许多情况下 (80%),最简洁的设计对于性能也是最好的。

关于sql - 通常在数据库设计中,一张表有两个引用或一张表哪个更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1985293/

相关文章:

java - 通过 JDBC 调用的匿名 block 执行无误但不运行

php - SQL查询通过用户id返回用户名

java - 如何在数据库表中插入每天唯一的登录计数的单独行

database - 使用 doctrine2 测试 symfony2 的数据生成器

mysql - 使用 sql 查询过滤数据以在条形图中显示

database - 更改 Laravel 数据库连接

algorithm - 需要帮助在时间复杂度方面有效地解决以下问题

javascript - 何时确定一次值并将其存储在变量中,而不是重复确定它,(javascript)?

performance - Oracle 性能和内存

SQLServer CASE 表达式 - 短路评估?