1. 设有一教学管理系统,其属性为:学号(S),课程号(C),成绩(G),任课教师(TN),教师所在系(D)。语义如下: (1) 学号和课程号分别与其代表的学生和课程一一对应; (2) 一个学生所修的每门课程都有一个成绩; (3) 每门课程只有一位任课教师,一位教师可以教多门课程; (4) 教师中没有重名,每个教师只属于一个系; 要求如下: (1) 试根据上述语义确定函数依赖集; (2) 如果用上面所有属性组成一个泛关系模式,那么该关系模式为何模式?并说明是否存在4种异常现象; (3) 将写出将该泛关系模式分解为3NF关系模式的过程。
时间: 2024-04-23 08:24:08 浏览: 56
1. 函数依赖集为:
- S -> TN, D
- C -> TN
- S, C -> G
2. 该关系模式为: R(S, C, G, TN, D)
存在4种异常现象:
- 插入异常:如果只想插入一门课程,需要重复输入某个学生的学号和教师所在系;
- 删除异常:如果删除了一门课程,也就意味着删除了某个教师和他所在的系;
- 修改异常:如果修改了一门课程的教师所在系,那么会同时修改该系下所有教师所教授的所有课程的系;
- 查询异常:如果查询某个系的所有教师和他们所教授的课程,需要同时查询学生的学号和成绩,会导致信息冗余和重复。
3. 分解过程如下:
- R1(S, TN, D)
- R2(C, TN)
- R3(S, C, G)
其中,R1和R2都满足BCNF,R3满足3NF。
相关问题
创建一个选修了数据库的学生成绩视图DB_G,其属性包括学号,课程号,成绩
好的,您可以按照以下SQL语句创建DB_G视图:
```SQL
CREATE VIEW DB_G AS
SELECT S.SID, C.CID, SC.Grade
FROM Student S, Course C, SC
WHERE S.SID = SC.SID AND C.CID = SC.CID AND C.CName = '数据库';
```
该视图将会显示选修了数据库课程的学生成绩,包括学号、课程号和成绩。请注意,该视图基于学生表(Student)、课程表(Course)和选课表(SC)的关联查询而创建,在查询中使用了条件C.CName = '数据库'来筛选出选修了数据库课程的学生信息。
MySQL创建实体为选修,属性有学号,课程号,成绩,其中学号和课程号是主键
MySQL创建实体为选修,属性有学号,课程号,成绩,其中学号和课程号是主键的SQL语句如下:
```
CREATE TABLE 选修 (
学号 INT NOT NULL,
课程号 INT NOT NULL,
成绩 INT,
PRIMARY KEY (学号, 课程号)
);
```
解释一下:
- `CREATE TABLE` 用来创建一个新的表。
- `选修` 是表名。
- `学号` 和 `课程号` 是列名,`INT` 表示整数类型,`NOT NULL` 表示该列不能为空。
- `成绩` 是列名,`INT` 表示整数类型,可以为空。
- `PRIMARY KEY` 表示主键,括号里的 `学号` 和 `课程号` 表示联合主键,即这两列的组合是唯一的。