当前位置:文档之家› VF二级培训讲义SQL查询、查询设计器、SQL数据表的操作、视图设计器

VF二级培训讲义SQL查询、查询设计器、SQL数据表的操作、视图设计器

VF二级培训讲义SQL查询、查询设计器、SQL数据表的操作、视图设计器
VF二级培训讲义SQL查询、查询设计器、SQL数据表的操作、视图设计器

VF二级培训讲义-(SQL查询、查询设计器、SQL数据表的操作、视图设计器)

————————————————————————————————作者:————————————————————————————————日期:

第三部分关系数据库标准语言S Q L

一、SQL概述

1.1 SQL的概念:SQL(Structured Query Language)是结构化查询语言的简称,它引领着关系数据库的发展方

向,是未来关系数据库发展的标准。

1.2 SQL的特点:

◆一体化

◆高度非过程化

◆非常简洁

◆直接以命令方式交互使用

1.3 SQL的主要命令:

◆数据查询:SELECT

◆数据定义:CREATE、DROP、ALTER

◆数据操纵:INSERT、UPDATE、DELETE

二、使用命令建立SQL查询

2.1查询的概念:查询是从指定的表或视图中提取满足条件的记录,然后按照想得到的输出类型定向输出查询

结果。

2.2 SQL查询语句格式:

◆SELECT :要查询的数据(字段)

◆FROM :数据来源(要查询的数据来自哪个或哪些表)

◆WHERE :查询需要满足的条件

◆GROUP BY :对查询的数据进行分组

◆ORDER BY :对查询结果进行排序

2.3 SQL简单查询:

1.在当前数据库当前表中查询某一数据

基本格式:SELECT Select_Item FROM Table

其中:Select_Item:字段名列表Table:数据表名称

例题2.1:从职工关系中检索所有工资值。

实现语句:SELECT 工资 FROM 职工

2.在指定数据库指定表中查询某一数据

基本格式:SELECT [Alias.]Select_Item FROM [DatabaseName!]Table

例题2.2:从订货管理数据库中的职工数据表中检索所有工资值。

实现语句:SELECT 职工.工资 FROM 订货管理数据库!职工

3.在当前数据库当前表中查询所有数据

基本格式:SELECT * FROM Table

例题2.3:从当前数据库中当前数据表中检索所有数据。

实现语句:SELECT * FROM 职工

4.在当前数据库当前表中查询所有数据(不允许内容重复)

基本格式:SELECT[ALL | DISTINCT]Select_Item FROM Table

例题2.4:从当前数据库中当前数据表中检索所有不重复

...的工资数据。

实现语句:SELECT DISTINCT工资 FROM 职工

5.在当前数据库当前表中进行条件查询

基本格式:SELECT Select_Item FROM Table WHERE JoinCondition

例题2.5:在当前数据库当前表中,查询工资大于1210元职工的仓库号

Select 仓库号 from 职工 where 工资>1210

实现语句:SELECT 仓库号 FROM 职工 WHERE 工资>1210

例题2.6:查询在仓库“WH1”或“WH2”工作,并且工资少于1250元的职工工号

实现语句:SELECT 职工号 FROM 职工 WHERE 工资<1250 AND (仓库号=”WH1”OR仓库号=”WH2”)

完整格式:

SELECT[ALL|DISTINCT][Alias.]Select_Item |* FROM[DatabaseName!]Table [WHERE JoinCondition]

2.4 SQL联接查询:

联接查询的含义:联接查询是一种基于多个关系的查询,即将多个数据表中数据构成一个查询集合,并在其中查询出符合要求的记录。

例题2.7:找出工资多于1230元的职工号和他们所在的城市。

实现语句:SELECT 职工号,城市 FROM 职工,仓库 WHERE 工资>1230 AND (职工.仓库号=仓库.仓库号) 特别注意:

◆职工.仓库号=仓库.仓库号是连接条件

◆如果在FROM之后有两个关系,则这两个关系之间肯定有一种联系,否则无法构成检索表达式

例题2.8:找出工作在面积大于400的仓库的职工号以及这些职工工作所在的城市。

实现语句:SELECT 职工号,城市 FROM 职工,仓库 WHERE 面积>400 AND (职工.仓库号=仓库.仓库号)

2.5 SQL嵌套查询:

例题2.9:哪些城市至少有一个仓库的职工工资为1250元?

实现语句:SELECT 城市 FROM 仓库 WHERE 仓库号 in (SELECT 仓库号 FROM 职工 WHERE 工资=1250)

例题2.10:查询所有职工的工资都多于

...1210元的仓库信息。

实现语句:SELECT * FROM 仓库 WHERE 仓库号 NOT IN (SELECT 仓库号 FROM 职工 WHERE 工资<=1210)

例题2.11:找出和职工E4挣同样工资的所有职工。

实现语句:SELECT 职工号 FROM 职工 WHERE 工资=(SELECT 工资 FROM 职工 WHERE 职工号=”E4”)

2.6 SQL几个特殊运算符:

◆BETWEEN…AND:…和…之间

◆LIKE:字符串匹配运算符

例题2.12:检索出工资在1220元到1240元范围内的职工信息。

实现语句:SELECT * FROM 职工 WHERE 工资 BETWEEN 1220 AND 1240

例题2.13:从供应商关系中检索出全部公司的信息,不要工厂或其他供应商的信息。

实现语句:SELECT * FROM 供应商 WHERE 供应商名 LIKE “%公司”

通配符:

◆% :表示任意多个字符(含0个)

◆_ :表示一个字符

2.7 SQL排序:

基本格式:ORDER BY Order_Iten[ASC|DESC][,Order_Iten[ASC|DESC]…]

例题2.14:按职工的工资值升序检索出全部职工信息。

实现语句:SELECT * FROM 职工 ORDER BY 工资

注意:默认为升序

例题2.15:先按仓库号排序,再按工资排序并输出全部职工信息。

实现语句:SELECT * FROM 职工 ORDER BY 仓库号,工资

2.8 SQL计算查询:

1.用于检索的函数:

