数据库结构规范化

normalization of database structure

我正在阅读数据库结构规范化的概念。我在项目中对以下情况感到困惑。

  1. 我有两个 tables "TableA" 和 TableB
  2. 两个table相互独立,没有亲属关系
  3. 它们代表完全不同的数据
  4. 两个 table 都有不同的参数。然而 Parameter 本身作为对象具有相同的属性。

所以我担心的是我应该有一个 Parameter table 服务 TableATableB 两个

我应该为 Table ATable B

分别设置 Parameter Table

结构看起来像这样

案例一:

TableA
ID
Name
Description

TableB
ID
Name
SomeFlag

Parameter
ID
TableA_ID
TableB_ID
Name 
Description
Type

案例二

TableA
ID
Name
Description

Parameter_A
ID
TableA_ID
Name 
Description
Type

TableB
ID
Name
SomeFlag

Parameter_B
ID
TableB_ID
Name 
Description
Type

我个人更喜欢案例 I,因为创建另一个 table 表示相同类型的数据确实有意义。

根据规范化的概念,我们应该有一个 table 只代表一件事。所以我想我应该只有一个参数 table。但是,如果 table 从 TableA 和从 TableB 看完全不同的意思怎么办?

如果一个参数有 both Table A and Table B 在逻辑上有意义同一个实例(不是 either/or),那么情况 I 更好。

在关系理论中,每个 table 都是一个类型。即使它们可能有公共数据,类型也是基于它们的用途。虽然它有点复杂,但案例 II 更规范化。

还有一种可能性,没有提到,我称之为案例三。

TableA
ID
Name
Description
PropertyID

TableB
ID
Name
SomeFlag
PropertyID

Parameter
ID
Name 
Description
Type

如果属性在两个 table 之间总是通用的,这可能是最好的解决方案。

我会使用案例一,但有一些变化。参数实体确实持有一件事,table 的参数。参数条目的实例应该只与一个 table 相关(根据您的分析,它们不相关)。

Parameter
----------
PK Param_ID 
FK Main_Table_ID 
Main_Table_name (A or B)
param_Name 
param_Description
param_Type