借出时间 借物人 使用数量 Date Char(6) int Not null Null null 活动费用的视图: 列名 活动名称 财务申请编号 资金用途 申请金额 申请人姓名 数据类型 Char(8) Char(6) Char(20) int Char(6) 可否为空 Not null null Not null Not null Not Null 部门举办过的活动信息的视图: 列名 活动名称 承办部门 参与人员 列名 文件名称 文件所属部门 文件负责人 收发对象 存档日期 数据类型 Char(14) Char(8) Char(6) 数据类型 Char(10) Char(14) Char(6) Char(6) date 可否为空 Not null Not null Not null 可否为空 Not null Not null null Null null 存档文件的基本信息视图 3.4、物理结构设计
3.4.1存储结构与存取方法
1、由于基本表student、department、good、files的主码stu_name、dep_name、good_no、file_no经常在查询条件和链接操作的条件中出现,且它们的值唯一,在两个属性上建立唯一索引;
2、由于基本表usegood的属性act_name 、good_name经常在查询条件中出现,所以在两个属性上建立组合索引;
3、申请财务信息基本表finance的属性fin_no 、apply_name经常在查询条件中出现,在两个属性上建立组合索引;
3.4.2数据的易变与稳定部分 3.4.3建立数据库、表建立的代码
⑴建立数据库
createdatabasewarehouse; ⑵建立数据表
①学生信息表建立如下: usewarehouse;
createtablestudent( stu_nochar(9) notnull, stu_namechar(6)primarykey, stu_positionchar(4)notnull, s_depart_namechar(14)notnull, stu_casechar(20)null, stu_phonechar(12)notnull, stu_prochar(5)null, stu_sexchar(8)
foreignkey (s_depart_name)referencesdepartment(dep_name), check (stu_sex='男'orstu_sex='女') );
②部门信息表建立如下: usewarehouse;
createtabledepartment(
dep_namechar(14)primarykey, dep_nochar(8)notnull,
buzhang_name char(6)notnull, fubusumintnull, busumintnull,
buzhang_phochar(20)null, );
为部门表建立约束: altertabledepartment
addconstraintcons_fk_buzhang_noforeignkey(buzhang_name)referencesstudent(stu_name)
③建立部门活动信息表如下: createtableactivity(
act_namechar(8)primarykey, act_rangechar(20)null,
act_department_namechar(14)notnull, solutionchar(30)null,
foreignkey(act_department_name)referencesdepartment(dep_name) )
④建立活动参与信息表如下: createtableenjoy(
act_namechar(8)notnull, stu_namechar(6)notnull, presentchar(5)null,
primarykey (act_name,stu_no),
foreignkey(act_name)referencesactivity(act_name), foreignkey (stu_name)referencesstudent(stu_name) );
⑤建立物品信息表如下: createtablegood(
good_nochar(4)notnull, fin_nochar(4)notnull,
good_namechar(6) primarykey, moneyint,
lend_timedatetimenull, good_lenderchar(6), ret_timedatetimenull, ret_namechar(6)null )
为物品表建立外键约束 altertablegood
addconstraintcons_fk_fin_nogood(fin_no)referencefinance(fin_no); ⑥建立活动使用物品信息表如下: createtableusegood( act_namechar(8)notnull, good_namechar(6)notnull, usesumintnull,
primarykey(act_name,good_name),
foreignkey(act_name)referencesactivity(act_name), foreignkey(good_name)referencesgood(good_name) );
⑦建立财务信息表如下: createtablefinance(
fin_nochar(4)primarykey, fin_purposechar(20)null, fin_moneyintnotnull,
apply_namechar(6)notnull,
apply_depart_namechar(14)notnull, apply_timedatetimenull, fin_remainintnull,
foreignkey (apply_name)referencesstudent(stu_name),
foreignkey (apply_depart_name)referencesdepartment(dep_name) )
⑧建立学生文件信息表如下: createtablefiles(
file_nochar(8)primarykey, file_namechar(10)notnull,
file_bel_departchar(14)notnull, file_personchar(6)notnull, recdispartnerchar(6)null, acrdatedatetimenull, remarkchar(30)null,
foreignkey (file_bel_depart)referencesdepartment(dep_name), foreignkey (file_person)referencesstudent(stu_name) )
⑶建立视图
①用于查询和修改学生会干部基本信息的视图如下
createviewstudent_view(姓名,编号,性别,专业,职位,部门) as
selectstu_name,stu_no,stu_sex,stu_pro,stu_position,s_depart_no fromstudent withcheckoption
②用于查询和修改部门信息的视图如下:
createviewdepartment_view(部门名称,部门编号,部长,部长电话) as
selectdep_name,dep_no,buzhang_no,buzhang_pho fromdepartment withcheckoption
③用于查看活动时借出物品信息的视图如下:
createviewgood_view(活动名称,物品编号,财务申请编号,物品名称,金额,借出时间,借物人,使用数量) as
selectusegood.act_name,good_no,fin_no,good.good_name,money,lend_time,good_lender,usesum
fromgood join usegood on good.good_name=usegood.good_name ④用于查看活动费用的视图如下:
createviewfin_view(活动名称,财务申请编号,资金用途,申请金额,申请人姓名) as
selectact_name,fin_no,fin_purpose,fin_money,apply_name
fromfinance join activity on finance. apply_depart_name=activity. act_department_name
⑤用于查看部门举办过的活动信息的视图如下:
createviewactivity_view(活动名称,承办部门,参与人员) as
selectactivity.act_name,act_department_no,stu_name
fromactivityjoinenjoyonactivity.act_name=enjoy.act_name ⑥用于查看修改存档文件信息的视图如下: