½ÌÊÒ¹ÜÀíÐÅϢϵͳÊý¾Ý¿âµÄÉè¼Æ ÏÂÔØ±¾ÎÄ

07ÐŹÜרҵ072°àÊý¾Ý¿âϵͳ¸ÅÂۿγÌÉè¼ÆÂÛÎÄ

)

/* ´´½¨Ñ§Éú½ø³ö½ÌÊÒÐÅÏ¢±í*/ CREATE TABLE ENTER_LEAVE (

SNo Char(8), RoomNo Char(4), EnterTime smalldatetime, LeaveTime smalldatetime,

PRIMARY KEY(SNo,RoomNo,EnterTime),

FOREIGN KEY (SNo) REFERENCES STUDENT (SNo),

FOREIGN KEY (RoomNo) REFERENCES CLASSROOM (RoomNo), CHECK(lEAVETIME>ENTERTIME), )

ÊÓͼµÄ½¨Á¢

/* ´´½¨Ñ§Éú³öÇÚÊÓͼ*/ CREATE VIEW V_Attendence AS

SELECT STUDENT.SNo,Sname,Cname,ATTENDENCE.Attendsum FROM STUDENT,ATTENDENCE,COURSE

WHERE STUDENT.SNo=ATTENDENCE.SNo AND ATTENDENCE.CNo=COURSE.CNo

/* ½¨Á¢²é¿´¿Õ½ÌÊÒµÄÊÓͼ*/

CREATE VIEW EMPTYCLASSROOM AS

SELECT Roomname,Campusname,Buildname,IsUsable,Type,RemainCapacity FROM CLASSROOM WHERE Isusable='¿ÉÓÃ'

/* ´´½¨¿Î³Ì±íÊÓͼ */

CREATE VIEW KECHENGBIAO AS

SELECT CURRICULUM.WeekNo,CURRICULUM.Weekday, CURRICULUM.SectionNo,COURSE.Cname,TEACHER.Tname, CLASSROOM.Roomname,Buildname,Campusname

FROM COURSE, TEACHER,CURRICULUM,CLASSROOM

WHERE COURSE.CNo=CURRICULUM.CNo AND TEACHER.TNo=CURRICULUM.TNo AND CLASSROOM.RoomNo=CURRICULUM.RoomNo

/* ´´½¨Î¬Ð޼Ǽ²éѯµÄÊÓͼ*/ CREATE VIEW MENDRECORDS AS

26

07ÐŹÜרҵ072°àÊý¾Ý¿âϵͳ¸ÅÂۿγÌÉè¼ÆÂÛÎÄ

SELECT RepaireRecordNo,Repairername,Roomname,Devicename,Supplyname,RepaireTime From Repairer,MendRecord,CLASSROOM

where Repairer.RepairerNo=MendRecord.RepairerNo and MendRecord.RoomNo=CLASSROOM.RoomNo

/* ´´½¨½ÌÊÒ½èÓüǼµÄÊÓͼ*/

CREATE VIEW RentRecords AS

SELECT

Roomname,Department.RentDeptname,Leadername,Tel,RentReason,WeekNo,Weekday,SectionNo

FROM RENTRECORD,Department,CLASSROOM

WHERE RENTRECORD.Deptname=Department.RentDeptname AND CLASSROOM.RoomNo=RENTRECORD.RoomNo

27

07ÐŹÜרҵ072°àÊý¾Ý¿âϵͳ¸ÅÂۿγÌÉè¼ÆÂÛÎÄ

¸½Â¼3 ´æ´¢¹ý³Ì¡¢´¥·¢Æ÷µÄ´´½¨ÓëÊý¾Ý¿âÑéÖ¤

1¡¢ ´¦Àí½ÌÊÒÈËÊýÔö¼Ó»ò¼õÉÙ

/* ´´½¨½ÌÊÒÈËÊýÔö¼Óʱ´¥·¢Æ÷*/ DROP TRIGGER ADDSTUDENT CREATE TRIGGER ADDSTUDENT ON ENTER_LEAVE AFTER INSERT AS BEGIN

UPDATE CLASSROOM

SET RemainCapacity=RemainCapacity-1 WHERE RoomNo IN (SELECT RoomNo FROM INSERTED ); END

INSERT INTO ENTER_LEAVE VALUES ('09207035','0002','2009-12-30',) /* ´´½¨½ÌÊÒÈËÊý¼õÉÙʱ´¥·¢Æ÷*/ CREATE TRIGGER PLUSSTUDENT ON ENTER_LEAVE AFTER DELETE AS BEGIN

UPDATE CLASSROOM

SET RemainCapacity=RemainCapacity+1 WHERE RoomNo IN (SELECT RoomNo FROM DELETED ) END

DELETE FROM ENTER_LEAVE WHERE SNo='09207035'

2¡¢ ´¦ÀíÉ豸Ëð»µÊ±

µ±½ÌÊÒËð»µÊ±£¬½«½ÌÊÒµÄ״̬ÉèÖÃΪ²»¿ÉÓᣠCREATE TRIGGER DAMAGEEVENT ON DAMAGEREPORT AFTER INSERT AS BEGIN

UPDATE CLASSROOM SET IsUsable='Ëð»µ'

WHERE RoomNo IN (SELECT RoomNo FROM INSERTED ) END

CREATE PROCEDURE DamageInfoReport(@SNo CHAR(8),@RoomNo

CHAR(4),@DamageTime SMALLDATETIME,@damageInfo CHAR(50),@Devicename CHAR(20)) AS BEGIN

INSERT INTO DAMAGEREPORT

VALUES(@SNo,@RoomNo,@DamageTime,@damageInfo,@Devicename) END

28

07ÐŹÜרҵ072°àÊý¾Ý¿âϵͳ¸ÅÂۿγÌÉè¼ÆÂÛÎÄ

¸½3-1 É豸Ë𻵱¨¸æÊÂÎñ´¦Àí

3¡¢ ´¦Àíµ¥Î»½èÓÃʱ /* µ¥Î»½èÓýÌÊÒ´¦Àí*/

CREATE PROCEDURE RENTCLASSROOM(@RoomNo CHAR(4),@deptname char(14),@Reason char(50),@WeekNo char(10),@Weekday char(10),@SectionNo char(10)) AS BEGIN

UPDATE CLASSROOM SET IsUsable='½èÓÃ'

WHERE RoomNo=@RoomNo; INSERT INTO RENTRECORD

VALUES(@RoomNo,@deptname,@Reason,@WeekNo,@Weekday,@SectionNo); END

/*ʹÓÃÍêºó½«½ÌÊÒ״̬¸Ä»Ø¿ÉÓÃ״̬ */

CREATE PROCEDURE CHANGESTATEMENT(@RoomNo CHAR(4)) AS BEGIN

UPDATE CLASSROOM SET IsUsable='¿ÉÓÃ'

WHERE RoomNo=@RoomNo; END

¸½3-2 ½ÌÊÒ½èÓÃÊÂÎñ´¦Àí

4¡¢ ´¦Àí½Ìʦµ÷¿ÎʱµÄÊÂÎñ

/* ´¦Àí½Ìʦµ÷¿ÎÊÂÎñ*/

CREATE TRIGGER AdjustCourse ON CURRICULUM

29