数据库的课堂讨论(二)

今天,参加数据库线上讨论的问题(每次都得花我好多时间……)

问下面三者的关系,一开始我很懵,没学过 实体型 和 实体集, 因为看的是 浙大的课,而不是人大的课,书也不一样,书里莫得提及这个概念……

实体(Entity)

    客观存在并可相互区别的事物称为实体。可以是具体的人、事、物或抽象的概念。

    例如:学生、学生学号、身高、体重、老师、工资、办公室、教学楼、编程语言、c语言、汇编语言、侦探小说等都是实体

 

实体型(Entity Type)

    用实体名及其属性名集合来抽象和刻画同类实体称为实体型

    个人觉得这 名词的概念 没有明确的界限,学生可以是一个实体、也可以是一个实体型

实体集(Entity Set)

     同一类型实体的集合称为实体集

     这个概念更加抽象,界限也很模糊……

举个例子吧

 

例如,全世界职业比例,

CREATE TABLE instructor(
    total_num bigint,
    profession_name varchar(20) not null unique, 
    primary (profession_name),
    check(total_num>= 0)
);
CREATE TABLE profession(
    ID int,
    name nvarchar(20),
    num bigint,
    check(profession_num >= 0)
    foreign key(name) reference instructor(profession_name);
);

 

    创建的表 中没有定义职业 的详细信息,这时候数据库只需要存储 老师、学生的数量 即可,这时候 老师、学生 内部就没有属性了,这时候的老师、学生就是实体、同属于直接这个实体集或实体型(具体是哪个要结合 实体 间的练习来分析了,代码所示 个人觉得是 实体)

 

    如果,这个 表的定义如下

CREATE TABLE instructor(
    total_num bigint,
    profession_name varchar(20) not null unique, 
    primary (profession_name),
    check(total_num>= 0)
);
CREATE TABLE profession(
    ID int,
    name nvarchar(20),
    num bigint,
    check(profession_num >= 0),
    primary (prfe_ID),
    foreign key(name) reference instructor(profession_name)
);
CREATE TABLE teach(
    name nvarchar(20),
    prfe_ID int,
    work_place nvarchar(20),
    -- 省略详细信息
    foreign key(prfe_ID) reference instructor(ID)
);
CREATE TABLE student(
    name nvarchar(20),
    prfe_ID int,
    study_place nvarchar(20),
    -- 省略详细信息
    foreign key(prfe_ID) reference instructor(ID)
);

    如果把 student 看成实体,那么profession是 实体型 ,所有职业的 抽象体,而实体集就是所有职业的汇总 

    ​如果把 student 内部的属性看成实体, 那么 student 就是实体型,而 student 形成的 students 才是实体集

个人觉得离开具体的表来探讨什么是 实体型 什么是 实体集 无疑是 纸上谈兵,就像于最开始的讨论,什么是数据什么数据语义所说的一样,具体情况需要具体分析,毕竟这些都是逻辑概念,没有实际存储,严格的在物理上进行定义

 

  以上纯属个人观点,如有不当望指正

posted @ 2020-03-01 12:18  秦_殇  阅读(286)  评论(0编辑  收藏  举报