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