自由职业网站的数据库模式的效率和冗余?

问题描述 投票:0回答:2

对于我的项目,我决定实施一个自由职业网站的数据库。 这是我的关系

租用者(用户名,密码哈希,评级)primary_key->用户名

Worker(用户名,密码,等级)primary_key->用户名

技能组(技能)primary_key->技能

Worker_Skills(用户名,技能)primary_key->(用户名,技能),外键(来自 Worker 的用户名和表技能集中的技能)

收件箱(发件人、收件人、消息)

职位发布(职位 ID、标题、描述、发布者用户名、日期)

Job_skills(职位ID,技能)

申请(Application_ID、Job_ID、申请人、详细信息)

所以,我在这里遇到了一些问题。第一个是,收件箱关系实际上并没有什么关系,因为一个人可以有来自同一中心的多条相同的消息。此外,像 、 Job-skill 和 Worker-kill 这样的技能解析,Job-id 和 Worker-username 中存在冗余。我该如何解决这个问题?

sql database-design
2个回答
0
投票

不要在同一问题中提出两个问题(或陈述两个问题),因为这会使回答变得困难。

“hirer”和“worker”表都应该有一个数字 ID 作为主键,而不是用户名。因此,“WorkerSkills”表的每一行都应包含两个数字:工人的 id 和技能的 id。您已经正确地对作业执行了此操作 - “作业发布”表的主键是一个 id,“JobSkills”表使用此 id 以及技能 id。

然后您可以编写一个查询来显示哪些用户拥有哪些工作所需的技能。


0
投票

为自由职业网站设计数据库模式时,效率和冗余是至关重要的考虑因素。以下是优化这两个方面的方法:

效率: 规范化:规范数据库模式以减少冗余并提高数据完整性。这涉及将数据分解到单独的表中以最大程度地减少重复。 索引:对经常查询的列实施适当的索引,以提高查询性能。 非规范化(如果需要):在某些情况下,非规范化可以通过减少对复杂连接的需求来提高性能,特别是对于读取繁重的操作。然而,这应该明智地进行,以避免牺牲数据完整性。 分区:考虑对大表进行分区,将数据分布在多个存储设备上,这样可以提高查询性能和可扩展性。 缓存:实施缓存机制以减少数据库服务器的负载并提高频繁访问数据的响应时间。 冗余: 消除重复数据:确保每条数据仅存储在一个地方,以避免冗余。这有助于保持数据一致性并降低不一致或冲突的风险。 规范化:如前所述,规范化通过将数据组织到单独的表中并在它们之间建立关系来帮助最大限度地减少冗余。 数据验证和约束:强制执行数据验证规则和约束,以防止插入重复或不一致的数据。 备份和灾难恢复:实施强大的备份和灾难恢复策略,以确保在系统故障或数据丢失时数据的完整性和可用性。 总的来说,在效率和冗余之间取得适当的平衡需要仔细考虑自由职业网站的具体要求和特征,以及随着网站的发展进行持续的监控和优化。

访问我的链接: https://snatanael1995.wixsite.com/stvirtualassistance

© www.soinside.com 2019 - 2024. All rights reserved.