COUNT()—计数SUM()—求和AVG()—计算平均值 MAX()—求最大值 MIN()—求最小值

2.例子:

例题2.16:找出供应商所在地的数目。

实现语句:SELECT COUNT(DISTINCT 地址) FROM 供应商

例题2.17:求出供应商数据表中记录数目。

实现语句:SELECT COUNT(*) FROM 供应商

例题2.18:求支付的工资总数。

实现语句:SELECT SUM(工资) FROM 职工

例题2.19:求北京和上海的仓库职工的工资总和。

实现语句:SELECT SUM(工资) FROM 职工 WHERE 仓库号IN(SELECT 仓库号 FROM 仓库 WHERE 城市=”北京” OR 城市=”上海”)

例题2.20:求所有职工的工资都多于1210元的仓库的平均面积。

实现语句:SELECT AVG(面积) FROM 仓库 WHERE 仓库号NOT IN(SELECT 仓库号 FROM 职工 WHERE 工资<=1210)

例题2.21:求在WH2仓库工作的职工的最高工资值。

实现语句:SELECT MAX(工资) FROM 职工 WHERE 仓库号=”WH2”

2.9 SQL分组与计算查询:

基本格式:GROUP BY GroupColumn [,GroupColumn…]

例题2.22:求每个仓库的职工的平均工资。

实现语句:SELECT 仓库号,AVG(工资) FROM 职工GROUP BY仓库号

2.10 SQL的几个特殊选项:

1.将查询结果存放到数组中:

语句格式:INTO ARRAY ArrayName

例题:将查询到的职工放到数组TEMP中。 SELECT * FROM 职工INTO ARRAY temp

2.将查询结果存放到临时文件中

语句格式:INTO CURSOR CursorName

临时文件是一只读的DBF文件,可以像一般的DBF文件一样使用,但只读。当关闭该文件时该文件会自动删除。

例题:将查询到的职工放到DBF文件TEMP中。 SELECT * FROM 职工INTO CURSOR temp

3.将查询结果存放到永久表中

语句格式:INTO DBF|TABLE TableName

例题:将查询到的职工放到DBF文件TEMP中。 SELECT * FROM 职工INTO DBF temp

4.将查询结果存放到文本文件中

语句格式:TO FILE FileName

例题:将查询到的职工放到文本文件TEMP中。 SELECT * FROM 职工TO FILE temp

5.将查询结果直接输出到打印机中

语句格式:TO PRINT [PROMPT]

例题:SELECT * FROM 职工TO PRINT

三、利用查询设计器查询

3.1查询设计器:

1.建立查询的方法:

◆使用“项目管理器”建立查询;

◆使用“新建”对话框建立查询;

◆使用命令CREATE QUERY命令建立查询;

◆通过直接编辑.qpr文件建立。

2.查询设计器:

◆字段:选择需要显示的字段;

◆联接:编辑联接条件;

◆筛选:指定查询条件;

◆排序依据:用于指定排序字段;

◆分组依据:用于分组;

◆杂项:指定是否要重复记录及列在前面的记录,与DISTINCT及TOP对应。

3.2查询设计器的局限性:利用查询设计器不能够设计出所有的查询,如:嵌套查询、查询去向到数组等。

3.3运行查询:

1.查询运行方法:

◆使用“项目管理器”运行;

◆使用命令运行:

格式:DO QueryFile

注意:使用命令运行查询时,必须给出查询文件的扩展名qpr,如:DO abc.qpr

如果不给出扩展名(DO abc),VFP将把命令解释为 DO abc.prg,即执行程序文件。

2.查询去向:

◆浏览:在“浏览(BROWSE)”窗口显示;

◆临时表:命名的临时文件;

◆表:命名表;

◆图形:统计图;

◆屏幕:屏幕直接输出(类似LIST);

◆报表:报表文件.frx

◆标签:标签文件.lbx

四、数据表记录的SQL操作:

4.1 插入:

标准格式:INSERT INTO dbf_name[(fname1[,fname2,…])]VALUES(eExoression1[,eExoression2,…])

VFP特殊格式:INSERT INTO dbf_name FROM ARRAY ArrayName|FROM MEMVAR

例题4.1:往订购单关系中插入元组(”E7”,”S4”,”OR01”,2001/05/25)。

实现语句:INSERT INTO订购单VALUE(”E7”,”S4”,”OR01”,{^2001-05-25})

例题4.2:往订购单关系中插入元组(”E7”,”OR01”)。

实现语句:INSERT INTO订购单(职工号,订购单号) VALUE(”E7”,”OR01”)

注意:

◆用INSERT命令在数据表中插入数据时,该数据表事先可以不必打开;

◆当数据表设置了“主索引”或“候选索引”时,不能用以前的INSERT与APPEND来添加记录,只能使

用INSERT INTO添加。(实际有出入)

4.2 更新:

格式:

UPDATE TableName SET Column_Name1=eExoression1[,Column_Name2=eExoression2…] [WHERE Condition]

例题3.4:给WH1仓库的职工提高10%的工资。

实现语句:UPDATE 职工SET 工资=工资+工资*0.1 WHERE 仓库号=”WH1”

等价语句:replace工资 with工资*1.1 for仓库号=”WH1”

4.3 删除:

格式:DELETE FROM TableName[WHERE Condition]

例题3.5:删除仓库关系中仓库号值是WH2的元组。

实现语句:DELETE FROM 仓库WHERE 仓库号=”WH2”

注意:在VFP中,SQL DELETE命令同样是逻辑删除,如果要物理删除记录同样需要使用PACK命令。

五、数据表结构的SQL操作:

5.1 表定义:

1.建立数据表简单操作

基本格式:CREATE TABLE|DBF TableName [Name LongTableName] | [FREE]

(FieldName1 FieldType[(nFieldWidth[,nPrecision])]…)

其中:TableName:新建数据表的表名称

FieldName :字段名

FieldType :用字母表示的字段类型

NFieldWidth:字段总宽度

NPrecision:小数位数

FREE:建立自由表

例题5.1:用SQL命令建立“订货管理1”数据库,然后建立“仓库1”数据表。

