小编zdx*_*xai的帖子

2+ 外键在任何关联/联结表中都是坏主意吗?

(第一次发帖,潜伏了很长时间。我在任何地方都找不到这个问题的答案,所以我现在从阴影中出来问专家)。

是一个带有 4 个外键(4 个表)的联结表,对于仅作为查找读取而不定期更改的表,并且包含静态数据并且只能由管理员而不是 ' 更改的表是一个好主意用户'?

我举一个简单的例子。

假设我们有四个表,每个表只有两个字段 - 一个 ID 号字段(主键)和一个“名称”(文本)字段:tblCarModelNametblCarTypetblManufacturertblColor

然后我们有一个连接表(tblCars),其设计如下:

Car_ID (PK)
CarModelName_IDFK (FK)
CarType_IDFK (FK)
Manufacturer_IDFK (FK)
Color_IDFK (FK)
Run Code Online (Sandbox Code Playgroud)

该表可能看起来像(请注意,IDFK 将是整数而不是字符串,如此处所示):

Car_ID, CarModelName_IDFK, CarType_IDFK, Manufacturer_IDFK, Color_IDFK
1,Hilux,Truck,Toyota,White
2,SLK300,Sedan,Mercedes,Blue
3,SLK500,Sedan,Mercedes,Silver
4,Prius,Coupe,Toyota,White
....
Run Code Online (Sandbox Code Playgroud)

所以表格最终看起来像一个电子表格。但我为什么要这样做呢?

  1. 使数据输入和表格维护变得容易。
  2. 由于外键引用,我仍然可以查询表中特定的“制造商”。
  3. 我可以将 Excel 中以相同方式构建的数据直接粘贴到表格中。
  4. 而且,更重要的是,在这个例子中处理了多对多关系
  5. 如果我在用户界面表单中以完全相同的方式提供此表,我知道用户何时从此列表中进行选择,例如 ID = 3,并且他们已从列表中选择了“SLK500,Sedan,Mercedes,Silver”。

这种设计理想吗?反馈表示赞赏。

无论如何,这个模型叫什么?

database-design

7
推荐指数
1
解决办法
3658
查看次数

标签 统计

database-design ×1