Tải bản đầy đủ (.doc) (17 trang)

Hệ thống chương trình quản lý bán hàng

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (402.01 KB, 17 trang )

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
1. Cơ sở dữ liêu :
Có nội dung sau : ___________m____________
KHACH
ĐỀ
TÀI: HANG

HANGHOA

Đồ án iava
\

CTHOADON

BAOHANH
MABH
CTBAOHANH

2 . 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
7
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ó 1 Mã khách hàng để phân biệt với các
Khách
hàng khác và những lần mua hàng khác.
TENKH : Cho biết Họ và Tên cụ thể của Khách hàng mua hàng.
2007
DIACHI: Cho biết Địa chỉ củ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ột Mã hàng hoá để phận biệt với các Hàng hóa khác.
TENH : Cho biết Tên Hàng Hoá. Tên hàng phải là duy nhất.
GIA : Cho biết Giá bán của Hàng hóa. Giá trị của GIA phải > = 0
SOLUONG : Cho biết sô" lượng hàng có (sô" lượng tồn ) để bán không. Giá trị của
SOLUONG phải >= 0.
BAOHANH : Cho biết hạng bảo hành của hàng. Giá trị của BAOHANH thuộc
('3THG76THG' ,'9THG71 NAM','2NAM','3NAM').

HANGSX : Cho biết hãng sản xuâ"t tương ứng của mặt hàng này.
KHUYENMAI : Cho biết được khuyến mãi của hàng hóa (nếu có) , có thể bằng 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ột Mã hóa đơn để phân biết
cho
các lần xuâ"t khác
MAKH : Cho biết mã sô" của khách hàng mua hàng, từ MAKH này ta có thể biết
được
các
thông tin khác của khách hàng này như họ tên, địa chỉ...
+ Bảng Chi tiết Hóa đơn:
CTHOADON (MAHD , MAH , NGAYLAP, SOLUONG, THANHTIEN)
Diễn giải :
3


c . RÀNG BUỘC TOÀN VẸN
Ghi chủ: MABH : Mỗi phiếu bảo hành có 1 Mã bảo hành để phân biệt với các phiếu bảo
hành RÀNG BUỘC:
1. 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 đi 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. bộ
_ 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ị của BAOHANH phải
thuộc
MABH

: Mỗi(‘3THG76THG',
Hàng hóa có 1 sô" bảo hành (MABH). Hàng được bảo hành dựa vào
'9THG71NAM73NAM') (MAH)
KHACHHANG
A
ENTHOAI HOADON
là các sốMAHD
trong khoảng '[0-9][0-9][0-9][09] [0-9] [0-9] [0-9]' hoặc ‘[0-9] [0-9] [0-9] [0-9] [0-9] [09]
[0-9]
KHACHHANG
A
X là các sô" trong khoảng
TO-9] [0-9] [0-9] [0-9] [0-9] [0CTHOADON
9][0-9]' hoặc ‘[0-9][0-9][0-9][0-9][0-9][0-9][0-9] [0-9][0-

á

HANGHOA
HOA sao cho mã hàng của hàng hóa bằng mã
hàng
của chi tiết hóa đơn)
CTHOADON
GAYLAP hóa đơn trong bảng CTHOADON không
được
lớn hơn ngày hiện tại
CTBAOHANH
GAYTRA trên bảng CTBAOHANH phải nhỏ hơn
ngày
Hiện tại và phải lớn hơn NGAYNHAN
CTBAOHANH


A
c

CTHOADON
bằng SOLUONG trong bảng CTHOADON khi
thêm
mới một CTHOADON

654


GO

table
GO

CTBAOHANH

table
GO

BAOHANH
sysobjects

sysobje
cts

wh
ere


id = object_id(N'BAOHANH')

id = object_id(N'CTHOADON')

