(1)应用程序与数据库之间进行通信的桥梁;
(2)PB对象中最为重要的一个对象,不使用事务对象将无法连接数据库; (3)在应用程序启动时,系统将自动创建一个名为SQLCA的全局事务对象; (4)要在程序中连接多个数据库,则需要自定义事务对象。 45.请简述数据窗口的作用和组成。 ★考核知识点:数据窗口对象 附2.1.45:(考核知识点解释)
(1)数据窗口的作用:快速建立起有关数据库操作的应用程序。 (2)数据窗口的组成:数据窗口控件、数据窗口对象。
(二)、设计题
1、在图书销售数据库中,有一个表1所示的图书销售表(书号和顾客号共同作为主码),请指出该表可能存在的问题,并根据3NF对该表进行分解,设计出符合3NF要求的关系模式。要求写出设计步骤。
表1 图书销售表
列名 书号 书名 书类 库存 售出 单价 顾客号 顾客名 顾客电话 图书的编号 图书的名称 图书的分类 图书的库存量 图书的售出量 图书的单价 顾客的编号 顾客的姓名 顾客的联系电话 描述 订购日期 订购数量 顾客订购某本图书的日期 顾客订购某本图书的数量 可能存在的问题: (1)数据库冗余度较大
一本书可能销售多次,则每销售一次图书销售表中都会重复一遍图书信息;一名顾客可能购买多次,则每购买一次图书销售表中都会重复一遍顾客信息。 (2)插入异常
有一种新书,还没有顾客购买,此时会由于顾客号不能为空而无法将该书信息插入到图书销售表中。 (3)删除异常
一本书仅有一名顾客购买,如果该顾客退货,则会由于没有顾客购买该书导致删除销售记录的同时也会将这本书的信息也删除。 分解步骤:
(1)表1所示关系中,书名、书类、库存、售出和单价只依赖于书号,与顾客号无关;顾客名、顾客电话只依赖于顾客号,与书号无关;订购日期和订购数量则与书号和顾客号都有关。因此,根据2NF的要求(关系中不能有部分函数依赖于主码的非主属性),可以将表1分解为3个关系: 图书(书号, 书名, 书类, 库存, 售出, 单价) 顾客(顾客号, 顾客名, 顾客电话) 订购(顾客号, 书号, 订购日期, 订购数量)
(2)根据3NF的要求(关系中不能有传递依赖于主码的非主属性),对步骤(1)中分解得到的3个关系进行检查,可以看到这3个关系中均不存在传递依赖于主码的非主属性,因此,最后设计的符合3NF的关系即为步骤(1)中分解得到的3个关系。
★考核知识点:关系模式的规范化(参见P38-39)
(三)、SQL题
表1 供应商表S
主码 P 列标题 供应商代码 列名 SNO 数据类型 Char 宽度 2 小数位数 是否空值 No
供应商姓名 所在城市 SNAME CITY Varchar Varchar 表2 零件表J
8 8 No No 主码 P 列标题 零件编码 零件名 颜色 重量 列名 JNO JNAME COLOR WEIGHT 数据类型 Char Varchar Varchar Int 表3 工程表P
宽度 2 8 4 小数位数 是否空值 No No Yes Yes 主码 P 列标题 工程代码 工程名 所在城市 列名 PNO PNAME CITY 数据类型 Char Varchar Varchar 宽度 2 8 8 小数位数 是否空值 No No Yes 表4 供应情况表SPJ
主码 P 列标题 供应商代码 工程代码 零件代码
零件数量 列名 SNO PNO JNO QTY 数据类型 Char Char Char Int 宽度 2 2 2 小数位数 是否空值 No No No No 表1-表4是下列题目中用到的4个表,请根据题目要求写出对应的SQL语句。 (1)创建名为“供应信息”的数据库; 参考答案:
CREATE DATABASE 供应信息;
(2)将数据库的名称由“供应信息”改为“供应信息管理”; 参考答案:
ALTER DATABASE 供应信息 MODIFY NAME=供应信息管理; (3)创建供应商表S; 参考答案: CREATE TABLE S
(
SNO
char(2) PRIMARY KEY NOT NULL,
NOT NULL, NOT NULL
SNAME varchar(8) CITY
varchar(8)
);
(4)创建零件表J; 参考答案: CREATE TABLE J
( );
JNO char(2) PRIMARY KEY NOT NULL, JNAME varchar(8) COLOR varchar(4) WEIGHT int
NOT NULL,
NULL,
NULL
(5)创建工程表P; 参考答案: CREATE TABLE P
( );
PNO
char(2) PRIMARY KEY NOT NULL,
NOT NULL, NULL
PNAME varchar(8) CITY
varchar(8)
(6)创建供应情况表SPJ,其中供应商代码、工程代码和零件代码分别为供应商表S、工程表P和零件表J的外码; 参考答案: CREATE TABLE SPJ
( );
SNO PNO JNO
char(2) char(2) char(2)
NOT NULL, NOT NULL, NOT NULL,
QTY int NOT NULL,
PRIMARY KEY(SNO, PNO, JNO)
CONSTRAINT PRI_KEY
(7)为零件表J增加一列:
列标题 零件描述 参考答案: ALTER TABLE J
ADD JDESC varchar(100) NULL; 列名 JDESC 数据类型 宽度 Varchar 100 小数位数 是否空值 Yes (8)从零件表中删除(7)中添加的JDESC列; 参考答案: ALTER TABLE J
DROP COLUMN JDESC;
(9)为供应商表S中的CITY列建立一个名为“城市索引”的非聚集索引,并且记录按CITY列值的降序排列; 参考答案:
CREATE NONCLUSTERED INDEX 城市索引 ON S (CITY DESC); (10)删除供应商表S中建立的“城市索引”; 参考答案:
DROP INDEX S.城市索引;
(11)根据表5-表8向4个表中插入记录(只需写出在每个表中插入第一条记录时所使用的SQL语句);
表5 供应商表S
SNO S1 S2 S3 S4 S5
表6 零件表J
JNO J1 J2 JNAME 螺母 螺栓 COLOR 红 绿 WEIGHT 15 18 SNAME 东丰 光华 昌盛 隆泰胜 胜利 CITY 天津 北京 北京 上海 天津