实现语句:CREATE DATABASE订货管理1

CREATE TABLE 仓库1 (仓库号 C(5),城市 C(10),面积 I)

2.数据表字段有效性

...设置方法

基本格式:CREATE TABLE|DBF TableName1 [Name LongTableName] [FREE]

(FieldName1 FieldType[(nFieldWidth[,nPrecision])]

[CHECK lExpression [ERROR cMessageText1]]…)

例题5.2:用SQL命令建立“订货管理1”数据库,然后建立“仓库1”数据表,并定义面积字段的有效性规则为[面积必须大于0]。

实现语句:CREATE DATABASE 订货管理1

CREATE TABLE 仓库1 (仓库号 C(5),城市 C(10),面积 I ;

CHECK(面积>0) ERROR “面积必须大于0”)

3.数据表字段默认值

...设置方法

基本格式:CREATE TABLE|DBF TableName1 [Name LongTableName] [FREE]

(FieldName1 FieldType[(nFieldWidth[,nPrecision])]

[DEFAULT eExpression] …)

例题5.3:建立数据表“仓库1”,并将“仓库1”数据表的“面积”字段的默认值设置为200。

实现语句:CREATE TABLE 仓库1(仓库号 C(5),城市 C(10),面积 I DEFAULT 200)

4.数据表字段主关键字或候选索引

.........设置方法

基本格式:CREATE TABLE|DBF TableName1 [Name LongTableName] [FREE]

(FieldName1 FieldType[(nFieldWidth[,nPrecision])]

[PRIMARY KEY | UNIQUE] …) 注意:UNIQUE在此处是候选索引

例题5.4:建立数据表“仓库1”,并将“仓库号”字段设置为主关键字。

实现语句:CREATE TABLE 仓库1(仓库号 C(5) PRIMARY KEY,城市 C(10),面积 I)

5.2 表删除:

基本格式:DROP TABLE | DBF TableName

例题5.5:删除数据表“仓库1”。

实现语句:DROP TABLE 仓库1

5.3 表结构修改:

1.添加新字段、修改已有字段并设置字段级

...相关规则:

基本格式:

ALTER TABLE TableName ADD|ALTER[COLUMN]FieldName FieldType[(nFieldWidth[,nPrecision])] [NULL | NOT NULL] &&字段是否允许为空

[CHECK lExpression[ERROR cMessageText]] &&设置字段的有效性规则

[DEFAULT eExpression] &&设置字段的有效性规则

[PRIMARY KEY | UNIQUE]&&设置字段索引类型

例题5.6:为订购单1表增加一个货币类型的总金额字段。

实现语句:ALTER TABLE 订购单1 ADD 总金额 Y CHECK 总金额>0 ERROR “总金额应该大于0”

例题5.7:将订购单1表的订购单号字段的宽度由原来的5改为6。

实现语句:ALTER TABLE 订购单1 ALTER订购单号 C(6)

2.定义、修改、删除字段级

...有效性规则和默认值定义:

基本格式:

ALTER TABLE TableName ALTER [COLUMN] FieldName NULL | NOT NULL&&字段是否允许为空

ALTER TABLE TableName ALTER [COLUMN] FieldName SET CHECK lExpression[ERROR cMessageText]

&&设置字段的有效性规则ALTER TABLE TableName ALTER [COLUMN] FieldName DROP CHECK&&删除字段的有效性规则ALTER TABLE TableName ALTER [COLUMN] FieldName SET DEFAULT eExpression

&&设置字段的默认值ALTER TABLE TableName ALTER [COLUMN] FieldName DROP DEFAULT&&删除字段的默认值

例题5.8:修改(定义)总金额字段的有效性规则。

实现语句:ALTER TABLE 订购单1 ALTER总金额SET CHECK 总金额>100 ERROR “总金额应该大于100”

例题5.9:删除总金额字段的有效性规则。

实现语句:ALTER TABLE订购单1 ALTER总金额DROP CHECK

3.删除字段、修改字段名,定义、修改、删除表一级

...的有效性规则:

基本格式:

ALTER TABLE TableName DROP [COLUMN]FieldName&&删除字段

ALTER TABLE TableName RENAME[COLUMN]FieldName1TO FieldName2&&修改字段名

ALTER TABLE TableName SET CHECK lExpression[ERROR cMessageText]&&设置表的有效性规则

ALTER TABLE TableName DROP CHECK&&删除表的有效性规则例题5.10:将订购单1表的总金额字段名改为金额。

实现语句:ALTER TABLE订购单1 RENAME 总金额TO金额

例题5.11:删除订购单1金额字段。

实现语句:ALTER TABLE订购单1 DROP金额

六、视图:

6.1 视图的命令操作:

1.视图的定义格式:

格式:CREATE VIEW ViewName AS SelectStatement

其中:SelectStatement:查询语句,用于限定视图中的数据

2.从单个表派生出视图:构成视图的内容来源于单个表。

例题6.1:利用“职工”数据表,建立包含职工号与仓库号的视图。

实现语句:CREATE VIEW ew AS SELECT 职工号,仓库号 FROM 职工

注:视图一旦定义,就可以和基本表一样进行各种查询与修改。

3.从多个表派生出视图:

例题6.2:利用“职工”和“仓库”数据表,建立包含职工号、仓库号、城市、面积、工资的视图。

实现语句:CREATE VIEW ew AS;

SELECT 职工号,职工.仓库号,城市,面积,工资 FROM 职工,仓库 WHERE 仓库.仓库号=职工.仓库号注:视图一旦定义,就可以和基本表一样进行各种查询与修改。

4.删除视图:

基本格式:DROP VIEW ViewName

例题6.3:删除视图ew。

实现语句:DROP VIEW dw

5.关于视图的说明:

◆视图可以更新;

◆视图不含真正的数据,仅是原表的一个窗口;

◆在视图中可以进行查询操作,但视图的插入、更新操作有一定的限制;

◆如果一个视图来源于单个表,则可以进行插入与更新操作,不能进行删除操作;

◆如果一个视图来源于多个表,则插入、更新与删除操作都不能进行。

