Tải bản đầy đủ (.pdf) (48 trang)

Bài tập lớn học phần hệ quản trị cơ sở dữ liệu đề tài thiết kế và quản trị cơ sở dữ liệucho cửa hàng tạp hóa

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 (3.16 MB, 48 trang )

<span class="text_page_counter">Trang 1</span><div class="page_container" data-page="1">

KHOA CÔNG NGHỆ THÔNG TIN

<b>HỌC PHẦN: HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆUĐỀ TÀI: THIẾT KẾ VÀ QUẢN TRỊ CƠ SỞ DỮ LIỆU</b>

<b>CHO CỬA HÀNG TẠP HĨA</b>

<i><b> Nhóm sinh viên thực hiện:</b></i>

<b>Cán bộ coi thi, chấm thi 1 Cán bộ coi thi, chấm thi 2 </b>

<b> HÀ NỘI - 2021 </b>

</div><span class="text_page_counter">Trang 2</span><div class="page_container" data-page="2">

<b>NHẬN XÉT CỦA GIÁO VIÊN</b>

</div><span class="text_page_counter">Trang 3</span><div class="page_container" data-page="3">

<b>MỤC LỤC</b>

<b><small>BẢNG PHÂN CÔNG NHIỆM VỤ...5</small></b>

<b><small>DANH MỤC BẢNG...6</small></b>

<b><small>PHẦN 1: GIỚI THIỆU BÀI TOÁN...7</small></b>

<b><small>PHẦN 2: THIẾT KẾ VÀ QUẢN TRỊ CƠ SỞ DỮ LIỆU...7</small></b>

<b><small>A-Thiết kế cơ sở dữ liệu...7</small></b>

<b><small>7.Tạo bảng Chi Tiết Phiếu Nhập...14</small></b>

<b><small>8.Tạo bảng Phiếu Xuất...14</small></b>

<b><small>9.Tạo bảng Chi tiết Phiếu Xuất...15</small></b>

</div><span class="text_page_counter">Trang 5</span><div class="page_container" data-page="5">

<b>BẢNG PHÂN CÔNG NHIỆM VỤ</b>

<b>Họ tênMã sinh viên</b>

1 <sup>Khảo sát yêu cầu, thiết kế CSDL (các </sup> bảng, mơ hình quan hệ), viết báo cáo 2 Thiết kế Trigger

3 Thiết kế Procedure 4 Thiết kế View 5 Thiết kế Function

</div><span class="text_page_counter">Trang 6</span><div class="page_container" data-page="6">

Bảng 1. 11: Ràng buộc khóa ngoại...11

YBảng 2. 1: Mơ hình quan hệ quản lí bán hàng...11

</div><span class="text_page_counter">Trang 7</span><div class="page_container" data-page="7">

<b>PHẦN 1: GIỚI THIỆU BÀI TOÁN</b>

- Giới thiệu đơn vị khảo sát: Cửa hàng tạp hóa Nghiệm Thu có ba nhân viên nhưng sau khi dịch Covid bùng phát thì doanh thu cửa hàng sụt giảm. Chủ cửa hàng muốn cắt giảm nhân cơng để giảm chi phí quản lí nhưng do có q nhiều sản phẩm nên khơng thể quản lí được hết thường xun xảy ra tình trạng khơng kịp thời

- Các đối tượng sử dụng cơ sở dữ liệu: chủ cửa hàng tạp hóa

- Các đối tượng cần lưu trữ: hàng hóa, khách hàng, nhà cung cấp, hóa đơn xuất nhập hàng hóa.

- Các yêu cầu thiết kế và quản trị cơ sở dữ liệu:

+ Lưu trữ các khách mua hàng thân thiết để có chương trình khuyến mãi thích hợp để kích cầu thị trường, nhà cung cấp, các hóa đơn xuất nhập hàng hóa

+ Có thơng báo khi mặt hàng tồn kho đạt số lượng báo động + Thông báo để điều chỉnh giá bán kịp thời tránh tình trạng lỗ

<b>PHẦN 2: THIẾT KẾ VÀ QUẢN TRỊ CƠ SỞ DỮ LIỆUA-Thiết kế cơ sở dữ liệu</b>

