网上玩具订购系统软件设计师模拟试题解析

需积分: 9 34 下载量 188 浏览量 更新于2024-08-01 收藏 1.24MB DOC 举报
"软件设计师模拟试题,包含了数据模式设计类的题目,主要涉及E-R图转换为关系模式、SQL表创建以及SQL查询语句的编写。" 在这套软件设计师模拟试题中,我们可以学习到以下几个重要的知识点: 1. **E-R图转换为关系模式**: E-R图是一种用于数据库设计的概念模型,它描述了实体、属性和实体之间的关系。在这个例子中,我们需要将E-R图转换成关系模式,也就是转化为实际数据库中的表格形式。根据描述,可以得出以下4个关系模式: - Toys(tid, qty-in-stock, year_produced) 主码:tid - Customers(cid, cname, address, cardnum) 主码:cid - Orders(ordernum, cid, orderdate, ship_date) 主码:ordernum - Orderlist(ordernum, tid, qty) 主码:ordernum, tid 其中,外码包括Orders中的cid和Orderlist中的ordernum、tid。 2. **SQL表创建**: 创建Customers表时,我们需要指定各个字段的数据类型、是否允许为空以及设置唯一性约束。根据题目要求,cid为主键,cardnum字段值需要唯一。因此,创建表的SQL语句应该如下: ``` CREATE TABLE Customers ( cid INTEGER NOT NULL, cname CHAR(80) NOT NULL, address CHAR(200), cardnum CHAR(16) NOT NULL UNIQUE, PRIMARY KEY (cid) ); ``` 注意在创建表的时候,我们还需要定义cid为主键,这在括号中用PRIMARY KEY指定。 3. **SQL查询语句编写**: 题目提供了一个不完整的SQL查询语句,目的是找出所有订购了tid为'123-456'玩具的用户,但不显示他们订购这个特定玩具的情况。这是通过使用`NOT EXISTS`子句来实现的。完整的SQL语句应该是: ``` SELECT tid FROM Orderlist A WHERE NOT EXISTS (SELECT * FROM Orders B WHERE A.ordernum = B.ordernum AND B.tid = '123-456') ``` 这个查询首先从Orderlist表中选择tid,然后通过NOT EXISTS子句排除掉那些在Orders表中有tid为'123-456'记录的ordernum。 这些知识点对于理解和设计数据库结构、编写SQL语句至关重要,是软件设计师必须掌握的基础技能。通过类似的模拟试题训练,考生可以提升自己的数据库设计和管理能力,从而在实际工作中更加得心应手。