gpt4 book ai didi

sql - 规范化和复合表结构

转载 作者:搜寻专家 更新时间:2023-10-30 22:13:19 25 4
gpt4 key购买 nike

我在某种情况下难以优化数据库设计

有一张表有 3000 名员工,另一张表有 300 个部门。

问题是可能有 300 个部门的 3000 名员工。基本上每个员工将在所有部门工作 300x3000 记录(最坏的情况)。可能只有 10 名员工在 300 个部门工作(最好的情况)并且没有问题或有一个复合表。

那么什么是最好的结构方式

请多多指教

谢谢

最佳答案

在关系数据库中,适当的模式是存储员工在部门工作的事实是一个关系:

create table employees(employee_id, ..., primary key(employee_id));
create table departments(department_id, ..., primary key(department_id));
create table works_in(
employee_id,
department_id,
primary key(employee_id, department_id),
foreign key(employee_id) references employees(employee_id),
foreign key(department_id) references departments(department_id)
);
/* Add column datatypes as needed */

这种模式几乎适用于所有情况,即使是大型关系表。如果你担心空间消耗,很多数据库可以非常有效地存储这种表,例如,将它们物理存储为索引组织表,例如,将它们按 employee_id 分组存储等。

但是,即使是 300 x 3000 个条目听起来也不像您需要这种物理数据库设计优化。

关于sql - 规范化和复合表结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19511190/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com