◆可以从一个表或多个相关联的表中提取有用信息;

◆可以用来更新表,并将结果永久保存在磁盘上;

◆只有在包含视图的数据库打开时,才能使用视图。

6.2 建立视图:

1.建立视图的方法:

◆使用“项目管理器”建立视图;

◆使用“新建”对话框建立视图;

◆使用命令CREATE VIEW命令打开视图设计器建立视图;

◆通过直接使用命令CREATE VIEW … AS…建立。

2.视图设计器与查询设计器的区别:

◆视图建立后直接保存在数据库中,在磁盘上没有相应文件,查询要形成.qpr文件;

◆视图可以更新,查询不能更新(除非重新查询);

◆查询有“查询去向”,视图没有。

6.3 视图的分类:

◆本地视图:使用当前数据库中的表建立的视图。

◆远程视图:使用非当前数据库中的表建立的视图。

数据库课后题答案 第7章 数据库设计

第7章数据库设计 1.试述数据库设计过程。 答:这里只概要列出数据库设计过程的六个阶段:( l )需求分析;( 2 )概念结构设计;( 3 )逻辑结构设计;( 4 )数据库物理设计;( 5 )数据库实施;( 6 )数据库运行和维护。这是一个完整的实际数据库及其应用系统的设计过程。不仅包括设计数据库本身,还包括数据库的实施、运行和维护。设计一个完善的数据库应用系统往往是上述六个阶段的不断反复。 2 .试述数据库设计过程各个阶段上的设计描述。 答:各阶段的设计要点如下:( l )需求分析:准确了解与分析用户需求(包括数据与处理)。( 2 )概念结构设计:通过对用户需求进行综合、归纳与抽象,形成一个独立于具体DBMS 的概念模型。( 3 )逻辑结构设计:将概念结构转换为某个DBMS 所支持的数据模型,并对其进行优化。( 4 )数据库物理设计:为逻辑数据模型选取一个最适合应用环境的物理结构(包括存储结构和存取方法)。( 5 )数据库实施:设计人员运用DBMS 提供的数据语言、工具及宿主语言,根据逻辑设计和物理设计的结果建立数据库,编制与调试应用程序,组织数据入库,并进行试运行。( 6 )数据库运行和维护:在数据库系统运行过程中对其进行评价、调整与修改。 3 .试述数据库设计过程中结构设计部分形成的数据库模式。 答:数据库结构设计的不同阶段形成数据库的各级模式,即:( l )在概念设计阶段形成独立于机器特点,独立于各个DBMS 产品的概念模式,在本篇中就是 E 一R 图;( 2 )在逻辑设计阶段将 E 一R 图转换成具体的数据库产品支持的数据模型,如关系模型,形成数据库逻辑模式,然后在基本表的基础上再建立必要的视图( Vi 娜),形成数据的外模式;( 3 )在物理设计阶段,根据DBMS 特点和处理的需要,进行物理存储安排,建立索引,形成数据库内模式。 4 .试述数据库设计的特点。 答:数据库设计既是一项涉及多学科的综合性技术又是一项庞大的工程项目。其主要特点有:( l )数据库建设是硬件、软件和干件(技术与管理的界面)的结合。( 2 )从软件设计的技术角度看,数据库设计应该和应用系统设计相结合,也就是说,整个设计过程中要把结构(数据)设计和行为(处理)设计密切结合起来。 5 .需求分析阶段的设计目标是什么?调查的内容是什么? 答:需求分析阶段的设计目标是通过详细调查现实世界要处理的对象(组织、部门、企业等),充分了解原系统(手工系统或计算机系统)工作概况,明确用户的各种需求,然后在此基础上确定新系统的功能。调查的内容是“数据’夕和“处理”,即获得用户对数据库的如下要求:( l )信息要求,指用户需要从数据库中获得信息的内容与性质,由信息要求可以导出数据要求,即在数据库中需要存储哪些数据;( 2 )处理要求,指用户要完成什么处理功能,对处理的响应时间有什么要求,处理方式是批处理还是联机处理;( 3 )安全性与完整性要求。 6 .数据字典的内容和作用是什么? 答:数据字典是系统中各类数据描述的集合。数据字典的内容通常包括:( l )数据项;( 2 )数据结构;( 3 )数据流;( 4 )数据存储;( 5 )处理过程五个部分。其中数据项是数

结构设计常用数据表格

建筑结构安全等级 2 纵向受力钢筋混凝土保护层最小厚度(mm) 不同根数钢筋计算截面面积(mm2)

板宽1000mm内各种钢筋间距时钢筋截面面积表(mm2) 每米箍筋实配面积 钢筋混凝土结构构件中纵向受力钢筋的最小配筋百分率(%) 框架柱全部纵向受力钢筋最小配筋百分率(%)

框架梁纵向受拉钢筋的最小配筋白分率(%) 柱箍筋加密区的箍筋最小配箍特征值λν(ρν=λνf/f)

受弯构件挠度限值 注:1 表中lo为构件的计算跨度; 2 表中括号内的数值适用于使用上对挠度有较高要求的构件; 3 如果构件制作时预先起拱,且使用上也允许,则在验算挠度时,可将计算所得的挠度值减去起拱值;对预应力混凝土构件,尚可减去预加力所产生的反拱值; 4 计算悬臂构件的挠度限值时,其计算跨度lo按实际悬臂长度的2倍取用。

