在进行某学校教务管理系统的数据库设计时,数据库设计人员设计了如下几个关系模式: 系(系号,系名),系号为主码 学生(学号,姓名,所在系号),学号为主码 课程(课程号,课程名,开课系号),课程号为主码 选课(学号,课程号,选课时间),学号和课程号为主码 开发

admin2019-07-07  20

问题 在进行某学校教务管理系统的数据库设计时,数据库设计人员设计了如下几个关系模式:
系(系号,系名),系号为主码
学生(学号,姓名,所在系号),学号为主码
课程(课程号,课程名,开课系号),课程号为主码
选课(学号,课程号,选课时间),学号和课程号为主码
开发人员在将关系模式实施到SQL Server 2008的“教务”数据库时,使用了如下表结构定义语句:
CREATE TABLE 系(
系号 varchar(10) NOT NULL,
    系名 varchar(100)
)
CREATE TABLE学生(
    学号 varchar(50) NOT NULL,
    姓名 varchar(50),
    所在系号 varchar(10)
)
CREATE TABLE课程(
    课程号 varchar(50) NOT NULL,
    课程名 varchar(100),
    开课系号 varchar(10)
)
CREATE TABLE选课(
    学号 varchar(50) NOT NULL,
    课程号 varchar(50) NOT NULL,
    选课时间 datetime
)
在执行如下查询语句时发现执行效率很低:
SELECT * FROM 选课 JOIN 学生 ON 学生.学号 = 选课.学号
JOIN 系 ON 系.系号 = 学生.所在系号
JOIN 课程 ON 课程.课程号 = 选课.课程号
WHERE 系.系号 =′012′
AND convert(varchar(10),选课时间,120) >= ′2010-01-01′
在查找原因时发现建表语句有问题。请指出问题并说明该问题是否会影响此查询语句的执行效率。

选项

答案建表时没有设置主键,也没有说明外键,但不会影响此查询语句的执行效率。

解析 本题中查询语句的功能是得到12系全体学生在2010年1月1日后的选课情况的汇总表。在每个数据表的定义时都必须严格定义表中的完整性约束条件,包括主键的设置,否则之后会出现主键有相同值的情况,破坏了数据的完整性。
转载请注明原文地址:https://jikaoti.com/ti/va37FFFM
0

最新回复(0)