<b>I.Các bảng dữ liệu</b>

PhanTram Tỷ lệ phần trăm Real Bảng 1. 1: HANGHOA

</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="8">

<b>TênÝ nghĩaKiểuĐộ rộng</b>

Bảng 1. 2: NCC

Bảng 1. 3: DONDH

Bảng 1. 4: CTDONDH

Ngaynhap Ngày nhập hàng Datetime

Bảng 1. 5: PNHAP

</div><span class="text_page_counter">Trang 9</span><div class="page_container" data-page="9">

<b>TênÝ nghĩaKiểuĐộ rộng</b>

SlNhap Số lượng nhập hàng Int DgNhap Đơn giá nhập hàng Money

Bảng 1. 6: CTPNHAP

Ngayxuat Ngày xuất hàng Datetime

Bảng 1. 7: PXUAT

SlXuat Số lượng xuất hàng Int DgXuat Đơn giá xuất hàng Money

Bảng 1. 8: CTPXUAT

</div><span class="text_page_counter">Trang 10</span><div class="page_container" data-page="10">

<b>MaHH</b> Mã hàng hóa Char 4 SlDau Số lượng tồn đầu kỳ Int

Bảng 1. 10: KHACHHANG

</div><span class="text_page_counter">Trang 11</span><div class="page_container" data-page="11">

4 PNHAP SoDH DONDH

Bảng 1. 11: Ràng buộc khóa ngoại

<b>II.Mơ hình quan hệ </b>

Bảng 2. 1: Mơ hình quan hệ quản lí bán hàng

<b>B-Cài đặt cơ sở dữ liệuI-Tạo bảng</b>

<i><b>1.Tạo CSDL của cửa hàng</b></i>

CREATE DATABASE QLCuaHang ON PRIMARY

FILENAME='D:\QLCuahang_Data.mdf',

</div><span class="text_page_counter">Trang 12</span><div class="page_container" data-page="12">

MaHH char(4) not null, TenHH nvarchar(100) not null, DvTinh nvarchar(10) null, PhanTram real default 20,

MaNCC char(3) not null, TenNCC nvarchar(100) not null, Diachi nvarchar(100) not null, Dienthoai varchar(20) default 'chưa có',

</div><span class="text_page_counter">Trang 13</span><div class="page_container" data-page="13">

SoDH char(4) not null,

NgayDH datetime default getdate(), MaNCC char(3) null,

primary key(SoDH), foreign key(MaNCC) references NCC(MaNCC) )

<i><b>5.Tạo bảng Chi Tiết Đơn Đặt Hàng </b></i>

create table CTDONDH (

SoDH char(4) not null, MaHH char(4) not null, SlDat int null,

</div><span class="text_page_counter">Trang 14</span><div class="page_container" data-page="14">

SoPN char(4) not null,

Ngaynhap datetime default getdate(), SoDH char(4) null,

primary key(SoPN), foreign key(SoDH) references DONDH(SoDH) )

<i><b>7.Tạo bảng Chi Tiết Phiếu Nhập</b></i>