注: 1 表中的规定适用于采用热轧钢筋的钢筋混凝土构件和采用预应力钢丝、钢绞线及热处理钢筋的预应力混凝土构件;当采用其他类别的钢丝或钢筋时,其裂缝控制要求可按专门标准确定; 2 对处于年平均相对湿度小于60%地区一类环境下的受弯构件,其最大裂缝宽度限值可采用括号内的数值; 3 在一类环境下,对钢筋混凝土屋架、托架及需作疲劳验算的吊车梁,其最大裂缝宽度限值应取为0.2mm;对钢筋混凝土屋面梁和托梁,其最大裂缝宽度限值应取为0.3mm; 4 在一类环境下,对预应力混凝土屋面梁、托梁、屋架、托架、屋面板和楼板,应按二级裂缝控制等级进行验算;在一类和二类环境下,对需作疲劳验算的须应力混凝土吊车梁,应按一级裂缝控制等级进行验算; 5 表中规定的预应力混凝土构件的裂缝控制等级和最大裂缝宽度限值仅适用于正截面的验算;预应力混凝土构件的斜截面裂缝控制验算应符合本规范第8章的要求; 6 对于烟囱、筒仓和处于液体压力下的结构构件,其裂缝控制要求应符合专门标准的有关规定; 7 对于处于四、五类环境下的结构构件,其裂缝控制要求应符合专门标准的有关规定; 8 表中的最大裂缝宽度限值用于验算荷载作用引起的最大裂缝宽度。 梁内钢筋排成一排时的钢筋最多根数

进销存数据库表结构设计

1.帐类表(KIND) 无索引 序号中文名称英文名称类型备注 1 帐类编号K_SERIAL byte 2 帐类名称K_NAME text*10 本表系统自动建立,共划分为15种帐类,不可增删 帐类编号帐类名称备注 0 上期结存进货,不参加进货统计 1 购入进货,购入时必需输入供货单位名称 2 自制进货 3 投资转入进货 4 盘盈进货 5 领料出库,领料必需输入领料部门名称 6 调拨出库 7 报损出库 8 盘亏出库 9 退库对低值易耗品,在用品退为在用库存 10 直接报废对于低值易耗品,在用品转报废 11 领用对于低值易耗品,在用库存转在用 12 调拨对于低值易耗品,在用库存减少 13 报废对于低值易耗品,在用库存报废 14 直进直出进出库,购入与领料对库存无影响 2.物品表(GOODS) 序号索引名称索引域唯一? 主索引? 1 G_CODING +G_CODING Y N 2 G_SERIAL +G_SERIAL Y Y 序号中文名称英文名称类型备注 1 物品内部编号G_SERIAL INT->long 系统内部唯一标识该物品 2 物品编号G_CODING TEXT * 10 用户使用此编号访问物品 &3 物品名称G_NAME TEXT*40 非空 &4 物品单位G_UNIT TEXT*8 非空 &5 物品规格G_STATE TEXT*20

6 物品类别G_CLASS INT 取自表CLASS 7 备注G_REMARKS MEMO 8 最小库存量G_MIN CURRENCY 为零,即无最小库存 9 最大库存量G_MAX CURRENCY 为零,即无最大库存 10 库存数量G_QUANT CURRENCY 控制出库数量 11 虚拟库存数量G_VQUANT CURRENCY 出库时用 12 库存金额G_AMOUNT CURRENCY 3.类别表(CLASS) 序号索引名称索引域唯一? 主索引? 1 C_CODING +C_CODING Y N 2 C_SERIAL +C_SERIAL Y Y 序号中文名称英文名称类型备注 1 类别内部序号C_SERIAL INT 系统内部唯一标识该物品 2 类别编号C_CODING TEXT *10 用户使用该编号访问类别信息 3 类别名称C_NAME TEXT*20 非空 4 出库类型C_KIND BYTE 1.移动平均 2..先进先出 3.后进先出 4.实际计价 *5.月末平均 5 备注C_REMARKS MEMO *6 底标志C_BOTTOM BOOLEAN *7 类别级别C_LEVEL BYTE 4.供货单位、使用部门(DEPART) 序号索引名称索引域唯一? 主索引? 1 D_CODING +D_CODING Y N 2 D_SERIAL +D_SERIAL Y Y 序号中文名称英文名称类型备注 1 内部序号D_SERIAL INT 系统内部唯一标识该部门 >0 供货单位 =0 库房 <0 使用部门 2 单位编号D_CODING TEXT*10

结构设计常用数据表格

建筑结构安全等级 混凝土强度设计值(N/mm2) 纵向受力钢筋混凝土保护层最小厚度(mm) 每米箍筋实配面积 钢筋混凝土结构构件中纵向受力钢筋的最小配筋百分率(%)

框架柱全部纵向受力钢筋最小配筋百分率(%) 框架梁纵向受拉钢筋的最小配筋白分率(%) 柱箍筋加密区的箍筋最小配箍特征值λν(ρν=λνf)

注:1 表中lo为构件的计算跨度; 2 表中括号内的数值适用于使用上对挠度有较高要求的构件; 3 如果构件制作时预先起拱,且使用上也允许,则在验算挠度时,可将计算所得的挠度值减去起拱值;对预应力混凝土构件,尚可减去预加力所产生的反拱值; 4 计算悬臂构件的挠度限值时,其计算跨度lo按实际悬臂长度的2倍取用。

注: 1 表中的规定适用于采用热轧钢筋的钢筋混凝土构件和采用预应力钢丝、钢绞线及热处理钢筋的预应力混凝土构件;当采用其他类别的钢丝或钢筋时,其裂缝控制要求可按专门标准确定; 2 对处于年平均相对湿度小于60%地区一类环境下的受弯构件,其最大裂缝宽度限值可采用括号内的数值; 3 在一类环境下,对钢筋混凝土屋架、托架及需作疲劳验算的吊车梁,其最大裂缝宽度限值应取为0.2mm;对钢筋混凝土屋面梁和托梁,其最大裂缝宽度限值应取为0.3mm; 4 在一类环境下,对预应力混凝土屋面梁、托梁、屋架、托架、屋面板和楼板,应按二级裂缝控制等级进行验算;在一类和二类环境下,对需作疲劳验算的须应力混凝土吊车梁,应按一级裂缝控制等级进行验算; 5 表中规定的预应力混凝土构件的裂缝控制等级和最大裂缝宽度限值仅适用于正截面的验算;预应力混凝土构件的斜截面裂缝控制验算应符合本规范第8章的要求; 6 对于烟囱、筒仓和处于液体压力下的结构构件,其裂缝控制要求应符合专门标准的有关规定; 7 对于处于四、五类环境下的结构构件,其裂缝控制要求应符合专门标准的有关规定; 8 表中的最大裂缝宽度限值用于验算荷载作用引起的最大裂缝宽度。 梁内钢筋排成一排时的钢筋最多根数

