Ngay từ năm 2 các bạn sinh viên đã được học tập và làm quen với môn học Hệ Quản Trị Cơ Sở Dữ Liệu để hình dung rõ nét về minh họa cụ thể về dữ liệu.... Nhóm chúng em đã được nhận đề tài
Trang 1TRƯỜNG ĐẠI HỌC THỦ DẦU MỘT
VIỆN KỸ THUẬT CÔNG NGHỆ
Trang 2Tháng 10 / 2023
MỤC LỤC
Mục Lục.
L I M ĐẦẦUỜ Ở 3
DANH M C HÌNH NHỤ Ả 3
DANH M C T VIẾẾT TẮẾTỤ Ừ 3
CHƯƠNG 1 QU N LÝ CẢ Ơ Ở Ữ Ệ 4 S D LI U 1 Giới thiệu Cơ sở dữ liệu 4
2 Mô tả cơ sở dữ liệu 5
3.Sơ đồ mới quan hệ 6
CHƯƠNG 2 CÁC THAO TÁC TRẾN C S D LI UƠ Ở Ữ Ệ 6
1.Tạo các View 7
2.Xây dựng các Stored procedure 11
3.Xây dựng các Funtion 14
4.Xây dựng các Trigger và Transaction 17
5.Tạo các user 20
CHƯƠNG 3 KẾẾT LU NẬ 21
1.Kết quả đã làm được 21
2.Hạn chế (chưa làm được) .21
3.Thuận lợi và khó khăn 21
TÀI LI U THAM KH OỆ Ả 22
Trang 3LỜI MỞ ĐẦU
Dưới sự tác động của công cuộc đổi mới và hội nhập đất nước, Việt Nam đã có những phát triển vượt bậc, hội nhập mạnh mẽ trong cuộc cách mạng công nghiệp 4.0, Việt Nam đã có những chính sách và hướng đi độc đáo trong giáo dục giúp cho nguồn nhân lực ở Việt Nam ngày càng nâng cao trình độ và phát triển nghề nghiệp.
Hiện nay ở Việt Nam các nghành về lĩnh vực Công nghệ thông tin luôn hấp dẫn và thu hút được số lượng lớn sinh viên theo học Ngay từ năm 2 các bạn sinh viên đã được học tập và làm quen với môn học Hệ Quản Trị Cơ Sở Dữ Liệu để hình dung rõ nét về minh họa cụ thể về dữ liệu
Nhóm chúng em hiện nay cũng đã và đang học tập môn học Hệ Quản Trị Cơ Sở
Dữ liệu dưới sự hướng dẫn của Cô Nguyễn Thị Hồng Nhóm chúng em đã được nhận đề tài 4 Kiểm kê hàng hóa trong Cơ sở Dữ Liệu AdventureWork để làm Tiểu luận cuối kì kết thúc môn học.
Mặc dù đã vận dụng hết khả năng của mình nhưng nhóm chúng em biết rằng vốn kiến thức và tầm hiểu biết của mình vẫn còn hạn chế, thiếu sót Nhóm chúng em hy vọng rằng nhận được những đánh giá và đóng góp ý kiến của quý thầy cô và các bạn để bài tiểu luận của nhóm chúng em hoàn thiện nhất.
Nhóm chúng em xin chân thành cảm ơn!
DANH MỤC HÌNH ẢNH
DANH MỤC TỪ VIẾT TẮT
Trang 4CHƯƠNG 1 QUẢN LÝ CƠ SỞ DỮ LIỆU
1 Giới thiệu Cơ sở dữ liệu
a ) AdventureWorks:
Cơ sở dữ liệu minh họa AdventureWorks lấy bối cảnh trên dữ liệu của 1 công ty hư cấu có tên Adventure Works Cycles Đây được cho là 1 công ty sản xuất đa quốc gia có qui mô lớn Công ty sản xuất và kinh doanh xe đạp làm từ kim loại và các chất liệu tổng hợp Thị trường của công ty này bao gồm cả khu vực Bắc Mỹ, Châu Âu và Châu Á Trong khi trụ sở chính của công ty lại được đặt ở Bothell, Washington gồm có 290 nhân viên, công ty cũng có 1 vài nhóm nhân viên kinh doanh khu vực ở các thị trường hoạt động của mình.
Vào năm 2000, công ty Adventure Works Cycles có mua lại 1 nhà máy sản xuất nhỏ là Importadores Neptuno ở Mexico Nhà máy này tham gia sản xuất 1 vài thành phần thiết yếu trong toàn bộ dây chuyền sản xuất ra thành phẩm của công ty Các thành phần được nhà máy này sản xuất sẽ được chuyển tới trụ sở chính ở Bothell để lắp ráp thành thành phẩm Năm
2001, Importadores Neptuno trở thành nhà máy duy nhất sản xuất phà phân phối dòng sản phẩm xe đạp du lịch.
Kết thúc 1 năm tài chánh thành công, công ty Adventure Works Cycles đang tìm cách mở rộng thị phần bằng cách tập trung vào các hoạt động bán hàng cho các khách hàng quan trọng nhất của họ, mở rộng thông tin sản phẩm thông qua hệ thống Website đồng thời, tiết giảm chi phí bán hàng bằng cách giảm chi phí sản xuất.
b ) Cơ sở dữ liệu của bài tiểu luận
Trong bài tiểu luận nhóm chúng em sẽ làm về cơ sở dữ liệu các sản phẩm được sản xuất và bán bởi công ty Adventure Works Cycles Nhóm đã chọn Production về Mô tả, minh họa sản phẩm trong Cơ sở dữ liệu minh họa AdventureWorks.
Trang 52 Mô tả cơ sở dữ liệu.
Trang 63.Sơ đồ mới quan hệ
Hình 1 : Sơ đồ quan hệ kiểm kê hàng hóa
CHƯƠNG 2 CÁC THAO TÁC TRÊN CƠ SỞ DỮ LIỆU
1.Tạo các View
Xây dựng 5 View theo các cấp độ
Trang 7 2 view có điều kiện đơn giản (trên 1 bảng, nhiều bảng)
Câu 1 ) Tạo view in ra các mặt hàng hết hạn sử dụng trong bảng HANGTON (trạng thái hàng='0')
Hình 2 Kết quả câu 1 View
Câu 2 ) Tạo view cho biết tổng số lượng của loại hàng kẹo.
Hình 3 Kết quả câu 2 View
2 view có điều kiện phức tạp
Câu 3 ) Tạo view cho biết số tiền của các đơn hàng tồn,thông tin gồm :MaHD,MaHang, SoLuongTon, TrangThaiTon, NgayNhap.Trong đó: Nếu ngày nhập <30 NGÀY :HẾT HẠN; ngày nhập từ 30 NGÀY tháng đến <90 NGÀY tháng:Đang trong quá trình xử lý;ngày nhập >90 NGÀY :Còn hạn
Trang 8JOIN HANGTON AS HT ON HD MaHang HT MaHang =
JOIN CTHOADON AS CTHD ON HD.MaHD CTHD.MaHD=
GO
Kết quả : select FROM TIEN;
go
Hình 4 Kết quả câu 3 View
Câu 4 ) Tạo view IN RA HÓA ĐƠN THÔNG TIN BAO GỒM
MaHD,TenNCC,DiaChi ,SoDT,Soluong ,TỔNG TIỀN NHẬP HÀNG.TRONG ĐÓ:với nhập hàng số lượng <100 :THÔNG THƯỜNG, với nhập hàng số lượng
>100:QUEN THUỘC VỚI TỔNG TIỀN NHẬP HÀNG=(SL*đơn giá bán)
WHEN NH SoLuong 80 < THENN'M I'Ớ
WHEN NH SoLuong >=80 and NH.SoLuong<120 THENN'QUEN THU C'Ộ ELSEN'THÂN THI T'Ế
ENDAS LoaiNhapHang,
(NH.SoLuong * NH.DonGia)AS TongTien
FROM HOADON AS HD
JOIN NHAPHANG AS NH ON HD MaHang = NH MaHang
JOIN CTHOADON AS CTHD ON HD.MaHD = CTHD.MaHD
JOIN NHACUNGCAP AS NCC ON CTHD.MaNCC = NCC MaNCC
Trang 9INNER JOIN CTHOADON AS CT ON HD MaHD CT.MaHD =
INNER JOIN HANGTON AS HT ON HD MaHang = HT MaHang ;
GO
T o trigger cho view đ c p nh t d li uạ ể ậ ậ ữ ệ
CREATE TRIGGER TR_HOADON_CT ON V_HOADON_CT
INSTEAD OF INSERT,UPDATE,DELETE
X lý trử ường h p INSERT vào viewợ
INSERT INTO HOADON MaHD, MaHang NgayNhap, )
SELECT i.MaHD, i.MaHang, i.NgayNhapHoaDon
FROM INSERTED i;
Trang 10SELECT i.MaHD, i.MaNCC, i.SoLuong, i.DonGiaBan
FROM INSERTED i;
Logic c p nh t HANGTONậ ậ
Tìm MaHangTon cu i cùngố
DECLARE @LastMaHangTon VARCHAR();
SELECT TOP 1 @LastMaHangTon MaHangTon=
FROM HANGTON
ORDER BY MaHangTon DESC;
T o MaHangTon m i d a trên MaHangTon cu i cùngạ ớ ự ố
DECLARE @NewMaHangTon VARCHAR();
SET @NewMaHangTon =
CASE
WHEN @LastMaHangTon IS NULL THEN'HT001'
ELSE'HT' + RIGHT('000' CAST CAST( (RIGHT(@LastMaHangTon, 3)ASINT) 1 + AS VARCHAR( )),3 3)
C p nh t view sau khi INSERTậ ậ
DELETE FROM V_HOADON_CT;
INSERT INTO V_HOADON_CT
INNER JOIN CTHOADON AS CT ON HD MaHD CT = MaHD
INNER JOIN HANGTON AS HT ON HD MaHang HT = MaHang;
Trang 11Hình 6 Kết quả câu 5 View
2.Xây dựng các Stored procedure
Trang 12K t ế qu : ả DECLARE @TONGSL int;
EXEC PR_OUTPUT_TONGSL_NCC'NCC10', @TONGSL OUTPUT;
PRINT'Tong so luong ton kho cho NCC10: ' CAST(@TONGSL AS varchar(10));GO
Hình 9 Kết quả câu 3 Stored procedure
INSERT INTO NHACUNGCAP MaNCC, TenNCC DiaChi SoDT, , )
VALUES (@MaNCC, @TenNCC @DiaChi @SoDT, , );
Trang 13b ng sau khi INPUT vàoả
SELECT *FROM NHAPHANG;
GO
Trang 14Hình 11 Kết quả câu 5 Stored procedure
3.Xây dựng các Funtion
2 hàm trả về kiểu vô hướng
Câu 1) tổng số lượng kho tồn
DECLARE @Tonghang INT;
SELECT @Tonghang =SUM(SoLuongTon)
K t ế Quả: DECLARE @TotalInventory1 INT;
SET @TotalInventory1 = dbo.FU_SUM_TONKHO('NCC10');
PRINT'Tong so l ong ton kho cho NCC10 là: 'ư +CAST(@TotalInventory1 ASVARCHAR(10));
Hình 12 Kết quả câu 1 Function
Câu 2) Tổng số lượng kho hàng
DECLARE @Tonghang INT;
SELECT @Tonghang =SUM(SoLuong)
FROM NHAPHANG
WHERE MaNCC @MaNCC= ;
Trang 15Go
K t ế Quả: DECLARE @TotalQuantity INT;
SET @TotalQuantity dbo= FU_SUM_NHAPHANG('NCC10');
PRINT'T ng s lổ ố ượng hàng nh p cho NCC10 là: 'ậ +CAST(@TotalQuantity ASVARCHAR(10));
Hình 13 Kết quả câu 2 Function
JOIN NHAPHANG NH ON NC MaNCC NH = MaNCC
GROUP BY NC.MaNCC, NC.TenNCC
HAVINGSUM(NH SoLuong )> @VALUE
);
K t ế Quả: SELECT *FROM dbo.FU_MAXVALUE_NHAPHANG 100( );
Hình 14 Kết quả câu 3 Function
Câu 4) Tạo hàm trả về danh sách các nhà cung cấp có tổng số lượng hàng nhập nhỏ hơn một giá trị cho trước.
JOIN NHAPHANG NH ON NC MaNCC NH = MaNCC
GROUP BY NC.MaNCC, NC.TenNCC
HAVINGSUM(NH SoLuong )<= @VALUE
);
GO
Trang 16K t ế Quả: SELECT FROM dbo.FU_MINVALUE_NHAPHANG(100);
Hình 15 Kết quả câu 4 Function
DECLARE @StartDate datetime '2023-06-01';
DECLARE @EndDate datetime ='2023-06-30';
INSERT INTO @ResultTable
SELECT *FROM dbo.FN_GetHangTonTheoNgayNhap @StartDate( , @EndDate);
Trang 17Hình 16 Kết quả câu 5 Function
4.Xây dựng các Trigger và Transaction
/* Th c hi n các hành đ ng sau khi có s chèn d li u vào b ng NHAPHANGự ệ ộ ự ữ ệ ả
đo n code th c hi n vi c c p nh t s lạ ự ệ ệ ậ ậ ố ượng t n trong b ng HANGTONồ ả
d a trên thông tin t b ng NHAPHANG */ự ừ ả
Trang 18Đo n code th c hi n vi c c p nh t s lạ ự ệ ệ ậ ậ ố ượng t n trong b ng HANGTONồ ả
d a trên thông tin t b ng NHAPHANG sau khi c p nh t */ự ừ ả ậ ậ
UPDATE HANGTON
SET SoLuongTon SoLuongTon = - dSoLuong i- SoLuong)
FROM HANGTON AS ht
INNER JOIN deleted AS d ON ht MaHang d = MaHang
INNER JOIN inserted AS i ON ht MaHang i = MaHang;
Hình 18 Kết quả câu 2 Trigger và Transaction
1 Trigger Delete (có thể kết hợp 3 loại Trigger này)
/* Th c hi n các hành đ ng sau khi có s xóa b n ghi kh i b ng NHAPHANGự ệ ộ ự ả ỏ ả
Đo n code th c hi n vi c c p nh t s lạ ự ệ ệ ậ ậ ố ượng t n trong b ng HANGTONồ ả
d a trên thông tin t b ng NHAPHANG sau khi xóa */ự ừ ả
Xóa m t b n ghi kh i NHAPHANGộ ả ỏ
DELETE FROM NHAPHANG
WHERE MaHang ='MH028';
Giao d ch s t đ ng kích ho t trigger TR_Delete_NhapHang, ị ẽ ự ộ ạ
trigger này s c p nh t s lẽ ậ ậ ố ượng t n trong b ng HANGTONồ ả
COMMIT;
GO
Trang 19Hình 19 Kết quả câu 3 Trigger và Transaction
2 Transaction
CODE : a)
T o th t c c p nh t cho b ng NHAPHANG theo MaHang N u MaHang không t n t i thìạ ủ ụ ậ ậ ả ế ồ ạbáo l i N u Tên sp ho c mã đ nh danh b trùng thì b qua và ti n hành thêm nh ng ỗ ế ặ ị ị ỏ ế ữgiá trị
Ki m tra xem MaHang đã t n t i trong b ng NHAPHANG hay ch aể ồ ạ ả ư
IFEXISTS SELECT 1 FROM NHAPHANG WHERE MaHang @MaHang= )
N u MaHang không t n t i, th c hi n vi c thêm d li u m iế ồ ạ ự ệ ệ ữ ệ ớ
INSERT INTO NHAPHANG MaHang, MaNCC LoaiHang TenHang SoLuong , , , ,TrangThai, DonGia NgayNhap, )
VALUES (@MaHang, @MaNCC @LoaiHang @TenHang @SoLuong @TrangThai , , , , ,
COMMIT; L u các thay đ i n u không có l iư ổ ế ỗ
PRINTN'Đã Hoàn t t và L u các thay đ i'ấ ư ổ ;
Trang 20BEGIN TRANSACTION;
Ki m tra xem b ng SP_HETHAN có t n t i hay khôngể ả ồ ạ
IFOBJECT_ID('SP_HETHAN','U')IS NOT NULL
BEGIN
N u t n t i, xóa b ng SP_HETHANế ồ ạ ả
DROPTABLE SP_HETHAN;
END
DECLARE @Now DATETIME;
SET @Now =GETDATE();
INSERT INTO SP_HETHAN MaHang, NgayNhap TrangThai, )
SELECT MaHang, NgayNhap ,N'H t h n'ế ạ
K t ế qu : ả SELECT FROM SP_HETHAN;
Hình 21 Kết quả câu 5 Trigger và Transaction
5.Tạo các user
Tạo 2 user
T o m t đăng nh p cho ngạ ộ ậ ười dung
Trang 21C p các quy n c n thi t cho ngấ ề ầ ế ười dùng
Ví d : C p quy n SELECT, INSERT, UPDATE, DELETE trên các b ng c thụ ấ ề ả ụ ể
GRANT SELECT,INSERT,UPDATE,DELETE ON NHACUNGCAP TO YourUserName;
GRANT SELECT,INSERT,UPDATE,DELETE ON NHAPHANG TO YourUserName;
GRANT SELECT,INSERT,UPDATE,DELETE ON HANGTON TO YourUserName;
GRANT SELECT,INSERT,UPDATE,DELETE ON HOADON TO YourUserName;
GRANT SELECT,INSERT,UPDATE,DELETE ON CTHOADON TO YourUserName;
Tuỳ ch n, b n có th c p quy n EXECUTE trên các th t c l u tr ho c các đ i ọ ạ ể ấ ề ủ ụ ư ữ ặ ố
Về view nhóm đã làm được 2 view đơn giản, 2 view phức tạp và 1 view phức tạp cập nhật dữ liệu Còn đối với Stored procedure nhóm đã thực hiện 1 thủ tục không tham số, 1 thủ tục tham số mặc định, 1 thủ tục tham số output và 2 thủ tục có tham
số intput Bên cạnh đó Function nhóm đã làm đươc 2 hàm trả về vô hướng và 3 hàm trả về bảng trong đó trả về 1 bảng tự định nghĩa Không những thế về Trigger
và Transaction nhóm đã làm được 1 trigger insert, 1 trigger update,1 trigger delete
và 2 Transaction Mặc khác nhóm đã tạo ra được 2 user trên cơ sở dữ liệu 2.Hạn chế (chưa làm được)
Dữ liệu lớn chưa thể khai thác hết tối đa dữ liệu.
3.Thuận lợi và khó khăn
1 Thuận lợi
Trang 22Hệ cơ sở dữ liệu lớn, đầy đủ các chi tiết giúp cho nhóm dễ dàng thực hiện các câu lệnh truy vấn, ngoài ra nhóm nhận được sự hướng dẫn nhiệt tình của giảng viên và tinh thần đoàn kết giúp đỡ lẫn nhau trong nhóm…
1 Khó khan
Lần đầu tiên tiếp xúc với Hệ cơ sở dữ liệu lớn nên nhóm còn nhiều bỡ ngỡ, phải dành nhiều thời gian để nắm được các mỗi quan hệ và ý nghĩa của các bảng trong cơ sở dữ liệu AdventureWorks
TÀI LIỆU THAM KHẢO
[1] https://learn.microsoft.com/en-us/sql/samples/adventureworks-install-configure? view=sql-server-ver16&tabs=ssms
[2]
https://www.hocviendaotao.com/2017/04/gioi-thieu-co-so-du-lieu-adventureworks.html
Liệt kê tất cả các tài liệu mà nhóm đã sử dụng để thực hiện đồ án này
HƯỚNG DẪN ĐỊNH DẠNG
1 Định dạng trang: lề trái 3cm, phải 2cm, trên 2.5cm, dưới 2.5cm
2 Font chữ: Times New Roman
3 Size: 13 cho toàn bộ nội dung (ngoại trừ các tiêu đề chương, phần thì size 14)
4 Nội dung văn bản canh đều 2 bên
5 Hình ảnh, bảng (nếu có) canh giữa, đặt tên hình, tên bảng theo thứ tự tăng dần