relational-database - 从模式创建 ERD?
问题描述
有人告诉我根据以下内容创建 ERD 图
The college keeps track of each student’s name, student number, social security
number, address, phone, date-of-birth, and gender.
– Each programme is described by a programme code, name, description, duration
(number of years), level, and the cost.
– Each module has a module code, name, description, duration (number of weeks),
level (introductory, intermediate, advance).
– Grade stores student number, module code, and a letter grade (A, B, C, D, E, F).
Each program enrolls students. Students then register modules. At the end of the
study duration of a module students receive their grades.
我为每个实体制作了属性
Student
(sNmber, SSN, sName, address, phone, DOB, gender)
Programme
(pCode, name, description, duration, level, cost)
Module
(mCode, name, description, duration, level)
Grade
(sNumber, mCode, grade)
我的最终图表也与实体关系类似,我知道我必须将 M:N 关系分解为两个 1:M ex。
Contains - programme_ Modules (pCode, mCode)
但是我的图表似乎与连接模块和学生评分不一致?
我对此很陌生,所以非常感谢一些指示
解决方案
第一件事是,“模式”不足以被称为模式。尽管密钥对您来说可能很明显,但它们并没有被识别。充其量,它只是一个描述,而且是一个不完整的描述。例如。如果它是一个模式,则 M::N 问题将得到解决,表将被命名,并且所有键都将被识别。
在 ERD 中,您没有显示必需的属性。接下来,您需要显示哪些属性是 Keys。
ERD
这是一个 ERD,使用了一些改进的符号,从您的描述中建立。
注意关系键:
它们是复合材料
他们必须:
- 防止重复行
- 强制执行关系完整性,它是逻辑的(与引用完整性不同,它是物理的)
例如,我们希望限制学生注册他注册的程序中的模块。
关系数据模型
显然,ERD 非常有限,它无法显示关系数据模型中所有可能的和期望的定义。此外,正如所证明的那样,它很快就会变得拥挤。
为关系数据库教授 ERD 是非常荒谬的。在现实世界中,我们不使用 ERD 对数据进行建模,我们使用IDEF1X,即自 1993 年以来的关系数据建模标准。这就是它的样子。
注意 • 符号
我的IDEF1X简介是初学者的必备读物
注 • 内容
主键和备用键是显式的。
里面明白了
Level
。里面不清楚Module
。它可能与前者有关系,也可能没有关系。Level
Programme
谓词可以直接从模型中读取。如果您需要它们的文本形式,请询问。
推荐阅读
- reactjs - Typescipt : 输入 React 中包装组件传递的 props
- c# - 在 C# 中将列表中的所有项目移动一个位置的最佳方法
- go - 在以下任何一个中找不到包“golang.org/x/sys/unix”:$GOROOT $GOPATH
- spring-boot - 来自 Spring Boot 中 application.properties 的休眠表名
- java - 为什么 java JDK 无法在我的终端中打印出正确的消息
- android - DownloadManager addCompletedDownload 在某些设备上不起作用
- sql - 将gridview行与数据库进行比较时如何使for循环更快?
- terraform - Terraform:数据工厂中的 Blob 链接服务
- azure-cosmosdb-sqlapi - Cosmos db SQL API 最大查询限制
- mysql - 在sql中返回子查询结果的所有记录