首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >逻辑模型中基数的确定

逻辑模型中基数的确定
EN

Database Administration用户
提问于 2020-10-19 01:29:49
回答 1查看 60关注 0票数 1

如何确定逻辑模型中的基数?

它是基于一个实体的行与另一个实体的关系,还是我们应该考虑实体之间的自然关系,即实体之间的概念关系?

如果我有一个实体课程和一个实体课程类型,那么基数是什么?每门课程只能有一种课程类型。例如,文学士是一门课程类型的单身汉,理科硕士是课程类型的硕士

如果我有课程类型作为课程实体的一部分,那么课程类型将只包含有效课程类型的列表,并且它将是“多对一”(非标识),因为有许多课程可以有一个课程类型。

另一方面,如果我将课程类型实体建模为具有课程ID (外键)和课程类型,那么课程类型与课程类型之间的关系是“一对一”(标识)。

基本上,我想要理解的是,下面哪一个是正确的?

每门课程有一个课程类型或许多课程有一个课程类型

我们应该如何作出这个决定呢?有什么指引吗?

P.S.:我是一个初学者,并且使用Oracle数据建模器

EN

回答 1

Database Administration用户

发布于 2020-10-19 15:40:03

它应该以逻辑为基础。你应该能够用自然语言表达约束。只有在您已经摸索了如何自动使用图表的情况下,ERD才是很棒的。如果还没有,那么使用纯文本编辑器,它比ERD更好、更强大。

对于本例,从两个谓词开始

  1. 课程类型TYP存在。ctype {TYP}
  2. 当然有CRS存在。course {CRS}

以下是一些基于约束的选项:

对于每一门课程,该课程恰好是一门课程类型;

对于每种课程类型,可能有多个课程属于这种类型。

代码语言:javascript
复制
ctype {TYP}
   PK {TYP}


course {CRS, TYP}
    PK {CRS}
    FK {TYP} REFERENCES ctype {TYP}

对于每门课程,该课程可能有多个课程类型;

对于每种课程类型,正好有一门课程属于这种类型。

代码语言:javascript
复制
ctype {TYP, CRS}
   PK {TYP}
   FK {CRS} REFERENCES course {CRS}


course {CRS}
    PK {CRS}

对于每一门课程,该课程恰好是一门课程类型;

对于每种课程类型,正好有一门课程属于这种类型。

代码语言:javascript
复制
course {CRS, TYP}
    PK {CRS}
    AK {TYP}

对于每门课程,该课程最多只有一种课程类型;

对于每种课程类型,可能有多个课程属于这种类型。

代码语言:javascript
复制
ctype {TYP}
   PK {TYP}


course {CRS}
    PK {CRS}


course_ctype {CRS, TYP}
          PK {CRS}

         FK1 {CRS} REFERENCES course {CRS}
         FK2 {TYP} REFERENCES ctype  {TYP}

对于每门课程,该课程可能有多个课程类型;

对于每种课程类型,可能有多个课程属于这种类型。

代码语言:javascript
复制
ctype {TYP}
   PK {TYP}


course {CRS}
    PK {CRS}


course_ctype {CRS, TYP}
          PK {CRS, TYP}

         FK1 {CRS} REFERENCES course {CRS}
         FK2 {TYP} REFERENCES ctype  {TYP}

对于每门课程,该课程可能有多个课程类型;

对于每种课程类型,最多只有一门课程属于这类课程。

代码语言:javascript
复制
ctype {TYP}
   PK {TYP}


course {CRS}
    PK {CRS}


course_ctype {CRS, TYP}
          PK {TYP}

         FK1 {CRS} REFERENCES course {CRS}
         FK2 {TYP} REFERENCES ctype  {TYP}

对于每门课程,该课程最多只有一种课程类型;

对于每种课程类型,最多只有一门课程属于这类课程。

代码语言:javascript
复制
ctype {TYP}
   PK {TYP}


course {CRS}
    PK {CRS}


course_ctype {CRS, TYP}
          PK {CRS}
          AK {TYP}

         FK1 {CRS} REFERENCES course {CRS}
         FK2 {TYP} REFERENCES ctype  {TYP}

注意:

代码语言:javascript
复制
All attributes (columns) NOT NULL

PK = Primary Key
AK = Alternate Key   (Unique)
FK = Foreign Key

一般而言,这一限制的措辞如下:

对于每一个A,即A {is | may be} of {exactly one | more than one | at most one} B;

对于每一个B,{exactly one | more than one | at most one},A,B的{is | may be}

代码语言:javascript
复制
Term                        Range
---------------------------------
is of     exactly one       [1]
is of     at most one       [0,1]
may be of more than one     [0,*]
票数 0
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/278283

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档