0

在数据库设计中,对于小块数据,元组与引用表的感受是什么?

例如,假设您正在设计一个涉及办公室管理的模式。您想记录每个员工所属的部门,但对与部门相关的任何信息不感兴趣。那么,您是否在 EMPLOYEE 表中将部门作为字符串/char/varchar/etc,或者将其改为与 DEPARTMENT 表相关的外键。

如果 DEPARTMENT 表只记录部门名称,则通常希望将其与 EMPLOYEE 表结合起来。但是,如果这包含在 EMPLOYEE 表中,则不能保证某些用户将 HR 称为“HumanResources”,某些用户可能将其称为“HR”,有些可能将其称为“人力资源”,等等。将其作为外键可以保证它只能是一件事。此外,如果要添加有关部门的其他信息,如果它在自己的表中会很容易。

那么人们怎么看呢?自然,更多的表和引用也可能对性能产生负面影响。我的问题是专门针对 Oracle 11g 提出的,但我怀疑所涉及的 rdms 类型与此设计考虑因素有多大关系。

4

2 回答 2

2

如果您正在处理真正庞大的数据集,您只需要担心这类事情对性能的影响。对于像这样的任何常规办公环境系统,更喜欢规范化模式。

于 2013-05-02T13:59:19.387 回答
2

如果使用相关表,则不存在更新 1,000,000 条记录的性能问题,因为人事部变成了人力资源部。

你有另一个选择。创建表并将其用作数据输入的查找。但是将信息存储在主表中。

但是,我更喜欢为部门使用相关表并将部门和员工的 ID 存储在具有 ids 和 start 和 endates 的连接表中的选项。随着时间的推移,员工往往会从一个部门转移到另一个部门。报告能够告诉他们什么时候在哪个部门是很有帮助的。在设计此类事物时,您需要考虑如何随着时间的推移和报告中使用数据。短视的设计以后很难修复。

您对拥有太多桌子的担忧确实没有根据。数据库被设计成有许多表并使用连接。如果您正确索引,则不会对大多数数据库产生性能影响。你知道吗,我知道有许多表的现实数据库,这些表中的 TB 级数据表现得很好。

于 2013-05-02T14:05:08.330 回答