数据库结构设计

一、数据库结构设计步骤 二、需求分析 三、概念结构设计 四、逻辑结构设计 五、数据库物理设计 数据库结构设计 一、数据库结构设计步骤 一般可将数据库结构设计分为四个阶段,即需求分析、概念结构设计、逻辑结构设计和物理设计。 下面各节分别介绍各阶段设计内容和具体方法。 二、需求分析 需求分析的任务是具体了解应用环境,了解与分析用户对数据和数据处理的需求,对应用系统的性能的要求,提出新系统的目标,为第二阶段、第三阶段的设计奠定基础。一般需求分析的操作步骤如下所述。 1.了解组织、人员的构成 子系统的划分常常以现有组织系统为基础,再进行整合,而新系统首先必须达到的目的是尽可能地完成当前系统中有关信息方面的工作,在原有系统中,信息处理总是由具体人来实施的。我们要了解组织结构情况、相互之间信息沟通关系、数据(包括各种报告、报表、凭证、单据)往来联系情况。 具体弄清各个数据的名称,产生的时间与传递所需时间与周期,数据量的大小,所涉及(传送)的范围,使用数据的权限要求,数据处理过程中容易发生的问题及其影响,各个部门所希望获得的数据的情况等。 然后了解每个人对每一具体数据处理的过程,基本数据元素来源于哪些地方、获取的途径、处理的要求、数据的用途,进而弄清数据的构成、数据元素的类型、性质、算法、取值范围、相互关系。 在上述调查基础上,首先画出组织机构及工作职能图。我们以一个学校的基层单位——某大学一个系的管理为例来简要说明。 系的组织机构及工作职能如图7.1所示。

图7.1 系管理体系结构图 作为管理层经常需要的信息和工作有: .查询老师个人基本情况及打印相应内容 .查询与统计科研项目情况及相关报表 .查询与统计论文著作情况及相关报表 .上级部门及其他部门来文管理与查询(要求能全文检索) .系部发文管理 .任务下达、检查及管理 .信件、通知的收发及管理 .日程安排调度及管理 .设备仪器计划及管理 .设备入库与库存情况管理与查询 .设备借还领用管理及相应报表 .耗材计划与领发管理及相应统计报表 .图书管理及借还情况查询 .学生毕业设计文档管理 .专业与班组编制与查询 .教学文档管理及查询(安排与检查,包括课表、考试日程安排、监考安排等).学生成绩管理与查询和统计 .教师、学生、实验室课表管理及查询 .学生基本情况管理与查询(包括社会活动、奖惩、家庭情况及学校校友管理)

树形结构数据表的设计

树形结构的数据库表Schema设计 程序设计过程中,我们常常用树形结构来表征某些数据的关联关系,如企业上下级部门、栏目结构、商品分类等等,通常而言,这些树状结构需要借助于数据库完成持久化。然而目前的各种基于关系的数据库,都是以二维表的形式记录存储数据信息,因此是不能直接将Tree 存入DBMS,设计合适的Schema及其对应的CRUD算法是实现关系型数据库中存储树形结构的关键。 理想中树形结构应该具备如下特征:数据存储冗余度小、直观性强;检索遍历过程简单高效;节点增删改查CRUD操作高效。无意中在网上搜索到一种很巧妙的设计,原文是英文,看过后感觉有点意思,于是便整理了一下。本文将介绍两种树形结构的Schema设计方案:一种是直观而简单的设计思路,另一种是基于左右值编码的改进方案。 一、基本数据 本文列举了一个食品族谱的例子进行讲解,通过类别、颜色和品种组织食品,树形结构图如下:

二、继承关系驱动的Schema设计 对树形结构最直观的分析莫过于节点之间的继承关系上,通过显示地描述某一节点的父节点,从而能够建立二维的关系表,则这种方案的Tree表结构通常设计为:{Node_id,Parent_id},上述数据可以描述为如下图所示: 这种方案的优点很明显:设计和实现自然而然,非常直观和方便。缺点当然也是非常的突出:由于直接地记录了节点之间的继承关系,因此对Tree的任何CRUD操作都将是低效的,这主要归根于频繁的“递归”操作,递归过程不断地访问数据库,每次数据库IO都会有时间开销。当然,这种方案并非没有用武之地,在Tree规模相对较小的情况下,我们可以借助于缓存机制来做优化,将Tree的信息载入内存进行处理,避免直接对数据库IO操作的性能开销。 三、基于左右值编码的Schema设计 在基于数据库的一般应用中,查询的需求总要大于删除和修改。为了避免对于树形结构查询时的“递归”过程,基于Tree的前序遍历设计一种全新的无递归查询、无限分组的左右值编码方案,来保存该树的数

数据库设计各阶段

1.数据库应用系统的设计步骤 按规范设计的方法可将数据库设计分为以下六个阶段 (1)需求分析; (2)概念结构设计; (3)逻辑结构设计; (4)数据库物理设计; (5)数据库实施; (6)数据库运行和维护。 2.需求分析 需求收集和分析是数据库应用系统设计的第一阶段。明确地把它作为数据库应用系统设计的第一步是十分重要的。这一阶段收集到的基础数据和一组数据流图(DataFlowDiaˉgram———DFD)是下一步设计概念结构的基础。概念结构对整个数据库设计具有深刻影响。 而要设计好概念结构,就必须在需求分析阶段用系统的观点来考虑问题、收集和分析数据及其处理。如何分析和表达用户需求呢?在众多的分析方法中,结构化分析(StructuredAnalysis,简称SA方法)是一个简单实用的方法。SA方法用自顶向下、逐层分解的方式分析系统。用数据流图,数据字典描述系统。然后把一个处理功能的具体内容分解为若干子功能,每个子功能继续分解,直到把系统的工作过程表达清楚为止。在处理功能逐步分解的同时,它们所用的数据也逐级分解。形成若干层次的数据流图。数据流图表达了数据和处理过程的关系。处理过程的处理逻辑常常用判定表或判定树来描述。数据字典(DataDictionary,简称DD)则是对系统中数据的详尽描述,是各类数据属性的清单。对数据库应用系统设计来讲,数据字典是进行详细的数据收集和数据分析所获得的主要结果。数据字典是各类数据描述的集合,它通常包括以下5个部分: (1)数据项,是数据最小单位。

