shi*_*zou 5 schema erd database-design relational-theory database-diagrams
我创建了如下所示的实体关系图(ERD)(为简洁起见,每个单独的气泡形框都描绘了多个属性):
考虑到这样的 ERD,我必须将其中描述的每个实体类型或关联实体类型转换为与其对应的属性名称的关系,但我遇到了一些问题。
我通常表示一个关系如下:
X = (a, b, c)
* *如果X
是名称的的关系和a
,b
和c
是名字它的属性。
然后,在我正在研究的业务领域中,aCourse
依赖于零对多 (0:M) 其他Courses
(如 ERD 中所示)。这意味着 aCourse
应该以某种方式连接到Courses
它所依赖的。
那么,我如何将这种情况表示为(数学)关系?
选项1
我尝试了以下方法:
Course = (course_number, course_name, course_dependencies?)
选项 2
我认为可以用另一种方式描述所需的方面,例如:
Depends = (course_name)
进而
Course = (course_number, course_name, depends)
选项 3
但我想,也许,将元素安排如下:
Course = (course_number, course_name)
Depends = (course_name_depender, course_name_dependee)
这样,关系中的每一对属性名称就Depends
代表了关系的两次出现之间的关联(或关系)Course
。
问题
以下哪个选项是正确的方法?也许有更好的方法?
考虑到您描述的课程实体类型,我做出了以下假设:
所以我将情况重新表述如下:
然后,我认为:
是的,这意味着存在概念级多对多 (M:N) 关联(或关系),它可能涉及称为Course的实体类型的不同实例。这样的关联意味着存在关联实体类型,如前所述,我将其命名为CourseDependence。
因此,根据上述一组公式,我得出了图 1所示的IDEF1X 1图:
这样,使用您用来表达关系的符号及其对应的属性名称,我将通过以下方式将 (a) Course实体类型和 (b) CourseDependence关联实体类型表示为两个不同的关系:
Course = (CourseNumber, Name, CreatedDateTime)
CourseDependence = (DependentCourseNumber, DeterminantCourseNumber, CreatedDateTime)
因此,你的问题中暴露的选项3将非常接近表达相关方面的准确可能性。
尾注
1. 信息建模集成定义(IDEF1X )是一种非常值得推荐的数据建模技术,由美国国家标准与技术研究所(NIST)于1993年12月制定为标准。它完全基于 (a)关系模型唯一创始人EF Codd 博士撰写的早期理论工作;(b)实体关系观,由PP Chen 博士提出;以及 (c) 逻辑数据库设计技术,由 Robert G. Brown 创建。