Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 17 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
17
Dung lượng
476,22 KB
Nội dung
ON BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC DÂN LẬP cửu so DO PHAN RA CHUC NANG A LƯỢCLONG ĐỒ CSDL KHOA CÔNG NGHỆ THÔNG TIN Cơ sở liêu : Có nội dung sau : _m KHACH ĐỀ TÀI: HANG HANGHOA Đồ án iava \ CTHOADON BAOHANH MABH CTBAOHANH Mỏ tá chi tiết Sinh viên thực hiện: Phan Duy Khách Cảnh Hàng: + Bảng 04.020.01 Trần Thanh Hóa Tiêu Văn Tiếng , DIENTHOAI KHACH HANG (MAKH , TENKH , DIACHI , FAX , EMAIL) Diễn gịai: MAKH :Mỗi lần mua hàng Khách hàng có Mã khách hàng để phân biệt với Khách hàng khác lần mua hàng khác TENKH : Cho biết Họ Tên cụ thể Khách hàng mua hàng 2007 DIACHI: Cho biết Địa Khách hàng 2I + Bảng Hàng hóa: HANGHOA (MAH , TENH , GIA , SOLUONG , BAOHANH , HANGSX , KHUYENMAT) Diễn giải: MAH : Mỗi Hàng hoá có Mã hàng hoá để phận biệt với Hàng hóa khác TENH : Cho biết Tên Hàng Hoá Tên hàng phải GIA : Cho biết Giá bán Hàng hóa Giá trị GIA phải > = SOLUONG : Cho biết sô" lượng hàng có (sô" lượng tồn ) để bán không Giá trị SOLUONG phải >= BAOHANH : Cho biết hạng bảo hành hàng Giá trị BAOHANH thuộc ('3THG76THG' ,'9THG71 NAM','2NAM','3NAM') HANGSX : Cho biết hãng sản xuâ"t tương ứng mặt hàng KHUYENMAI : Cho biết khuyến hàng hóa (nếu có) , tiền hay tặng phẩm + Bảng Hóa đơn: HOADON (MAHD , MAKH) Diễn giải: MAHD : Mỗi hóa đơn xuâ"t cho Khách hàng điều có Mã hóa đơn để phân biết cho lần xuâ"t khác MAKH : Cho biết mã sô" khách hàng mua hàng, từ MAKH ta biết thông tin khác khách hàng họ tên, địa + Bảng Chi tiết Hóa đơn: CTHOADON (MAHD , MAH , NGAYLAP, SOLUONG, THANHTIEN) Diễn giải : c RÀNG BUỘC TOÀN VẸN Ghi chủ: MABH : Mỗi phiếu bảo hành có Mã bảo hành để phân biệt với phiếu bảo hành RÀNG BUỘC: YÊU CẦU khác A: Ràng buộc miền giá trị B Sơ ĐÔ QUAN HỆ MAKH Chobộbiết khách hàng bảo hành hàng mua (MAKH tham chiếu đến B: Ràng buộc: liên RÀNG BUỘC TOÀN VẸN QUAN HỆ LOẠ bảng I KHACHHANG C: Ràng buộc liên thuộc tính KHACHHANG) D: Ràng buộc phụ thuộc tồn+tạiBảng Chi Tiết Bảo Hành: E:(MABH Ràng buộc liên _ liên quan hệ HANGHOA CTBAOHANH , MAH NGAYNHAN, NGAYTRA , CHIPHI, THONGTIN) F: Ràng Diễnbuộc giải:liên thuộc tính _ liên quan hệ HANGHOA A trị BAOHANH phải thuộc MABH : Mỗi(‘3THG76THG', Hàng hóa có sô" bảo hành (MABH) Hàng bảo hành dựa vào '9THG71NAM73NAM') (MAH) KHACHHANG A ENTHOAI HOADON sốMAHD khoảng '[0-9][0-9][0-9][09] [0-9] [0-9] [0-9]' ‘[0-9] [0-9] [0-9] [0-9] [0-9] [09] [0-9] KHACHHANG A X sô" khoảng TO-9] [0-9] [0-9] [0-9] [0-9] [0CTHOADON 9][0-9]' ‘[0-9][0-9][0-9][0-9][0-9][0-9][0-9] [0-9][0- HANGHOA HOA cho mã hàng hàng hóa mã hàng chi tiết hóa đơn) CTHOADON GAYLAP hóa đơn bảng CTHOADON không lớn ngày CTBAOHANH GAYTRA bảng CTBAOHANH phải nhỏ ngày Hiện phải lớn NGAYNHAN CTBAOHANH A c CTHOADON SOLUONG bảng CTHOADON thêm CTHOADON 654 GO table GO CTBAOHANH table GO BAOHANH sysobjects sysobje cts wh ere id = object_id(N'BAOHANH') id = object_id(N'CTHOADON') CÀI ĐẶT RÀNG BUỘC TOÀN VẸN : +Tạo bảng ràng buộc khoá _ khóa ngoại: if exists (select * from sysobjects where id = object_id(N'USERS') and OBJECTPROPERTY(id, NdsUserTable') = 1) drop table USERS TENKH varchar(20) null , DIACHI nullprimary , constraintvarchar(50) PK_CTHOADON key (MAHD, MAH) ) DĨENTHOAT varchar(9) null , FAX varchar(9) null , EMAIL varchar(50) null , /* ============================================================ */ constraint PK_KHACHHANG primary key (MAKH) OBIECTPROPERTY(id, N’IsUserTable') */ = 1) /* Table: BAOHANH )drop table CTHOADON /* ============================================================ GO */ if exists (select * from PK_BAOHANH sysobjects whereprimary id = object_id(N'HOADON') and OBJECTPROPERTY(id, constraint key (MABH) /* ============================================================ )N'ĩsUserTable') = 1) */ drop table HOADON GO /* Table: HANGHOA */ /* if exists / (select * from sysobjects where id = object_id(N'KHACHHANG') and /* ============================================================ OBIECTPROPERTY(id, N’IsUserTable’) = 1) * / *============== drop table KHACHHANG ===== GO create table HANGHOA if exists ( (select * from sysobjects where id = object_id(N'HANGHOA') and MAH char(4) not null, /* ============================================================ * / TENH varchar(20) null , /* Table: USERS */ constraint PK_CTBAOHANH GĨA int null , primary key (MABH, MAH) )/* SOLUONG int null , ============================================================*/ BAOHANH varchar(lO) null , key (USERNAMES) constraint PK_USERS primary ) alter table HOADON HANGSX varchar(30) null , add constraint FK_HOADON_MAKH_KHACHHANG foreign key KHUYENMAI varchar(50) null , (MAKH) /* ============================================================ constraint primary key reíerences PK_HANGHOA KHACHHANG (MAKH) * /(MAH) /* Table: KHACHHANG ) */ alter table BAOHANH /* ============================================================ 10 89 alter table CTHOADON add constraint FK_CTHOADON_MAHD_HOADON foreign key (MAHD) references HOADON (MAHD) alter table CTHOADON add constraint FK_CTHOADON_MAH_HANGHOA íoreign key (MAH) references HANGHOA (MAH) alter table CTBAOHANH add constraint FK_CTBAOHANH_MAH_HANGHOA íoreign key (MAH) /* ============================================================= * / -TAO RULE GIA DE KIEM TRA GIA TRONG BANG HANGHOA VA GIA TRONG BANG CTHOADONPHAI > CREATE RULE GIA AS @GIA > exec sp_bindrule 'GIA','HANGHOA.GIA' -TAO RULE SOLUONG_CTBH DE KĨEM TRA GIA TRONG BANG CTHOADON VA GIABAN TRONG BANG CTBAOHANH PHAI >= CREATE RULE SOLUONG_CTBH AS @SOLUONG_CTBH >= exec sp_bindrule 'SOLUONG_CTBH','CTBAOHANH.SOLUONG' 11 CREATE RULE @ SOLUONG_CTHD >= SOLUONG_CTHD AS exec sp_bindrule 'SOLUONG_CTHD';CTHOADON.SOLUONG' -TAO RULE SOLUONGHANG DE KIEM TRA GIA TRONG BANG HANGHOA PHAI >= CREATE RULE SOLUONGHANG AS @ SOLUONGHANG>=0 exec sp_bindrule 'SOLUONGHANG', 'HANGHOA.SOLUONG' -TAO RULE CHIPHI DE KIEM TRA GIA TRONG BANG CTBAOHANH PHAI >= CREATE RULE CHIPHI AS /* _ */ /* CHECK -TEN HANG HOA LA DUY NHAT ALTER TABLE HANGHOA ADD CONSTRAINT CK_TENHH UNIQUE (TENH) —KIEM TRA BAOHANH TRONG BANG HANGHOA co PHAI LA '3THG', '6THG' , '9THG', 'ÌNAM', '2NAM', '3NAM' ALTER TABLE HANGHOA ADD CONSTRAĨNT CK_BAOHANH CHECK(BAOHANH IN ('3THG','6THG' ,'9THG',,1NAM',,2NAM,,,3NAM')) —DIENTHOAI LA CAC so TRONG KHOANG [0-9] ALTER TABLE KHACHHANG ADD CONSTRAINT CK_DỈENTHOAI CHECK(DIENTHOAI LIKE '[0-9] [0-9][0-9] [0-9][0-9] [0-9][0-9] [0-9][0-9]' OR DIENTHOAI LIKE '[0-9] [0-9] [0-9] [09] [0-9] [0-9] [0-9]) 12 */ /* TRIGGER */ /* Tao Trigger de kiem tra THANHTIEN tren table CTHOADON phai bang SOLUONG * GIA voi GIA la GIA cua MAH tren bang HANGHOA - - — -*/ Create TRĨGGER KT_THANHTTEN on CTHOADON for INSERT, UPDATE as BEGIN DECLARE @MAH CHAR(4) DECLARE DECLARE @GTA ĨNT @MAHDINT SELECT @MAH = INS.MAH, @MAHD = INS.MAHD FROM INSERTED INS, CTHOADON WHERE INS.MAHD = CTHOADON.MAHD AND INS.MAH = CTHOADON.MAH SELECT @GIA = HH.GIA FROM HANGHOA HH WHERE HH.MAH = @MAH UPDATE CTHOADON SET THANHTIEN = CTHOADON.SOLUONG * @GIA WHERE CTHOADON.MAH = @MAH AND CTHOADON.MAHD = END /* 13 PRINT ('NGAY LAP CTHOADON KHONG THE LON HON HIEN HANH !’) END NGAY /* Tao Trigger de kiem tra NGAYTRA tren table CTBAOHANH khong duoc lon lon hien tai va phai lon hon NGAYNHAN — */ Create TRIGGER for as KT_NGAYTRA on INSERT, CTBAOHANH UPDATE BEGIN DECLARE @MBH ĨNT DECLARE @NT DATETIME DECLARE @NN —NGAYTRA DATETĨME —NGAYNHAN SELECT @MBH = CTBH.MABH FROM INSERTED CTBH, CTBAOHANH WHERE CTBH.MABH = CTBAOHANH.MABH SELECT @NT = CTBH.NGAYTRA FROM INSERTED CTBH, CTBAOHANH WHERE CTBH.MABH = @MBH SELECT @NN = CTBH.NGAYNHAN CTBAOHANH WHERE CTBH.MABH = @MBH FROM INSERTED CTBH, ĨF (@NT > (CONVERT (DATETĨME, FLOOR (CONVERT (REAL, /* Tao Trigger de kiem tra SOLUONG tren table CTHOADON khong duoc lon hon SOLUONG hien co table HANGHOA - */ 14 as BEGIN DECLARE @MHD ĨNT —MAHD DECLARE @MH CHAR(4) —MAH DECLARE @SLHD INT -SOLUONG CUA CTHOADON DECLARE @SLHH INT —SOLUONG CUA HANHHOA SELECT @MHD = CTHD.MAHD, @MH = CTHD.MAH FROM INSERTED CTHD, CTHOADON SELECT @MH = CTHD.MAH FROM INSERTED CTHD, CTHOADON WHERE CTHD.MAH = CTHOADON.MAH SELECT @SLHH = HANGHOA.SOLUONG FROM HANGHOA IF(@SLHD> @SLHH) BEGIN PRINT ( SOLUONG CUA CTHOADON KHONG THE LON HON SOLUONG HANGHOA HIEN co !’) ROLLBACK TRANSACTĨON END END /* as BEGIN —MAHD DECLARE DECLARE —MAH @MHD @MH —SOLUONG CUA ĨNT CHAR(4) CTHOADON SELECT @MHD = CTHD.MAHD, @MH = CTHD.MAH FROM INSERTED CTHD, CTHOADON WHERE CTHD.MAHD 15 = CTHOADON.MAHD WHERE CTHD.MAHD = @MHD SELECT @MH = CTHD.MAH FROM ĨNSERTED CTHD, CTHOADON WHERE CTHD.MAH = CTHOADON.MAH UPDATE HANGHOA (HANGHOA.SOLUONG - SET HANGHOA.SOLUONG = END /* Tao Trigger KT_BAOHANH de kiem tra them vao mot mau tin tren table BAOHANH nhung mau tin chua MAHK khong co table KHACHHANG — —*/ Create TRĨGGER INSERT KT_BAOHANH on BAOHANH BEGIN DECLARE @numrows INT, @numnull INT, @errno INT, @errmsg VARCHAR(255) SELECT @numrows @@rowcount IF @numrows = RETURN = /* Khong co MAKH tuong ung tren bang "KHACHHANG" them mau tin vao bang "BAOHANH" */ IF UPDATE(MAKH) 16 for /* Errors handling */ error: RAISERROR @errno /* Tao Trigger KT_CTBAOHANH de kiem tra them vao mot mau tin tren table CTBAOHANH nhung mau tin chua MAH khong co table HANGHOA va chua MABH khong co bang BAOHANH - - - - - - I I I -* / Create TRIGGER KH_CTBAOHANH on CTBAOHANH for TNSERT BEGTN DECLARE @numrows INT, @numnull INT, @errno INT, @errmsg VARCHAR(255) SELECT @numrows = @rowcount IF @numrows = RETURN @ /* Khong co MAKH tuong ung tren bang "KHACHHANG" them mau tin vao bang "BAOHANH" */ 17 IF UPDATE(MABH) BEGIN TF (SELECT count(*) FROM BAOHANH 11, INSERTED t2 WHERE tl.MABH = t2.MABH) != @numrows BEGIN SELECT @errno = 30002, @errmsg = 'Khong co MABFI tuong ung tren bang "BAOHANH"' GOTO error END END /* Tao Trigger KT_CTHOADON de kiem tra them vao mot mau tin tren table CTHOADON nhung mau tin chua MAHD khong co table HOADON va chua MAH khong co bang HANGHOA —- */ Create TRIGGER KT_CTHOADON on CTHOADON for INSERT BEGTN DECLARE @numrows INT, @numnull INT, @errno INT, 18 BEGIN IF (SELECT count(*) FROM HOADON tl, TNSERTED t2 WHERE tl.MAHD = 12.MAHD) != @numrows BEGIN SELECT @errno = 30002, @errmsg = 'Khong co MAHD tuong ung tren bang "HOADON".' GOTO error END END /* Khong co MAH tuong ung tren bang "HANGHOA" them mau tin vao bang "CTHOADON" */ IF UPDATE(MAH) BEGTN IF (SELECT count(*) FROM HANGHOA ti, WHERE tl.MAH = t2.MAH) BEGIN ĨNSERTED t2 != @numrows SELECT @errno = 30002, /* Tao Trigger KT_HOADON de kiem tra them vao mot mau tin tren table HOADON nhung mau tin chua MAHK khong co table KHACHHANG .*/ 19 @numrows INT, @numnull INT, @errno TNT, @errmsg VARCHAR(255) SELECT @numrows = @rowcount IF @numrows = RETURN @ /* Khong co MAKH tuong ung tren bang "KHACHHANG" them mau tin vao bang "HOADON" */ IF UPDATE(MAKH) BEGIN IF (SELECT count(*) FROM KHACHHANG tl, ĨNSERTED t2 WHERE tl.MAKH = t2.MAKH) != @numrows BEGTN SELECT @errno = 30002, @errmsg = 'Khong co MAKH tuong ung tren bang "KHACHHANG".' GOTO error /* CAP NHAT DU LTEU */ /* ============================================================= */ INSERT INTO HANGHOA VALUES ('H001', 'DVD TIEN DAT', 1200000, 22, '6THG', 'DIEN TU 20 INSERT INTO HANGHOA VALUES ('H003', 'CD TIEN DAT', 1000000, 2, '1NAM', 'DIEN TU TIEN DAT', 'KHÔNG') -TRUNG TEN INSERT INTO HANGHOA VALUES ('H004', 'CD TIEN DAT', 1000000, 2, '6THG', 'DIEN TU TIEN DAT', 'KHONG') -SAIBAOHANH INSERT INTO KHACHHANG VALUES ('KH001', 'ERIC CANTONA', '33 DAI LO PARIS', '090356348', '090356348', 'eric@Yahoo.com') INSERT INTO KHACHHANG VALUES ('KH002', 'DAVIDS GINOLA', '3A DAI LO PARIS’, '8813635', '8813635', 'ginola@Yahoo.com') —DIENTHOAI KHONG PHAI LA so INSERT INTO KHACHHANG VALUES ('KH004', 'FIGO', TE REAL', 'D151258', '8151258', 'figo@Yahoo.com') —FAX KHONG PHAI LA so INSERT INTO KHACHHANG VALUES ('KH005', 'FIGO', TE REAL', '8151258', 'D151258', 'figo@Yahoo.com') —DĨENTHOAT KHONG PHAI LA HOAC so INSERT INTO KHACHHANG VALUES ('KH006', 'ZINEDINE ZIDAN’, '3 PARIS', '81525', INSERT INTO HOADON VALUES (1, 'KH001') INSERT INTO HOADON VALUES (2, 'KH001') INSERT INTO HOADON VALUES (3, 'KH001') INSERT INTO CTHOADON VALUES (1, 'H001', '4/4/2003', 2, null) INSERT INTO CTHOADON VALUES (2, 'H002', '4/4/2003', 3, null) -NGAY LAP CTHOADON LON HON NGAY HIEN HANH ĨNSERT ĨNTO CTHOADON VALUES (4, 'Hoo r, '8/4/2003', 2, 21 INSERT INTO CTHOADON VALUES (5, 'H001', '1/4/2003', -2, null) —SOLUONG LON HON SOLUONG HIEN co TRONG BANG HANHHOA INSERT INTO BAOHANH INSERT INTO (2,'KHOOl') INSERT INTO (3,'KH00r) INSERT INTO (4,'KHOOl') INSERT VALUES (1,’KHOOl’) BAOHANH VALUES BAOHANH VALUES BAOHANH VALUES INTO CTBAOHANH VALUES (1,'HOOl',2,'4/4/2003','4/13/2003',100000,'THAY CONG TAC') MOI ĨNSERT TNTO CONG TAC') CTBAOHANH VALUES (2,'H002',2,'5/4/2003','5/5/2003', 100000,THAY ĨNSERT MOI TNTO CONG TAC') INSERT INTO CTBAOHANH VALUES (3,'H002',2,'4/4/2003','4/4/2003', 100000,THAY CONG TAC') CTBAOHANH VALUES (6,'H002',2,'5/4/2003','6/5/2003', 100000,THAY MOĨ INSERT INTO CONG TAC') —SOLUONG AM INSERT INTO CTBAOHANH CONG TAC') VALUES (1,’H002',2,'5/4/2003','6/5/2003',-100000,THAY MOI —SOLUONG ... Bảng Hàng hóa: HANGHOA (MAH , TENH , GIA , SOLUONG , BAOHANH , HANGSX , KHUYENMAT) Diễn giải: MAH : Mỗi Hàng hoá có Mã hàng hoá để phận biệt với Hàng hóa khác TENH : Cho biết Tên Hàng Hoá Tên hàng. .. GIA : Cho biết Giá bán Hàng hóa Giá trị GIA phải > = SOLUONG : Cho biết sô" lượng hàng có (sô" lượng tồn ) để bán không Giá trị SOLUONG phải >= BAOHANH : Cho biết hạng bảo hành hàng Giá trị BAOHANH... A: Ràng buộc miền giá trị B Sơ ĐÔ QUAN HỆ MAKH Chobộbiết khách hàng bảo hành hàng mua (MAKH tham chiếu đến B: Ràng buộc: liên RÀNG BUỘC TOÀN VẸN QUAN HỆ LOẠ bảng I KHACHHANG C: Ràng buộc liên