0

场景
- 有两个部门,即“软件”和“硬件”。
- 他们在软件部门有“Cobol”、“Fortran”、“Pascal”、“QBasic”等部门。
- 以及硬件部门的“RAM”、“硬盘”、“监视器”、“CPU”。
- 以下是DepartmentDivision表格的表格格式。

使用的数据库:Oracle

表一:部门表

在此处输入图像描述

表2:以上部门的分表(格式1-主键/唯一ID列=Div_id)

在此处输入图像描述

表 2 :上述部门的分表(格式 2 - 主键/唯一 ID 列 = Div_id + Dep_id)

在此处输入图像描述

在上述两种划分表格式中,我无法找到优缺点。因此,在这些格式中,创建主要/唯一 ID 的最佳做法是什么。为什么它是最好的?

使用选择查询时,两种格式之间是否存在性能差异?

4

2 回答 2

1

您可以使用格式 1 显示的一列作为主键,也可以使用格式 2 中的组合主键。对我来说,格式 1 是一种选择,因为:

  • 每条记录都有自己的 id,并且可以通过仅使用一列的选择来访问它,您可以将另一个表链接到该字段(外键)
  • 用于生成 id 的数据库的常见实现是格式 1 中的一个,只是一个向上计数的数字,否则您必须在应用程序中创建一个序列或对其进行编码
  • 格式 2 的魅力在于,您对每个项目和部门都有一个数字,依此类推,但要真正关心数字,如果您需要类似的东西,您应该选择单独的表格,如果您想数数应该使用 count(*) 而不是 getMax ;-)
  • 如果您想从部门 1 或 2 中选择所有项目,则没有区别

所以恕我直言,选择格式 1,这是最实用的解决方案

于 2017-02-19T06:59:32.017 回答
0

格式 2 接近我选择的格式。主键不仅仅是作为一个唯一的列。它还可以强制数据完整性,并帮助解释表的作用。

这篇文章帮助我理清了问题。

于 2018-02-25T17:03:34.447 回答