繁体   English   中英

正确的数据库设计/关系

[英]Correct Database Design / Relationship

下面,我显示了我建议的数据库表的基本示例。

我有两个问题:

  1. 类别“ 工程 ”,“ 客户 ”和“ 供应商 ”将具有完全相同的“ 学科 ”,“ DocType1 ”和“ DocType2”,这是否意味着我必须在“ 分类 ”表中输入这3次,还是更好的方法? 请记住, 分类表中也包含“ 供应商 ”类别。

  2. 在“ 文档 ”表中,我显示了“ category_id ”和“ classification_id ”,我不确定这是否取决于第一个问题的答案,但是“ category_id ”是否必要,还是我应该使用JOIN来让我来过滤基础上,classification_id类别?

先感谢您。

表: 类别

id | name        
---|-------------
1  | Engineering 
2  | Client      
3  | Vendor      
4  | Commercial

表: 学科

id | name        
---|-------------
1  | Electrical
2  | Instrumentation      
3  | Proposals

表格: DocType1

id | name        
---|-------------
1  | Specifications
2  | Drawings      
3  | Lists  
4  | Tendering

表: 分类

id | category_id | discipline_id | doctype1_id | doctype2 
---|-------------|---------------|-------------|----------
1  | 1           | 1             | 2           | 00        
2  | 1           | 1             | 2           | 01        
3  | 2           | 1             | 2           | 00     
4  | 4           | 3             | 4           | 00

表: 文件

id |      title      | doc_number | category_id | classification_id 
---|-----------------|------------|-------------|-------------------
1  | Electrical Spec | 0001       | 1           | 1
2  | Electrical Spec | 0002       | 2           | 3
3  | Quotation       | 0003       | 3           | 4

表关系

根据您提供的内容,看起来我们有三个简单的查找表:category,学科和doctype1。 对我而言,直观上不明显的部分可能还会导致您的困惑,因为最后两个表都用作查找表的交叉引用。 尤其是分类表似乎不合适。 如果只有类别,学科和文档类型的某些组合曾经是有效的,则分类表才有意义,而正确的做法是通过文档表中的分类ID查找该有效组合。 如果不是这种情况,那么您可能只想直接从文档表中引用类别,学科和文档类型。

在您的示例中,文档表具有对分类表的引用和对类别表的引用这一事实说明了进行这种区分的需要。 但是,在分类表中查找的行也引用了类别ID。 这不仅是多余的,而且为类别ID冲突的可能性打开了大门。

我希望这有帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM