一个详细的设计表的案例

来源:互联网 发布:怎么刷网络课程 编辑:程序博客网 时间:2024/05/16 15:51

 设有一个spj数据库,包括s,p,j,spj四个关系模式

S(sno,sname,status,city);供应商

P(pno,pname,color,weight);零件

J(jno,jname,city);项目

Spj(sno,pno,jno,qty);他们之间的联系

要求把下列操作的SQL语言记录下来:

A:数据库有数据文件、日志文件放在c:/spj文件夹中,spj_1.MDF,,spj_g1.log;

B:数据库文件的增长速度为5M

create database spj

on (name='spj_1',

  filename='c:/spj_1.mdf',

  size=1,

  filegrowth=5)

log on

  (name='spj_log',

   filename='c:/spj_1.log'

   )

 

C:使用SQL语言给前面的数据库增加一个数据文件和一个日志文件

alter database spj

add file(name='spj_2',

       filename='c:/spj_2.mdf')

alter database spj

add log file

       (name='spjlog_2',

        filename='c:/spj_log2.log')

 

D:创建4个关系,必须给他们设定主码和外码

create table s

(sno bigint primary key identity(1,1),

sname char(10),

status char(8),

city char(10))

 

create table p

(pno char(4)primary key,

 pname char(10),

 color char(2),

weight smallint,

)

 

create table j

(jno char(6) primary key,

jname char(10),

city char(10),

)

create table spj

(sno bigint,pno char(4),jno char(6),qty bigint

foreign key (sno)references s(sno),

foreign key (pno)references p(pno),

foreign key (jno)references j(jno),)

 

约束

Esno8位的阿拉伯数字,编号从00000001,保持连续一次增加1

pno前两位是英文大写字母,后两位是阿拉伯数字,

alter table p

add CONSTRAINT pno_c check (pno like '[a-z][a-z][0-9][0-9]')

jno 6位是阿拉伯数字。

alter table j

add CONSTRAINT jno_c check (jno like '[0-9][0-9][0-9][0-9][0-9][0-9]')

Color是“红、橙、黄、绿、青、蓝、紫”,

alter table p

add CONSTRAINT color_c check (color in('','','','绿','','',''))

weight是介于10~1000之间的数字。

alter table p

add CONSTRAINT weight_c check (weight between 10 and 100)

City的默认值是“北京”。

create default city_d as '北京'

go

exec sp_bindefault 'city_d','s.[city]'

规则

F:给S增加一列credit,存放他的信用度。

alter table s

add credit char(2)

go

同时定义一个规则,保证信用度的取值范围是介于0~10的自然数。

create rule range as

@f>=1 and @f <=10

go

exec sp_bindrule 'range','s.[credit]'

 

G:给p增加一列grade,表示货物的等级(优、良、中、差)。同时定义一个默认,保证这一列的默认值是优。

alter table p

add grade char(2)

check (grade in( '','','',''))

go

create default grade_d as ''

go

exec sp_bindefault 'grade_d','p.[grade]'

 

 

原创粉丝点击