create table CTPNHAP (

SoPN char(4) not null, MaHH char(4) not null, SlNhap int null, DgNhap money null,

<i><b>8.Tạo bảng Phiếu Xuất </b></i>

create table PXUAT (

SoPX char(4) not null,

Ngayxuat datetime default getdate(), MaKH char(3) null,

</div><span class="text_page_counter">Trang 15</span><div class="page_container" data-page="15">

primary key(SoPX) )

<i><b>9.Tạo bảng Chi tiết Phiếu Xuất </b></i>

create table CTPXUAT (

SoPX char(4) not null, MaHH char(4) not null, SlXuat int null, DgXuat money null,

check(SlXuat>0 and DgXuat>0),

Namthang char(6) not null, MaHH char(4) not null, SlDau int default 0, TongSLN int default 0, TongSLX int default 0,

SlCuoi as SlDau+TongSLN-TongSLX,

check(SlDau>=0 and TongSLN>=0 and TongSLX>=0), primary key(Namthang,MaHH),

foreign key(MaHH)

</div><span class="text_page_counter">Trang 16</span><div class="page_container" data-page="16">

MaKH char(3) not null, TenKH nvarchar(100) not null, Diachi nvarchar(100) not null, Dienthoai varchar(20) default 'chưa có',

</div><span class="text_page_counter">Trang 17</span><div class="page_container" data-page="17">

<i><b>2.Bảng Nhà Cung Cấp</b></i>

<i><b>3.Bảng Đơn Đặt Hàng</b></i>

<i><b>4.Bảng Chi Tiết Đơn Đặt Hàng</b></i>

</div><span class="text_page_counter">Trang 19</span><div class="page_container" data-page="19">

<i><b>9.Bảng Khách Hàng</b></i>

<b>III-Các lệnh T_SQL</b>

<i><b>1.Thiết kế view</b></i>

<i><b>hàng hóa ,các thơng tin hiển thị gồm : Mã hàng hóa,Tên hàng hóa,Tổng số lượng nhập,Tổng số lượng xuất của mặt hàng.</b></i>

<i><b>1.2. Thiết kế view vw_CtietPXuatX003. Hiển thị thông tin chi tiết của </b></i>

<i><b>giá xuất, ngày xuất, tên khách hàng.</b></i>

</div><span class="text_page_counter">Trang 20</span><div class="page_container" data-page="20">

<i><b>1.3.Thống kê tình hình nhập hàng và đặt hàng của hàng hóa chi tiết với: Số đơn hàng, Mã hàng hóa, Tên hàng hóa,Tổng tồn bộ số lượng đặt và nhập hàng hóa </b></i>

<i><b>1.4.Hiển thị thơng tin giá bán của các mặt hàng hóa chi tiết với: Mã hàng hóa, Tên hàng hóa, đơn vị tính , giá bán</b></i>

<i><b>1.5. Hiển thị thơng tin giá mua của các mặt hàng hóa chi tiết với: Mã hàng hóa,Tên hàng hóa,đơn vị tính và giá mua</b></i>

</div><span class="text_page_counter">Trang 21</span><div class="page_container" data-page="21">

<i><b>1.6. Hiển thị các thông tin chi tiết phiếu nhâ Np trong ngày 02/11/2021, </b></i>

<i><b>1.7.Hiển thị danh sách mã hàng hóa, tên hàng hóa của các hàng hóa </b></i>

</div><span class="text_page_counter">Trang 22</span><div class="page_container" data-page="22">

<i><b>1.8. Tìm phWn trăm số lượng đã đặt hàng của từng vật tư trên tổng cộng các số lượng đã đặt hàng của toàn bộ vật tư. Dữ liệu hiển thị gồm tên vật tư, tổng số lượng đặt theo vật tư, tổng toàn bộ số lượng đặt, phWn trăm.</b></i>

<i><b>1.9.Thống kê số lượng nhập của các mặt hàng hóa trong từng năm tháng tương ứng(không sử dụng tồn kho),thông tin hiển thị gồm: Mã hàng hóa,Tên hàng hóa,Tổng số lượng nhập,thời gian nhập hàng.</b></i>

</div><span class="text_page_counter">Trang 23</span><div class="page_container" data-page="23">

<i><b>1.10.Thống kê số lượng xuất của các mặt hàng hóa trong từng năm tháng tương ứng(không sử dụng tồn kho),thông tin hiển thị gồm: Mã hàng hóa,Tên hàng hóa,Tổng số lượng xuất,thời gian xuất hàng.</b></i>

<i><b>1.11.Hiển thị thơng tin nhà cung cấp có số đơn đặt hàng cao nhất , thông tin hiển thị gồm: Mã nhà cung cấp,Tên nhà cung cấp,Số lWn đã đặt hàng.</b></i>

<i><b>1.12. Thống kê số lWn mua hàng của khách,thông tin hiển thị :Mã khách hàng,Tên khách hàng,Địa chỉ,Số điện thoại và số lWn đã mua ở cửa hàng.</b></i>

</div><span class="text_page_counter">Trang 24</span><div class="page_container" data-page="24">

<i><b>1.13. Hiển thị danh sách các khách hàng gồm các thông tin mã khách hàng, tên khách hàng, địa chỉ của những khách hàng chưa có số điện thoại.</b></i>

<i><b>1.14.Thống kê số phiếu xuất theo tháng ,thông tin hiển thị gồm năm xuất, tháng xuất và tổng số phiếu xuất theo tháng </b></i>

</div><span class="text_page_counter">Trang 25</span><div class="page_container" data-page="25">

<i><b>1.15.Thống kê số phiếu nhập theo tháng ,thông tin hiển thị gồm năm xuất, tháng xuất và tổng số phiếu nhập theo tháng </b></i>

<i><b>1.16. In ra danh sách các hàng hóa (MaHH,TenHH) khơng bán được trong năm 2021. </b></i>

<i><b>1.17. In ra doanh thu của cửa hàng bán được trong năm 2021</b></i>

</div><span class="text_page_counter">Trang 26</span><div class="page_container" data-page="26">

<i><b>1.18. Hiển thị hàng hóa (MaHH, TenHH) có tổng số lượng bán ra thấpnhất trong năm 2021.</b></i>

Bảng HANGHOA:

<i><b>_ Xây dựng trigger thêm mới dữ liệu vào bảng HANGHOA với têntg_HANGHOA_Them. Trong đó cWn kiểm tra ràng buộc dữ liệu hợp lệ: Dữliệu thêm vào phải là duy nhất</b></i>

Create trigger tg_HANGHOA_Them on HANGHOA for insert

as begin

declare @TenHH nvarchar(100), @dem int select @TenHH=TenHH from inserted

select @dem=COUNT(TenHH) from HANGHOA where TenHH=@TenHH

if @dem>=2

</div><span class="text_page_counter">Trang 27</span><div class="page_container" data-page="27">

<i><b>_ Xây dựng trigger xóa dữ liệu trong bảng HANGHOA với têntg_HANGHOA_Xoa. Trong đó cWn kiểm tra ràng buộc dữ liệu: Mã hàng hóanày khơng tồn tại trong bảng CTPXUAT hoặc CTPNHAP, CTDONDH</b></i>

Create trigger tg_HANGHOA_Xoa on HANGHOA for delete

as begin

declare @MaHH char(4), @dem int select @MaHH=MaHH from deleted

select @dem=COUNT(MaHH) from CTPXUAT where

</div><span class="text_page_counter">Trang 28</span><div class="page_container" data-page="28">

<i><b>_ Xây dựng trigger sửa dữ liệu trong bảng HANGHOA với têntg_HANGHOA_Sua. Trong đó cWn kiểm tra điều kiện ràng buộc dữ liệu hợp</b></i>

declare @TenHH nvarchar(100), @dem int select @TenHH=TenHH from inserted

select @dem=COUNT(TenHH) from HANGHOA where

</div><span class="text_page_counter">Trang 29</span><div class="page_container" data-page="29">

Bảng NCC

<i><b>_ Xây dựng trigger sửa dữ liệu trong bảng NCC với tên tg_NCC_Them.Trong đó cWn kiểm tra điều kiện ràng buộc dữ liệu hợp lệ: Dữ liệu đó là duy</b></i>

declare @TenNCC nvarchar(100), @dem int select @TenNCC=TenNCC from inserted

select @dem=COUNT(TenNCC) from NCC where

<i><b>_ Xây dựng trigger xóa dữ liệu trong bảng NCC với tên tg_NCC_Xoa.Trong đó cWn kiểm tra điều kiện ràng buộc dữ liệu hợp lệ: Mã nhà cung cấpnày không tồn tại trong bảng DONDH</b></i>

Create trigger tg_NCC_Xoa on NCC for delete

as begin

declare @MaNCC char(4), @dem int select @MaNCC=MaNCC from deleted

select @dem=COUNT(MaNCC) from DONDH where MaNCC=@MaNCC

</div><span class="text_page_counter">Trang 30</span><div class="page_container" data-page="30">

<i><b>_ Xây dựng trigger sửa dữ liệu trong bảng NCC với tên tg_NCC_Sua.Trong đó cWn kiểm tra điều kiện ràng buộc dữ liệu hợp lệ: Dữ liệu đó là duy</b></i>

declare @TenNCC nvarchar(100), @dem int select @TenNCC=TenNCC from inserted

select @dem=COUNT(TenNCC) from NCC where

<i><b>_ Xây dựng trigger sửa dữ liệu trong bảng KHACHANG với têntg_KHACHHANG_Them. Trong đó cWn kiểm tra điều kiện ràng buộc dữ liệuhợp lệ: Dữ liệu đó là duy nhất</b></i>

</div><span class="text_page_counter">Trang 31</span><div class="page_container" data-page="31">

Create trigger tg_KHACHHANG_Them on KHACHHANG for insert

as begin

declare @TenKH nvarchar(100), @dem int select @TenKH=TenKH from inserted

select @dem=COUNT(TenKH) from KHACHHANG where

<i><b>_ Xây dựng trigger xóa dữ liệu trong bảng KHACHHANG với têntg_KHACHHANG_Xoa. Trong đó cWn kiểm tra điều kiện ràng buộc dữ liệuhợp lệ: Mã khách hàng này không tồn tại trong bảng PXUAT</b></i>

Create trigger tg_KHACHHANG_Xoa on KHACHHANG for delete

as begin

declare @MaKH char(4), @dem int select @MaKH=MaKH from deleted

select @dem=COUNT(MaKH) from PXUAT where

</div><span class="text_page_counter">Trang 32</span><div class="page_container" data-page="32">

rollback tran end

end go

<i><b>_ Xây dựng trigger sửa dữ liệu trong bảng KHACHANG với têntg_KHACHHANG_Sua. Trong đó cWn kiểm tra điều kiện ràng buộc dữ liệu</b></i>

declare @TenKH nvarchar(100), @dem int select @TenKH=TenKH from inserted

select @dem=COUNT(TenKH) from KHACHHANG where

<i><b>_ Xây dựng trigger sửa dữ liệu trong bảng DONDH với têntg_DONDH_Them. Trong đó cWn kiểm tra điều kiện ràng buộc dữ liệu hợp</b></i>

</div><span class="text_page_counter">Trang 33</span><div class="page_container" data-page="33">

declare @SoDH char(4), @dem int select @SoDH=SoDH from inserted

select @dem=COUNT(SoDH) from DONDH where

<i><b>_ Tạo Trigger kiểm tra việc xóa dữ liệu cho bảng DONDH với têntg_DONDH_Xoa. Trong đó cWn kiểm tra các ràng buộc dữ liệu hợp lệ:</b></i>

<i><b>+Nếu đã có ít nhất một phiếu nhập hàng cho đơn đặt hàng đó thì thơngbáo khơng thể xóa đơn đặt hàng</b></i>

<i><b>+Nếu chưa có phiếu nhập nào thì tự động xóa các dữ liệu liên quan</b></i>

declare @SoPN char(4), @Loi char(200)

if exists(select SoPN from PNHAP where SoDH in (select SoDH from deleted))

begin

select @SoPN=min(SoPN) from PNHAP where SoDH in (select SoDH from deleted)

set @Loi=N'Đơn đặt hàng đã được nhập theo phiếu nhập' +@SoPN+ 'không thể hủy đơn đặt hàng!'

rollback tran

</div><span class="text_page_counter">Trang 34</span><div class="page_container" data-page="34">

<i><b>_ Tạo trigger sửa dữ liệu cho bảng DONDH với tên tg_DONDH_Sua.Trong đó cWn kiểm tra các ràng buộc dữ liệu hợp lệ: Không được sửa các dữliệu SoDH hoặc MaNCC vì nó liên quan tới nhiều bảng khác</b></i>

Create trigger tg_DONDH_Sua on DONDH

<i><b>_ Xây dựng trigger thêm dữ liệu trong bảng CTDONDH với têntg_DONDH_Them. Trong đó cWn kiểm tra các ràng buộc dữ liệu hợp lệ:SoDH có tồn tại trong bảng DONDH</b></i>

Create trigger tg_CTDONDH_Them on CTDONDH for insert

as

</div><span class="text_page_counter">Trang 35</span><div class="page_container" data-page="35">

declare @SoDH char(4),@Loi char(200)

if not exists (select *from inserted,DONDH where

<i><b>_ Xây dựng trigger xóa dữ liệu trong bảng CTDONDH với têntg_DONDH_Xóa. Trong đó cWn kiểm tra các ràng buộc dữ liệu hợp lệ:Khơng được xóa SoDH nếu SoDH đã tồn tại trong bảng DONDH</b></i>

Create trigger tg_CTDONDH_Xoa on CTDONDH for delete

as begin

declare @Loi char(200)

select SoDH from DONDH where SoDH in (select SoDH

<i><b>_Xây dựng trigger sửa dữ liệu trong bảng CTDONDH với têntg_DONDH_Sua. Trong đó cWn kiểm tra các ràng buộc dữ liệu hợp lệ:Khơng được sửa SoDH vì liên quan đến nhiều bảng</b></i>

Create trigger tg_CTDONDH_Sua on CTDONDH for update

</div><span class="text_page_counter">Trang 36</span><div class="page_container" data-page="36">

<i><b>_ Xây dựng trigger khi thêm mới dữ liệu vào bảng PNHAP với têntg_PNHAP_Them. Trong đó cWn kiểm tra các ràng buộc dữ liệu phải hợp lệ:Ngày nhập hàng phải sau ngày đặt hàng</b></i>

Create trigger tg_PNHAP_Them on PNHAP

</div><span class="text_page_counter">Trang 37</span><div class="page_container" data-page="37">

rollback tran end

end go

<i><b>_ Xây dựng trigger khi xoá dữ liệu trong bảng PNHAP với têntg_PNHAP_XOA. Trong đó cWn thực hiện hành động: Tự động xố các dịngdữ liệu liên quan bên bảng CTPNHAP</b></i>

Create trigger tg_PNHAP_Xoa on PNHAP for delete

as begin

declare @SoPN char(4)

select @SoPN =SoPN from deleted

if exists(select SoPN from CTPNHAP where SoPN=@SoPN)

delete from CTPNHAP where SoPN=@SoPN end

<i><b>_ Xây dựng trigger khi sửa dữ liệu trong bảng PNHAP với têntg_PNHAP_SUA. Trong đó cWn kiểm tra các ràng buộc dữ liệu phải hợp lệ:</b></i>

<i><b> + Không cho phép sửa đổi giá trị của các cột: số nhập hàng, số đặthàng</b></i>

<i><b>+ Kiểm tra giá trị mới của cột ngày nhập hàng phải sau ngày đặt hàng</b></i>

Create trigger tg_PNHAP_Sua on PNHAP for update

as begin

declare @ngaynhap datetime,@ngaydathang datetime if (update (SoPN) or update(SoDH))

</div><span class="text_page_counter">Trang 38</span><div class="page_container" data-page="38">

<i><b>_ Xây dựng trigger khi thêm mới dữ liệu vào bảng CTPNHAP với têntg_CTPNHAP_Them. Trong đó cWn kiểm tra các ràng buộc dữ liệu: Số lượngnhập hàng <= (Số lượng đặt – Tổng số lượng đã nhập vào trước đó)tg</b></i>

Create trigger tg_CTPNHAP_Them on CTPNHAP for insert

as begin

declare @SoPN char(4), @MaHH char(4), @Tongnhap int, @SoDH char(4), @SlDat int

select @SoPN=SoPN, @MaHH=MaHH from inserted select @SoDH=SoDH from PNHAP where SoPN=@SoPN select @SlDat=SlDat from CTDONDH where SoDH=@SoDH and MaHH=@MaHH

select @Tongnhap=sum(SlNhap) from CTPNHAP,PNHAP

PNHAP.SoPN=CTPNHAP.SoPN

</div><span class="text_page_counter">Trang 39</span><div class="page_container" data-page="39">

if (@Tongnhap>(select SlDat from CTDONDH where SoDH=@SoDH and MaHH=@MaHH))

<i><b>_ Tạo thêm cột Thanhtien cho bảng CTPNHAP, sau đó tạo trigger cậpnhật giá trị tự động cho cột Thanhtien</b></i>

Alter table CTPNHAP add Thanhtien money Create Trigger Capnhat_Thanhtien on CTPNHAP

For Insert, Update As

Declare @MaHH char(4), @SoPn char(4)

Select @MaHH=MaHH, @SoPN=SoPN from Inserted Update CTPNHAP set ThanhTien = SlNhap*DgNhap where (MaHH=@MaHH) and (SoPN=@SoPN)

end go

<i><b>_ Xây dựng trigger khi xoá dữ liệu trong bảng CTPNHAP với têntg_CTPNHAP_Xoa. Trong đó cWn kiểm tra các ràng buộc dữ liệu hợp lệ:Khơng thể xóa nếu số phiếu nhập có tồn tại trong bảng phiếu nhập</b></i>

Create trigger tg_CTPNHAP_Xoa on CTPNHAP

</div><span class="text_page_counter">Trang 40</span><div class="page_container" data-page="40">

select @SoPN=SoPN from deleted

select @dem=COUNT(SoPN) from PNHAP where

<i><b>_ Sửa Trigger để giá trị cột ThanhTien = SlNhap*DgNhap*2:</b></i>

Alter Trigger Capnhat_Thanhtien on CTPNHAP For Insert, Update

As begin

Declare @MaHH char(4), @SoPN char(4)

Select @MaHH=MaHH, @SoPN=SoPN from Inserted Update CTPNHAP

(MaHH=@MaHH) and (SoPN=@SoPN) end

go h.

Bảng PXUAT

<i><b>_ Xây dựng trigger khi thêm dữ liệu trong bảng PXUAT với têntg_PXUAT_Them. Trong đó cWn kiểm tra các ràng buộc dữ liệu hợp lệ:MaKH phải tồn tại trong bảng khách hàng</b></i>

Create trigger tg_PXUAT_Them on PXUAT for insert

as

</div><span class="text_page_counter">Trang 41</span><div class="page_container" data-page="41">

declare @MaKH char(3), @Loi char(200)

if not exists(select *from inserted,KHACHHANG where

<i><b>_ Xây dựng trigger khi xoá dữ liệu trong bảng PXUAT với têntg_PXUAT_XOA. Trong đó cWn thực hiện hành động: Tự động xố các dịngdữ liệu liên quan bên bảng CTPXUAT</b></i>

Create trigger tg_PXUAT_Xoa on PXUAT for delete

as begin

declare @SoPX char(4)

select @SoPX=SoPX from deleted

if exists(select SoPX from CTPXUAT where SoPX=@SoPX)

delete from CTPXUAT where SoPX=@SoPX end

<i><b>_ Xây dựng trigger khi sửa dữ liệu trong bảng PXUAT với têntg_PXUAT_Sua. Trong đó cWn thực hiện hành động: Khơng cho phép sửagiá trị của cột SoPX</b></i>

Create trigger tg_PXUAT_Sua on PXUAT for update

as

</div><span class="text_page_counter">Trang 42</span><div class="page_container" data-page="42">

<i><b>_ Xây dựng trigger khi thêm dữ liệu trong bảng CTPXUAT với têntg_CTPXUAT_Them. Trong đó cWn kiểm tra các ràng buộc dữ liệu hợp lệ:SoPX phải tồn tại trong bảng phiếu xuất</b></i>

Create trigger tg_CTPXUAT_Them on CTPXUAT for insert

as begin

declare @SoPX char(4), @Loi char(200)

if not exists(select *from inserted,PXUAT where

<i><b>_ Xây dựng trigger khi thêm dữ liệu trong bảng CTPXUAT với têntg_CTPXUAT_Them. Trong đó cWn kiểm tra các ràng buộc dữ liệu hợp lệ: Sốlượng xuất < Số lượng cuối trong bảng tồn kho</b></i>

Create trigger tg_CTPXUAT_Them2 on CTPXUAT for insert

as begin

</div>

×