(2)数据结构,是若干数据项有意义的集合。 (3)数据流,可以是数据项,也可以是数据结构。表示某一处理过程的输入输出。 (4)数据存储,处理过程中存取的数据。常常是手工凭证、手工文档或计算机文件。 (5)处理过程。 3."概念结构设计 如同软件工程中重视需求分析与规范说明的思想一样,数据库设计中同样十分重视数据分析、抽象与概念结构的设计。概念结构的设计,是整个数据库设计的关键之 一。"概念结构独立于数据库逻辑结构,独立于支持数据库的DBMS,也独立于具体计算机软件和硬件系统。归纳总结,其主要特点是: (1)能充分地反映现实世界,包括实体和实体之间的联系,能满足用户对数据处理的要求,是现实世界的一个真实的模型,或接近真实的模型。 (2)易于理解,从而可以和不熟悉计算机的用户交换意见。用户的积极参与是数据库应用系统设计成功与否的关键。 (3)易于更动。当现实世界改变时容易修改和扩充,特别是软件、硬件环境变化时更应如此。 (4)易于向关系、网状或层次等各种数据模型转换。概念结构是各种数据模型的共同基础,它比任意一种数据模型更独立于机器,更抽象,从而更加稳定。描述概念结构的有力工具是E-R模型。P.P.S.Chen把用E-R模型定义的概念结构称为组织模式。设计概念结构的策略有3种: (1)自顶向下首先定义全局概念结构的框架,然后逐步细化。 (2)自底向上首先定义各局部应用的概念结构,然后将它们集成,得到全局概念结构。

数据库表结构设计

数据库表结构设计 1. 原始单据与实体之间的关系 可以是一对一、一对多、多对多的关系。在一般情况下,它们是一对一的关系:即一张原始单据对 应且只对应一个实体。在特殊情况下,它们可能是一对多或多对一的关系,即一张原始单证对应多个实 体,或多张原始单证对应一个实体。这里的实体可以理解为基本表。明确这种对应关系后,对我们设计 录入界面大有好处。 〖例1〗:一份员工履历资料,在人力资源信息系统中,就对应三个基本表:员 工基本情况表、社会 关系表、工作简历表。这就是“一张原始单证对应多个实体”的典型例子。 2. 主键与外键 一般而言,一个实体不能既无主键又无外键。在E—R 图中, 处于叶子部位的 实体, 可以定义主键, 也可以不定义主键(因为它无子孙), 但必须要有外键(因为它有父亲)。 主键与外键的设计,在全局数据库的设计中,占有重要地位。当全局数据库的设计完成以后,有个 美国数据库设计专家说:“键,到处都是键,除了键之外,什么也没有”,这 就是他的数据库设计经验 之谈,也反映了他对信息系统核心(数据模型)的高度抽象思想。因为:主键是 实体的高度抽象,主键与 外键的配对,表示实体之间的连接。

3. 基本表的性质 基本表与中间表、临时表不同,因为它具有如下四个特性: (1) 原子性。基本表中的字段是不可再分解的。 (2) 原始性。基本表中的记录是原始数据(基础数据)的记录。 (3) 演绎性。由基本表与代码表中的数据,可以派生出所有的输出数据。 (4) 稳定性。基本表的结构是相对稳定的,表中的记录是要长期保存的。 理解基本表的性质后,在设计数据库时,就能将基本表与中间表、临时表区分开来。 4. 范式标准 基本表及其字段之间的关系, 应尽量满足第三范式。但是,满足第三范式的数据库设计,往往不是 最好的设计。为了提高数据库的运行效率,常常需要降低范式标准:适当增加冗余,达到以空间换时间的目的。 〖例2〗:有一张存放商品的基本表,如表1所示。“金额”这个字段的存在,表明该表的设计不满足第三范式,因为“金额”可以由“单价”乘以“数量”得到,说明“金额”是冗余字段。但是,增加“金额”这个冗余字段,可以提高查询统计的速度,这就是以空间换时间的作法。 在ROSE 2002中,规定列有两种类型:数据列和计算列。“金额”这样的列被称为“计算列”,而“单价”和“数量”这样的列被称为“数据列”。 表1 商品表的表结构 商品名称商品型号单价数量金额 电视机 29吋 2,500 40 100,000 5. 通俗地理解三个范式

数据库逻辑结构设计

数据库逻辑结构设计 该系列计划包括5部分:完整性约束理论及应用、范式理论及应用、需求分析、概念结构设计、逻辑结构设计。本文是第五部分,介绍逻辑结构设计的内容,包括E-R图向关系模型的转换、数据模型的优化、用户子模式的设计等问题。1.逻辑设计概述 概念结构是独立于任何一种数据模型的,在实际应用中,一般所用的数据库环境已经给定(如SQL Server或Oracel或MySql),本文讨论从概念结构向逻辑结构的转换问题。 由于目前使用的数据库基本上都是关系数据库,因此首先需要将E-R图转换为关系模型,然后根据具体DBMS的特点和限制转换为特定的DBMS支持下的数据模型,最后进行优化。 2.E-R图向关系模型的转换 2.1 一个例子 E-R图如何转换为关系模型呢?我们先看一个例子。 图2.1是学生和班级的E-R图,学生与班级构成多对一的联系。根据实际应用,我们可以做出这个简单例子的关系模式: 学生(学号,姓名,班级) 班级(编号,名称) “学生.班级”为外键,参照“班级.编号”取值。 这个例子我们是凭经验转换的,那么里面有什么规律呢?在2.2节,我们将这些经验总结成一些规则,以供转换使用。 2.2 转换规则 (1) 一个实体型转换为一个关系模式 一般E-R图中的一个实体转换为一个关系模式,实体的属性就是关系的属性,实体的码就是关系的码。