3 .CÀI ĐẶT RÀNG BUỘC TOÀN VẸN :
+Tạo bảng và ràng buộc khoá chính _ khóa ngoại:
if exists (select * from sysobjects where id = object_id(N'USERS') and OBJECTPROPERTY(id,
NdsUserTable')
=
1)
drop table USERS

7


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
>
0
CREATE
RULE
GIA
AS
@GIA > 0

exec sp_bindrule 'GIA','HANGHOA.GIA'
-TAO RULE SOLUONG_CTBH DE KĨEM TRA GIA TRONG BANG CTHOADON VA
GIABAN

TRONG
BANG
CTBAOHANH
PHAI
>=
1
CREATE
RULE
SOLUONG_CTBH
AS
@SOLUONG_CTBH >= 1

exec sp_bindrule 'SOLUONG_CTBH','CTBAOHANH.SOLUONG'
11


CREATE

RULE
@ SOLUONG_CTHD >= 1

SOLUONG_CTHD

AS

exec sp_bindrule 'SOLUONG_CTHD';CTHOADON.SOLUONG'
-TAO RULE SOLUONGHANG DE KIEM TRA GIA TRONG BANG HANGHOA PHAI >= 0
CREATE
RULE
SOLUONGHANG

AS
@ SOLUONGHANG>=0

exec sp_bindrule 'SOLUONGHANG', 'HANGHOA.SOLUONG'
-TAO RULE CHIPHI DE KIEM TRA GIA TRONG BANG CTBAOHANH PHAI >= 0
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 ngay 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 trong 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 khi them vao mot mau tin tren table
BAOHANH nhung mau tin nay chua MAHK khong co trong 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

=
0


/* Khong co MAKH tuong ung tren bang "KHACHHANG" khi
them
mau
tin vao bang "BAOHANH" */
IF UPDATE(MAKH)
16

for


/* Errors handling
*/
error:
RAISERROR

@errno

/*­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­
Tao Trigger KT_CTBAOHANH de kiem tra khi them vao mot mau tin tren table
CTBAOHANH nhung mau tin nay chua MAH khong co trong table HANGHOA
va
chua
MABH khong co trong 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

@
0

/* Khong co MAKH tuong ung tren bang "KHACHHANG" khi
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 khi them vao mot mau tin tren table
CTHOADON nhung mau tin nay chua MAHD khong co trong table HOADON
va
chua
MAH
khong
co
trong
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" khi 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 khi them vao mot mau tin tren table
HOADON nhung mau tin nay chua MAHK khong co trong table
KHACHHANG
______­­­­­­ ­­­­­­­­­­­­­ ­­­­­­­­­­­­­­­­­­­­­ ­­­­­­­.*/
19


@numrows INT,
@numnull INT,
@errno TNT,
@errmsg VARCHAR(255)
SELECT @numrows
=
@rowcount
IF
@numrows
=
RETURN

@
0

/* Khong co MAKH tuong ung tren bang "KHACHHANG" khi 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', '')
INSERT INTO KHACHHANG VALUES ('KH002', 'DAVIDS GINOLA', '3A DAI LO PARIS’,
'8813635', '8813635', '')

—DIENTHOAI KHONG PHAI LA so
INSERT INTO KHACHHANG VALUES ('KH004', 'FIGO', TE REAL', 'D151258', '8151258',
'')

—FAX KHONG PHAI LA so
INSERT INTO KHACHHANG VALUES ('KH005', 'FIGO', TE REAL', '8151258', 'D151258',
'')
—DĨENTHOAT KHONG PHAI LA 7 HOAC 9 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 <= 1
ĨNSERT TNTO CTBAOHANH VALUES (2,'H003',0,'5/4/2003','6/5/2003', 100000,THAY MOI
CONG TAC')
—NGAYTRA < NGAYNHAN
INSERT INTO CTBAOHANH VALUES (2,'H003',l,'6/6/2003','6/5/2003', 100000,THAY MOI
CONG TAC')
INSERT INTO USERS VALUES ('linh','sanh')

22



×