建立一个关于系、学生、班级、学会等诸信息的关系数据库。 学生:学号、姓名、出生年月、系名、班号、宿舍区。 班级:班号、专业名、系名、人数、入校年份。 系:系名、系号、系办公地点、人数。 学会:学会名、成立年份、办公地点、人数。 语义如下:一个系有若干专业,每个专业每年只招一个班,每个班有若干学生。一个系的学生住在同 一宿舍区。每个学生可参加若干学会,每个学会有若干学生。学生参加某学会有一个入会年份。 请给出关系模式,写出每个关系模式的极小函数依赖集,指出是否存在传递函数依赖,对于函数依赖左部 是多属性的情况讨论函数依赖是完全函数依赖,还是部分函数依赖。指出各关系模式的候选码、外部码, 有没有全码存在?
时间: 2023-06-27 12:06:19 浏览: 156
关系模式:
学生(学号,姓名,出生年月,系名,班号,宿舍区)
班级(班号,专业名,系名,人数,入校年份)
系(系名,系号,系办公地点,人数)
学会(学会名,成立年份,办公地点,人数)
极小函数依赖集:
学生:
学号→姓名,出生年月,系名,班号,宿舍区
系名→系号,系办公地点,人数
班级:
班号→专业名,系名,人数,入校年份
系名→系号,系办公地点,人数
系:
系名→系号,系办公地点,人数
学会:
学会名→成立年份,办公地点,人数
不存在传递函数依赖。
候选码和外部码:
学生:候选码为学号,外部码为班号和系名
班级:候选码为班号,外部码为系名
系:候选码为系名,外部码为系号
学会:候选码为学会名,外部码为无
全码不存在。
对于学生关系模式中的函数依赖左部是多属性的情况,学号是候选码,因此学号→姓名,出生年月,系名,班号,宿舍区是完全函数依赖,而系名→系号,系办公地点,人数是部分函数依赖,因为系名不能唯一确定系号、系办公地点和人数。
相关问题
建立一个关于系、学生、班级、学会等诸信息的关 系数据库。 描达学生的属性有:学号、姓名、出生年月、系名、班号、宿舍区: 描述班级的属性有:班号、专业名、系名、人数、入校年份:
描述系的属性有:系名、系主任、系办公室电话、系所在楼栋:描述学会的属性有:学会名、负责人、联系电话、成员人数:
建立的关系数据库如下:
学生表:
学号(主键) | 姓名 | 出生年月 | 系名 | 班号 | 宿舍区
班级表:
班号(主键) | 专业名 | 系名 | 人数 | 入校年份
系表:
系名(主键) | 系主任 | 系办公室电话 | 系所在楼栋
学会表:
学会名(主键) | 负责人 | 联系电话 | 成员人数
以上表格中,主键表示该属性在该表中唯一标识一条记录的属性,可以通过该属性来查询、更新或删除记录。在学生表和班级表中,系名是一个外键,表示该属性引用了系表中的系名,表示学生所在的系和班级所在的系。同样,在班级表和学生表中,班号是一个外键,表示该属性引用了班级表中的班号,表示学生所在的班级。在学会表中,负责人是一个外键,表示该属性引用了学生表中的学号,表示负责该学会的学生。
navicat 建立学生表(学号,姓名,出生年月,班级,专业,学院)的代码怎么写
在 Navicat 中,您可以使用以下的 SQL 语句来在数据库中创建一个名为 `student` 的学生表,并定义学号、姓名、出生年月、班级、专业和学院这六个字段:
```sql
CREATE TABLE `student` (
`id` INT(11) NOT NULL COMMENT '学号',
`name` VARCHAR(50) NOT NULL COMMENT '姓名',
`birthday` DATE NOT NULL COMMENT '出生年月',
`class` VARCHAR(50) NOT NULL COMMENT '班级',
`major` VARCHAR(50) NOT NULL COMMENT '专业',
`college` VARCHAR(50) NOT NULL COMMENT '学院',
PRIMARY KEY (`id`)
) ENGINE=INNODB DEFAULT CHARSET=utf8;
```
其中,`id` 字段用来存储学生的学号,是该表的主键。`name` 字段用来存储学生姓名,`birthday` 字段用来存储学生的出生年月,`class` 字段用来存储学生所在的班级,`major` 字段用来存储学生所学专业,`college` 字段用来存储学生所在学院。
您可以在 Navicat 中选择需要的数据库,右键单击该数据库,选择“运行 SQL 文件”,然后将上述 SQL 语句复制到打开的 SQL 文件中,最后点击“运行”按钮,即可创建名为 `student` 的学生表。