(2) 一个1:1联系可以转换为一个独立的关系模式,也可以与任意一端对应 的关系模式合并。 图2.2是一个一对一联系的例子。根据规则(2),有三种转换方式。 联系单独作为一个关系模式 此时联系本身的属性,以及与该联系相连的实体的码均作为关系的属性,可以选择与该联系相连的任一实体的码属性作为该关系的码。结果如下: 职工(工号,姓名) 产品(产品号,产品名) 负责(工号,产品号) 其中“负责”这个关系的码可以是工号,也可以是产品号。 )与职工端合并 职工(工号,姓名,产品号) 产品(产品号,产品名) 其中“职工.产品号”为外码。 i)与产品端合并 职工(工号,姓名) 产品(产品号,产品名,负责人工号) 其中“产品.负责人工号”为外码。 (3) 一个1:n联系可以转换为一个独立的关系模式,也可以与n端对应的关 系模式合并。

数据库的设计课后答案

第六章数据库设计 习题解答和解析 1. 1.试述数据库设计过程。 答:这里只概要列出数据库设计过程的六个阶段: (1)需求分析;(2)概念结构设计;(3)逻辑结构设计;(4)数据库物理设计;(5)数据库实 施;(6)数据库运 行和维护。这是一个完整的实际数据库及其应用系统的设计过程。不仅包括设计数据库本身,还包括数据库的实施、运行和维护。设计一个完善的数据库应用系统往往是上述六个阶段的不断反复。 解析:希望读者能够认真阅读《概论》6.1的内容,了解并掌握数据库设计过程。 2. 2.试述数据库设计过程各个阶段上的设计描述。 答:各阶段的设计要点如下: (1)需求分析:准确了解与分析用户需求(包括数据与处理)。 (2)概念结构设计:通过对用户需求进行综合、归纳与抽象,形成一个独立于具体DBMS 的概念模型。 (3)逻辑结构设计:将概念结构转换为某个DBMS所支持的数据模型,并对其进行优化。 (4)数据库物理设计:为逻辑数据模型选取一个最适合应用环境的物理结构(包括存储结构和存取方法)。 (5)数据库实施:设计人员运用DBMS提供的数据语言、工具及宿主语言,根据逻辑设计和物理设计的结果建立数据库,编制与调试应用程序,组织数据入库,并进行试运行。 (6)数据库运行和维护:在数据库系统运行过程中对其进行评价、调整与修改。 解析: 这是进一步了解数据库设计的具体内容。设计描述是指在各个阶段体现设计内容,描述设计结果的各种文档、程序。读者可以参考《概论》上图6.3。 3. 3.试述数据库设计过程中结构设计部分形成的数据库模式。 答:数据库结构设计的不同阶段形成数据库的各级模式,即: (1)在概念设计阶段形成独立于机器特点,独立于各个DBMS产品的概念模式,在本篇中就是E-R图; (2)在逻辑设计阶段将E-R图转换成具体的数据库产品支持的数据模型,如关系模型,形成数据库逻辑模式,然后在基本表的基础上再建立必要的视图(View),形成数据的外模式; (3)在物理设计阶段,根据DBMS特点和处理的需要,进行物理存储安排,建立索引,形成数据库内模式。 读者可以参考《概论》上图6.4。图中概念模式是面向用户和设计人员的,属于概念模型的层次;逻辑模式、外模式、内模式是DBMS支持的模式,属于数据模型的层次,可以在DBMS 中加以描述和存储。 4. 4.试述数据库设计的特点。 答:数据库设计既是一项涉及多学科的综合性技术又是一项庞大的工程项目。其主要特点有: (1)数据库建设是硬件、软件和干件(技术与管理的界面)的结合。 (2)从软件设计的技术角度看,数据库设计应该和应用系统设计相结合,也就是说,整个设计过程中要把结构(数据)设计和行为(处理)设计密切结合起来。详细的可以参考《概论》

数据库结构设计

数据库结构设计 数据库在一个信息管理系统中占有非常重要的地位,数据库结构设计的好坏直接对应用系统的效率以及实现的效果产生影响。合理的数据库结构设计可以提高数据存储的效率,保证数据的完整和一致。 1. 逻辑结构设计 客户信息管理系统中使用的各个数据表的字段设置如下所示。(1)客户信息表。用于记录客户信息,其逻辑结构如下表所示: 客户信息表 (2)客户投诉信息表、用于记录客户投诉信息,其逻辑结构如下表所示:

客户投诉信息表 (3)日程信息表。用于记录日程信息,其逻辑结构如下表所示: 日程信息表 (4)授权用户表。用于记录系统授权用户信息,其逻辑结构如下表所示: 授权用户表

2.创建visual foxpro项目 设计好数据库的结构后,接可以创建数据库了。使用visual foxpro 开发应用程序时使用项目管理器可以更好的管理应用程序开发。要使用项目管理器,需要首先创建一个项目。 在visual foxpro 主窗口选择“文件”—“新建”菜单,打开“新建”对话框。在此对话框的“文件类型”区域中选中“项目”单选按钮后单击“新建文件”按钮,打开“创建”对话框,在此对话框选择项目文件的保存位置并输入项目的名称,单击“保存” 按钮即可保存项目并完成一个visual foxpro 项目的创建。项目创建完成后即可打开项目管理器,如下图所示: 3.配置visual foxpro 开发环境 当项目创建完成后,就意味着开始正式开发了,需要配置visual foxpro 的开发环境。在visual foxpro 主窗口中选择

“工具”—“选项”菜单,打开如下图所示的“选项”对话框。 visual foxpro 开发环境的设置都将在上图所示“选项”对话框中完成。开发环境设置中比较重要的设置包括:“文件位置”选项卡中设置的“默认目录”,一般将这个选项设置为项目文件所在的目录即可:“表单”选项卡中设置的表单的设计区域的大小以及表单的模版类;“控件”选项卡中设置要使用的ActiveX控件;“区域”选项卡中设置日期、时间、货币等的格式。

相关主题
文本预览
相关文档 最新文档