TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP.HCMKHOA CÔNG NGHỆ THÔNG TIN ĐỀ TÀI ĐỒ ÁN HỌC PHẦNTÊN HỌC PHẦN: Hệ quản trị cơ sở dữ liệu DBMS MÃ SỐ LỚP HP: DBMS330284_01 Tên đề tài: Hệ quản trị Cơ sở
GIỚI THIỆU VỀ ĐỒ ÁN HỌC PHẦN 8 1.1 Tổng quan về Đồ Án Học Phần
Nội dung chuyên môn chính của ĐỒ ÁN HỌC PHẦN
Đồ án tập tổ chức cài đặt Hệ thống CSDL “Quản lý ” trên Hệ quản trị CSDL MS. SQL Server với các nội dung chuyên môn như sau:
+ Mô tả Hệ thống CSDL “Quản lý ” sẽ được tổ chức trên DBMS SQL Server
+ Thiết lập và định nghĩa CSDL “Quản lý ” dùng DDL.
+ Thực hiện các thiết lập an toàn vào bảo mật CSDL “Quản lý ”
+ Cài đặt các điều khiển cần thiết cho CSDL “Quản lý ” dùng DCL
+ Cài đặt các thủ tục thao tác CSDL “Quản lý ” dùng DML
+ Cài đặt các SP (Store Procedure) phục vụ khai thác sử dụng CSDL “Quản lý ” + Cài đặt các Trigger phục vụ đảm bảo RBTV CSDL “Quản lý ”
+ Cài đặt các nền tảng kết nối CSDL “Quản lý ”
Công cụ thực hiện ĐỒ ÁN HỌC PHẦN
SQL Server Management Studio 2022, version: 15.0
Thủ tục đăng nhập vào DBMS được thực hiện như Hình 1-1
Hình 1-1 Màn hình đăng nhập MS SQL Server
Bố cục của báo cáo
Báo cáo gồm những nội dung như sau:
Chương 1 Giới thiệu đồ án của Học phần
Chương 2 Các cơ sở lý thuyết phục việc thực hiện đề tài Học phần
Chương 3 Tổ chức hệ thống CSDL “Quản lý ” trên DBMS MS SQL Server (bao gồm bảo mật).
Chương 4 Cài đặt các thủ tục khai thác sử dụng CSDL “Quản lý ” trên DBMS MS SQL
Chương 5 Tổng kết các kết quản đạt được và còn hạn chế của đồ án, đồng thời đề xuất hướng khắc phục hạn chế và phát triển Đồ án.
Giới thiệu yêu cầu DB của đề tài
1.5.1 Giới thiệu nghiệp vụ … liên quan
1.5.2 Mô tả hệ thống Cơ sở dữ liệu “QUẢN LÝ BÁN HÀNG CỦA PNJ"
Xét một phần (trích) CSDL “QUẢN LÝ BÁN HÀNG CỦA PNJ” được mô tả như sau:
- Thông tin về Nhân viên giao hàng: Họ tên nhân viên, Giới tính, Số điện thoại;
- Thông tin về Khu vực giao hàng: Tên khu vực giao hàng;
Mỗi khu vực giao hàng được quản lý bởi nhiều nhân viên giao hàng, trong đó mỗi nhân viên có khả năng phụ trách nhiều khu vực lân cận khác nhau.
- Thông tin về Đơn đặt hàng: Mã đơn đặt hàng, Địa chỉ giao hàng, Thời hạn giao hàng, Tình trang giao hàng (đã giao hay chưa)
Mỗi đơn đặt hàng thuộc 1 khu vực giao hàng; mỗi khu vực giao hàng có nhiều đơn đặt hàng phải giao;
Mỗi đơn hàng sẽ được giao cho một nhân viên giao hàng cụ thể, và một nhân viên có thể đảm nhiệm nhiều đơn hàng khác nhau.
ERD của DB quản lý … của ………như Hình 1-2
Hình 1-2 ERD của DB quản lý của
Danh sách LĐQH của DB quản lý … của ………như sau:
DDH(MSDDH, DiaChiGiao, ThoiHanGiao, TinhTrang, MSNV, MSKV)
NV(MSNV, HoTen, GioiTinh, SoDienThoai)
1.5.5 Sơ đồ vậy lý (Diagrams trên MS SQL Server)
Sơ đồ vậy lý (Diagrams) của DB quản lý bán hàng của PNJ như Hình 2-3
CƠ SỞ LÝ THUYẾT CỦA HỌC PHẦN 12 2.1 Tổng quan về DBMS
Công cụ Quản trị CSDL
+ Giới thiệu Hệ quản trị CSDL MS.SQL Server
+ Các đối tượng quản lý trong SQl Server : DataBase, Table, View, Diagram, Index, …
+ An toàn và Bảo mật trong SQL Server : Authenticate, sa, … Backup_Restore, Detach_Attach,…
2.3 Tập lệnh SQL (Thông dịch)
+ Tập lệnh SQL cơ bản
+ Tập lệnh định nghĩa dữ liệu [DDL] : Create, Drop,…
+ Tập lệnh điều khiển dữ liệu [DCL] : Grant, Revote,
+ Tập lệnh thao tác dữ liệu [DML] : Insert, Delete, Update,
+ DML: Vấn tin (Truy vấn) dữ liệu : Select…
2.4 Lập trình biên dịch trên MS SQL Server
+ Thủ tục lưu trữ (SP : Store Procedure)
+ Trigger và xử lý RBTV DL
2.5 Giới thiệu một số công cụ kết nối CSDL
+ Data Link OLE DB với udl file
+ Quản trị Các Services của MS SQl Server
+ Giới thiệu một số vấn đề liên quan : Distribution, DWH, DMN, BigData,
Lập trình biên dịch trên MS SQL Server
+ Thủ tục lưu trữ (SP : Store Procedure)
+ Trigger và xử lý RBTV DL
Giới thiệu một số công cụ kết nối CSDL
+ Data Link OLE DB với udl file
+ Quản trị Các Services của MS SQl Server
+ Giới thiệu một số vấn đề liên quan : Distribution, DWH, DMN, BigData,
TỔ CHỨC HỆ THỐNG CƠ SỞ DỮ LIỆU “QUẢN LÝ ”TRÊN DBMS MS SQL SERVER
Quản trị tài khoản (Account) và an toàn bảo mật hệ thống CSDL
* SQL Server luôn có UA cấp cao nhất : sa (System Administrator)
* Ngoài ra, khi quản trị DB, người quản trị (sa) phải cấp UA theo chức năng từng đơn vị : Trong đề tài :
Salestt là quyền truy cập dành cho bộ phận bán hàng của PNJ, cho phép chỉ được truy xuất dữ liệu từ cơ sở dữ liệu bán hàng Trong khi đó, Accstt là quyền truy cập dành cho bộ phận kế toán phụ trách hóa đơn của PNJ, cho phép chỉ được truy xuất dữ liệu từ cơ sở dữ liệu hóa đơn.
Các DB User Account nếu trên có Password ban đầu: 123, như Hình 2-1
Hình 2-1 Cấp DB UA cho bộ phận bán hàng của PNJ
2 Việc này thực hiện theo “CSDL Phân tán: Distribution DB”, trong phạm vị Đề tài này chưa thực hiện.
3 Việc này thực hiện theo “CSDL Phân tán: Distribution DB”, trong phạm vị Đề tài này chưa thực hiện.
Hình 2-2 Kết quả cấp DB UA cho hệ thống PNJ
Cài đặt hệ thống CSDL “… ” trên DBMS MS SQL Server
C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\DATA\
Hình 2-3 Màn hình lập CSDL mới "Bán hàng của PNJ"
/****** Object: Database [a08VXTHE_SaleJ] Script Date: 08/05/2024 8:22:41 PM
/****** Object: Database [a08VXTHE_SaleJ] Script Date: 08/05/2024 8:22:41 PM
/****** Object: Database [a08VXTHE_SaleJ] Script Date: 08/05/2024 8:08:38 PM
FILENAME = N' C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\DATA\ a08VXTHE_SaleJ.mdf',
SIZE 8192KB MAXSIZE = , = UNLIMITED, FILEGROWTH 65536KB = )
FILENAME = N' C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\DATA \ a08VXTHE_SaleJ_log.ldf',
SIZE 8192KB MAXSIZE 2048GB FILEGROWTH 65536KB = , = , = )
+ Tên CSDL (Database Name): a08VXTHE_SaleJ.mdf : File CSDL a08VXTHE_SaleJ_log.ldf: Log File
+ Owner (Sở hữu DB): mặc định là Account đăng nhập lập DB: VD THE\VOXUANsa
Câu lệnh Hủy bỏ CSDL (Xóa bỏ DataBase):
/****** Object: Database [a08VXTHE_SaleJ] Script Date: 08/05/2024 8:22:41 PM
3.2.2 Lập mới các Bảng dữ liệu (Tables)
/****** Câu lệnh lập mới Table: DMMH[msmh]PK,… ***/
CREATE TABLE DMMH( msmh nchar 20 ( ) NOT NULL, tenmh nvarchar(150 ), dvt nvarchar(50 ), gia float, ngaysx date , hansd date , mota nvarchar (250), hinh nchar (150), msnsx nchar 20 ( )
/****** Câu lệnh lập MốN i liên kêN t: DMMH[msnsx]FK PK[msnsx]DMNSX ***/
ALTER TABLE DMMH WITH CHECK ADD CONSTRAINT FK_DMMH_DMNSX FOREIGN KEY (msnsx) REFERENCES DMNSX ( msnsx )
ALTER TABLE DMMH CHECK CONSTRAINT FK_DMMH_DMNSX
Thứ tự các Table được lập như sau (PK lập trước FK & PK đơn lập trước PK tổ hợp):
/****** CÁC CÂU LỆNH ĐIỀX U KHIỀY N BAN ĐÂU******/
/****** Object: Table [dbo].[DMMH] Script Date: 15/05/2024 7:30:15 PM ******/
/****** Table: DMNSX ***chỉ Y có PK làm trước: KO CÓ Dây liên kêN t***/
) WITH PAD_INDEX OFF ( = , STATISTICS_NORECOMPUTE OFF = , IGNORE_DUP_KEY = OFF , ALLOW_ROW_LOCKS = ON , ALLOW_PAGE_LOCKS = ON , OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF ) ON [PRIMARY]
/****** Table: DMCSBH ***chỉ Y có PK làm trước***/
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON , OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF ) ON [PRIMARY]
/****** Table: DMNV ***chỉ Y có PK làm trước***/
) WITH PAD_INDEX OFF ( = , STATISTICS_NORECOMPUTE OFF = , IGNORE_DUP_KEY = OFF , ALLOW_ROW_LOCKS = ON , ALLOW_PAGE_LOCKS = ON , OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF ) ON [PRIMARY]
/****** Table: DMKH ***chỉ Y có PK làm trước***/
) WITH PAD_INDEX OFF ( = , STATISTICS_NORECOMPUTE OFF = , IGNORE_DUP_KEY = OFF , ALLOW_ROW_LOCKS = ON , ALLOW_PAGE_LOCKS = ON , OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF ) ON [PRIMARY]
/****** Table: DMMH ***thực hiện sau DMNSX***/
( [msmh] ASC WITH PAD_INDEX OFF ) ( = , STATISTICS_NORECOMPUTE = OFF , IGNORE_DUP_KEY = OFF , ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF )ON [PRIMARY]
/****** các mốN i liên kêN t cu Ya DMMH với các Tables khác bở Yi FK cu Ya nó ******/
/**DMMH[msnsx] [msnsx]DMNSX */
ALTER TABLE [dbo].[DMMH] WITH CHECK ADD CONSTRAINT [FK_DMMH_DMNSX] FOREIGN KEY ( [msnsx] ) REFERENCES [dbo].[DMNSX] ( [msnsx] )
ALTER TABLE [dbo].[DMMH] CHECK CONSTRAINT [FK_DMMH_DMNSX]
/****** Table: DMHD ***thực hiện sau DMNV & DMKH***/
) WITH PAD_INDEX OFF ( = , STATISTICS_NORECOMPUTE OFF = , IGNORE_DUP_KEY = OFF , ALLOW_ROW_LOCKS = ON , ALLOW_PAGE_LOCKS = ON , OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF ) ON [PRIMARY]
ALTER TABLE [dbo].[DMHD] WITH CHECK ADD CONSTRAINT [FK_DMHD_DMKH] FOREIGN KEY ( [mskh] )
ALTER TABLE [dbo].[DMHD] CHECK CONSTRAINT [FK_DMHD_DMKH]
ALTER TABLE [dbo].[DMHD] WITH CHECK ADD CONSTRAINT [FK_DMHD_DMNV] FOREIGN KEY ( [msnv] )
ALTER TABLE [dbo].[DMHD] CHECK CONSTRAINT [FK_DMHD_DMNV]
EXEC sys.sp_addextendedproperty @name= N'MS_Description' , @value=N'0: Hóa đởn bán le Y; 1: Hóa đởn VAT' ,
@level0type = N'SCHEMA' , @level0name = N'dbo' , @level1type= N'TABLE' , @level1name = N'DMHD' ,
@level2type = N'COLUMN' , @level2name =N'loai'
/****** Table: DMBILL ***thực hiện sau DMNV & DMKH & DMHD***/
) WITH PAD_INDEX OFF ( = , STATISTICS_NORECOMPUTE OFF = , IGNORE_DUP_KEY = OFF , ALLOW_ROW_LOCKS = ON , ALLOW_PAGE_LOCKS = ON , OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF ) ON [PRIMARY]
/* PHÂX N dây liên kêN t trên Diagram */
ALTER TABLE [dbo].[DMBILL] WITH CHECK ADD CONSTRAINT [FK_DMBILL_DMHD] FOREIGN KEY ( [mshd] )
ALTER TABLE [dbo].[DMBILL] CHECK CONSTRAINT [FK_DMBILL_DMHD]
ALTER TABLE [dbo].[DMBILL] WITH CHECK ADD CONSTRAINT [FK_DMBILL_DMKH] FOREIGN KEY ( [mskh] )
ALTER TABLE [dbo].[DMBILL] CHECK CONSTRAINT [FK_DMBILL_DMKH]
ALTER TABLE [dbo].[DMBILL] WITH CHECK ADD CONSTRAINT [FK_DMBILL_DMNV] FOREIGN KEY ( [msnv] )
ALTER TABLE [dbo].[DMBILL] CHECK CONSTRAINT [FK_DMBILL_DMNV]
/****** Table: TONHANG ***thực hiện sau DMMH & DMCSBH***/
) WITH PAD_INDEX OFF ( = , STATISTICS_NORECOMPUTE OFF = , IGNORE_DUP_KEY = OFF , ALLOW_ROW_LOCKS = ON , ALLOW_PAGE_LOCKS = ON , OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF ) ON [PRIMARY]
/* PHÂX N dây liên kêN t trên Diagram */
ALTER TABLE [dbo].[TONHANG] WITH CHECK ADD CONSTRAINT [FK_TONHANG_DMCSBH] FOREIGN KEY ( [mscsbh] ) REFERENCES [dbo].[DMCSBH] ( [mscsbh] )
ALTER TABLE [dbo].[TONHANG] CHECK CONSTRAINT [FK_TONHANG_DMCSBH]
ALTER TABLE [dbo].[TONHANG] WITH CHECK ADD CONSTRAINT [FK_TONHANG_DMMH] FOREIGN KEY ( [msmh] ) REFERENCES [dbo].[DMMH] ( [msmh] )
ALTER TABLE [dbo].[TONHANG] CHECK CONSTRAINT [FK_TONHANG_DMMH]
/****** Table: CT_HD ***thực hiện sau DMMH & DMHD***/
CREATE TABLE [dbo] [CT_HD] (
) WITH PAD_INDEX OFF ( = , STATISTICS_NORECOMPUTE OFF = , IGNORE_DUP_KEY = OFF , ALLOW_ROW_LOCKS = ON , ALLOW_PAGE_LOCKS = ON , OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF ) ON [PRIMARY]
GO /* PHÂX N dây liên kêN t trên Diagram */
ALTER TABLE [dbo].[CT_HD] WITH CHECK ADD CONSTRAINT [FK_CT_HD_DMHD] FOREIGN KEY ( [mshd] ) REFERENCES [dbo].[DMHD] ( [mshd] )
ALTER TABLE [dbo].[CT_HD] CHECK CONSTRAINT [FK_CT_HD_DMHD]
ALTER TABLE [dbo].[CT_HD] WITH CHECK ADD CONSTRAINT [FK_CT_HD_DMMH] FOREIGN KEY ( [msmh] ) REFERENCES [dbo].[DMMH] ( [msmh] )
ALTER TABLE [dbo].[CT_HD] CHECK CONSTRAINT [FK_CT_HD_DMMH]
/****** Table: CT_BILL ***thực hiện sau DMMH & DMBILL***/
CREATE TABLE [dbo] [CT_BILL] (
) WITH PAD_INDEX OFF ( = , STATISTICS_NORECOMPUTE OFF = , IGNORE_DUP_KEY = OFF , ALLOW_ROW_LOCKS = ON , ALLOW_PAGE_LOCKS = ON , OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF ) ON [PRIMARY]
/* PHÂX N dây liên kêN t trên Diagram */
ALTER TABLE [dbo].[CT_BILL] WITH CHECK ADD CONSTRAINT [FK_CT_BILL_DMBILL] FOREIGN KEY ( [msbill] ) REFERENCES [dbo].[DMBILL] ( [msbill] )
ALTER TABLE [dbo].[CT_BILL] CHECK CONSTRAINT [FK_CT_BILL_DMBILL]
ALTER TABLE [dbo].[CT_BILL] WITH CHECK ADD CONSTRAINT [FK_CT_BILL_DMMH] FOREIGN KEY ( [msmh] )
ALTER TABLE [dbo].[CT_BILL] CHECK CONSTRAINT [FK_CT_BILL_DMMH]
CÂU LỆNH HỦY TABLE; VD Table DDH trong DB: [AsttHoTen Store]
B2 Hủy Table trong DB đó
/****** Object: Table [dbo].[DMMH] Script Date: 15/05/2024 8:27:59 PM ******/
IF EXISTS ( SELECT * FROM sys objects WHERE object_id = OBJECT_ID ( N'[dbo].[DMMH]' ) AND type in ( N'U' ))
3.2.3 Lập Sơ đồ vật lý của Database (Diagram)
Hình 2-3 Sơ đồ vật lý của CSDL trên Hệ quản trị SQl Server
3.3.Di chuyển hệ thống CSDL MS SQL Server từ Server này đến Server khác
Có 2 phương pháp (cách) cơ bản:
+ Backup (Sao lưu): từ Server này & Restore (Phục hồi) đến Server mới
+ Detach (Tháo gỡ): từ Server này & Attach (Gán vào) Server mới
The source database on the server remains intact, ensuring that applications utilizing the database continue to function normally The backup process compresses the database, resulting in smaller file sizes for copies (.bak or tm), which are commonly used It is crucial to maintain strict adherence to version control, authentication, and server naming conventions.
ĐẶT CÁC THỦ TỤC KHAI THÁC SỬ DỤNG CSDL “QUẢN LÝ ”TRÊN DBMS MS SQL SERVER
Các lệnh thao tác xử lý trên CSDL trong MS SQl Server (DML SQL)
Thao tác xử lý: Thêm (Insert), Xóa (Delete), Sửa (Update)
4.1.1 Thêm mẫu tin (bảng tin: Record) mới vào một Table trong một CSDL: Insert…
* Thứ tự nhập dữ liệu (Insert):
+ TONHANG, CT_HD, CT_BILL
/****** XÁC ĐỊNH DB NHẬP DỮ LIỆU ******/
/****** NHẬP DỮ LIỆUl: Table DMCSBH ******/
INSERT INTO DMCSBH( mscsbh tencsbh dc sodt succhua , , , , , controng )
VALUES ( '01' , N'Tân Bình, Tp.HCM', N'Hoàng Văn Thụ', '123456' '2000' , , '1000') GO
INSERT INTO DMCSBH( mscsbh tencsbh dc sodt succhua , , , , , controng )
VALUES ( '02' , N'Thu Y Đức, Tp.HCM' , N'Võ Văn Ngân' , '6789' '5000' , , '4000') GO
/****** NHẬP DỮ LIỆUl: Table DMNSX ******/
INSERT INTO DMNSX( msnsx tennsx nuoc , , )
INSERT INTO DMNSX( msnsx tennsx nuoc , , )
INSERT INTO DMNSX( msnsx tennsx nuoc , , )
/****** NHẬP DỮ LIỆUl: Table DMNV ******/
INSERT INTO DMNV( msnv hoten sodt , , )
INSERT INTO DMNV( msnv hoten sodt , , )
/****** NHẬP DỮ LIỆUl: Table DMKH ******/
INSERT INTO DMKH( mskh tenkh dc sodt msthue diem , , , , , )
INSERT INTO DMKH( mskh tenkh dc sodt msthue diem , , , , , )
/****** NHẬP DỮ LIỆUl: Table DMMH ******/
INSERT INTO DMMH( msmh tenmh dvt gia ngaysx hansd mota hinh msnsx , , , , , , , , )
VALUES( '01' N'Dây ChuyêX , n',N'ChiêN c' '500000' '2024-05-18' '2500-01-01' , , , ,N'Tặng quà cho bốX ' '' '01' , , )
INSERT INTO DMMH( msmh tenmh dvt gia ngaysx hansd mota hinh msnsx , , , , , , , , )
VALUES( '02' N'LăN , c' N'Cái' '600000' '2024-01-20' '2700-01-01' , , , , ,N'Quà 8.3', '' '02' , ) GO
/****** NHẬP DỮ LIỆUl: Table TONHANG ******/
INSERT INTO TONHANG( mscsbh msmh slton , , )
INSERT INTO TONHANG( mscsbh msmh slton , , )
INSERT INTO TONHANG( mscsbh msmh slton , , )
INSERT INTO TONHANG( mscsbh msmh slton , , )
INSERT INTO TONHANG( mscsbh msmh slton , , )
Tables bên “giao dịch”: tự phát sinh trong thực tế, sa (người quản trị không nhập dữ liệu) + DMHD
4.1.2 Xóa mẫu tin (Record) trong một Table của CSDL: Delete
Xóa tất cả các mặt hàng có giá < 5000
DELETE FROM DMMH WHERE gia < 5000
Xóa mặt hàng có mã số '01'
DELETE FROM DMMH WHERE msmh = '01'
4.1.3 Sửa chữa thông tin của mẫu tin (Record) trong một Table của CSDL: Update
Sửa chữa thông mặt hàng có mã số '02' : tên mới của mặt hàng 'Nhẫ3 n cưới' và giá mới là '700000'
UPDATE DMMH SET tenmh = N'Nhẫ3 n cưới', gia = '700000' WHERE msmh = '02'
VD: Đởn hàng có mã ‘01’ đang phân cống cho nhân viên ‘02’ (chưa giao)
Sẽ được phân lại cho NV có mã ‘01’ & chuyêY n sang trang thái đã giao
UPDATE DDH SET msnv = '01' , TinhTrang 1 = WHERE msddh = '01'
4.2 Vấn tin SQL trên MS SQL Server trên CSDL QUẢN LÝ (DML)
Câu hỏi 1: Cho biết danh sách các mặt hàng có : dvt = ‘Cái’ và gia > '500000' ?
SELECT * FROM DMMH WHERE dvt = N'Cái' AND gia > '500000'
Câu hỏi 1: Cho biết danh sách các đơn hàng chưa giao: TinhTrang = 0 ?
SELECT * FROM DDH WHERE TinhTrang = 0
Câu hỏi 2: Cho biết Cơ sở bán hàng [cho biết tên Cơ sở bán hàng] có mã số mscsbh =
‘01’: có những mặt hàng [có tên là gì] đang còn tồn ít nhất 60 ?
SELECT t mscsbh c tencsbh t msmh m tenmh m dvt m gia, t.slton , , , , ,
FROM TONHANG AS t DMMH , AS m DMCSBH , AS c
WHERE T slton >= 60 AND t mscsbh c mscsbh = AND t msmh m msmh =
SELECT 'Mã CS' = t mscsbh , 'Tên CS' = c tencsbh , 'Mã hàng' = t msmh , 'Tên hàng' = m tenmh , 'ĐVT'= m dvt , 'Giá' = m gia , 'SốN tốX n' t slton = FROM TONHANG AS t DMMH , AS m DMCSBH , AS c
WHERE T slton >= 60 AND t mscsbh c mscsbh = AND t msmh m = msmh
Danh sách các đơn hàng chưa giao có trạng thái TinhTrang = 0, bao gồm thông tin về họ tên nhân viên phụ trách và khu vực mà đơn hàng đó thuộc về (Tên Khu vực).
GO SELECT d msddh d DiaChiGiao d ThoiHanGiao n HoTen k TenKV d TinhTrang , , , , , FROM DDH AS d, NV AS n, KV AS k WHERE TinhTrang = 0 AND d msnv n msnv = AND d mskv k mskv =
SELECT 'Mã đởn' = d msddh 'Địa chỉ , Y' d = DiaChiGiao , 'Hạn giao' d = ThoiHanGiao, 'Họ tên NV' n = HoTen ,
'Tên KV' k = TenKV , 'Tình Trang' d TinhTrang = FROM DDH AS d NV , AS n KV , AS k WHERE TinhTrang = 0 AND d msnv n msnv = AND d mskv k mskv =
4.3 Cài đặt các View trên MS SQL Server trên CSDL QUẢN
Bài 1 : Lập View dùng phép kết thông thường (không tinh toán)
+ View : Lập danh sách các đơn hàng CHƯA GIAO được phân công cho các NV phụ trách SẮP XẾP THEO HẠN GIAO sttHoTen_wDDH0
SELECT TOP (100) PERCENT dbo.DDH.msddh, dbo.DDH.DiaChiGiao, dbo.DDH.ThoiHanGiao, dbo.KV.TenKV, dbo.NV.HoTen, dbo.DDH.TinhTrang
FROM dbo.DDH INNER JOIN dbo.KV ON dbo.DDH.mskv = dbo.KV.mskv INNER JOIN dbo.NV ON dbo.DDH.msnv = dbo.NV.msnv
ORDER BY dbo.DDH.ThoiHanGiao w_1NVDDH_stt
The SQL query retrieves the top 100 percent of records, selecting employee ID (Mã NV) and name (Họ tên) from the employee table (NV), along with order ID (Mã đơn), order date (Ngày lập), delivery deadline (Hạn giao), and order status (Tình trạng) from the order table (DDH) It accomplishes this by performing an inner join between the two tables based on the employee ID.
Bài 2 : Lập View dùng phép kết có tính toán
+ View : Lập danh sách các mặt hàng được mua trên các đơn hàng :
Mã đơn, ngày lập, mã hàng, tên hàng, số lượng mua, đơn vị tính, đơn giá và thành tiền (tính bằng số lượng mua nhân với đơn giá) là các thông tin quan trọng trong quản lý đơn hàng Để dễ dàng theo dõi và quản lý, các mặt hàng cần được sắp xếp theo mã hàng.
Dưới đây là câu lệnh SQL để truy xuất thông tin đơn hàng, bao gồm mã đơn, ngày lập, mã hàng, tên hàng, số lượng mua, đơn vị tính, đơn giá và thành tiền, với điều kiện lấy 100% kết quả.
FROM dbo.CTDDH AS c INNER JOIN dbo.DDH AS d ON c.msddh = d.msddh INNER JOIN dbo.MH AS m ON c.msmh = m.msmh
Bài 3: Lập View dùng phép kết có dùng hàm SUM, COUNT, AVERAGE, MAX, MIN, ) + View : Lập danh sách các mặt hàng được mua trên các đơn hàng :
Mã đơn, ngày lập, Mã hàng, Tên hàng, số lượng mua, đơn vị tính, đơn giá, thành tiền (= số lượng mua * đơn gia) Gôm lại theo : Mã đơn
Tính tổng số tiền của đơn hàng = SUM(thành tiền)/ theo cùng Mã đơn. w_31_DH_MH_stt
SELECT d.msddh AS [Mã đơn], d.ngaylap AS [Ngày lập], m.tenmh AS [Tên hàng], c.sl AS [Số lương], m.gia AS Giá, m.dvt AS ĐVT, c.sl * m.gia AS [Thành tiền]
FROM dbo.DDH AS d INNER JOIN dbo.CTDDH AS c ON d.msddh = c.msddh INNER JOIN dbo.MH AS m ON c.msmh = m.msmh
ORDER BY [Mã đơn] w_32_DH_SUM
SELECT [Mã đơn], [Ngày lập], SUM([Thành tiền]) AS [Tổng tiền]
FROM dbo.w_31_DH_MH_stt
GROUP BY [Mã đơn], [Ngày lập]
4.4 Lập các Store Procedure (SP) và các Trigger cho các Table của DB
LẬP SP : Kiểm tra Danh sách các Đơn hàng đã phân công cho NV mà chưa giao DK08_DDHTest
Template generated from Template Explorer using:
Create Procedure (New Menu).SQL
Use the Specify Values for Template Parameters
command (Ctrl-Shift-M) to fill in the parameter
This block of comments will not be included in
the definition of the procedure.
CREATE PROCEDURE DK08_DDHTest @msnv nchar ( 20 )
Add the parameters for the stored procedure here
SELECT TOP ( 100 ) PERCENT dbo NV msnv , dbo NV HoTen , dbo DDH msddh , dbo DDH ThoiHanGiao , dbo DDH TinhTrang
FROM dbo DDH INNER JOIN dbo NV ON dbo DDH msnv dbo = NV msnv
WHERE ( dbo DDH TinhTrang 0 = ) AND ( NV msnv @msnv = )
ORDER BY dbo DDH ThoiHanGiao
CHẠY SP : Kiểm tra Danh sách các Đơn hàng đã phân công cho NV mà chưa giao
EXEC @return_value [dbo] = [DK08_DDHTest]
SELECT 'Return Value' @return_value =
LẬP Trigger : IN Danh sách NV sau mỗi lần Insert hoặc Update
CREATE TRIGGER DK08_NV ON NV
4.5 Lập bảng sao CSDL trên hệ quản trị MS SQL Server đối với CSDL QUẢN LÝ
Phải[AsttHoTen_Store]->Tasks->Copy Database:
Sử dụng: SQL Server Agents đúng Version
4.6 Kết xuất (Export) và Nạp (Import) DL trên hệ quản trị MS SQL Server đối với CSDL QUẢN LÝ
Phải[AsttHoTen_Store]->Tasks->Export Data…:
Phải[AsttHoTen_Store]->Tasks->Import Data…:
Cài đặt các View trên MS SQL Server trên CSDL QUẢN LÝ (DML)
Bài 1 : Lập View dùng phép kết thông thường (không tinh toán)
+ View : Lập danh sách các đơn hàng CHƯA GIAO được phân công cho các NV phụ trách SẮP XẾP THEO HẠN GIAO sttHoTen_wDDH0
SELECT TOP (100) PERCENT dbo.DDH.msddh, dbo.DDH.DiaChiGiao, dbo.DDH.ThoiHanGiao, dbo.KV.TenKV, dbo.NV.HoTen, dbo.DDH.TinhTrang
FROM dbo.DDH INNER JOIN dbo.KV ON dbo.DDH.mskv = dbo.KV.mskv INNER JOIN dbo.NV ON dbo.DDH.msnv = dbo.NV.msnv
ORDER BY dbo.DDH.ThoiHanGiao w_1NVDDH_stt
This SQL query retrieves all records from the database, selecting employee ID, employee name, order ID, order date, delivery deadline, and order status It joins the order data with employee information to display a comprehensive overview of orders along with the respective employees responsible for them.
Bài 2 : Lập View dùng phép kết có tính toán
+ View : Lập danh sách các mặt hàng được mua trên các đơn hàng :
Mã đơn, ngày lập, mã hàng, tên hàng, số lượng mua, đơn vị tính, đơn giá và thành tiền (tính bằng số lượng mua nhân với đơn giá) là các thông tin quan trọng trong quản lý đơn hàng Để dễ dàng theo dõi, cần sắp xếp các mặt hàng theo mã hàng.
Đoạn truy vấn SQL trên chọn tất cả các đơn hàng, hiển thị mã đơn, ngày lập, mã hàng, tên hàng, số lượng mua, đơn vị tính, đơn giá và thành tiền Cụ thể, nó tính toán thành tiền bằng cách nhân số lượng mua với đơn giá của từng mặt hàng.
FROM dbo.CTDDH AS c INNER JOIN dbo.DDH AS d ON c.msddh = d.msddh INNER JOIN dbo.MH AS m ON c.msmh = m.msmh
Bài 3: Lập View dùng phép kết có dùng hàm SUM, COUNT, AVERAGE, MAX, MIN, ) + View : Lập danh sách các mặt hàng được mua trên các đơn hàng :
Mã đơn, ngày lập, Mã hàng, Tên hàng, số lượng mua, đơn vị tính, đơn giá, thành tiền (= số lượng mua * đơn gia) Gôm lại theo : Mã đơn
Tính tổng số tiền của đơn hàng = SUM(thành tiền)/ theo cùng Mã đơn. w_31_DH_MH_stt
SELECT d.msddh AS [Mã đơn], d.ngaylap AS [Ngày lập], m.tenmh AS [Tên hàng], c.sl AS [Số lương], m.gia AS Giá, m.dvt AS ĐVT, c.sl * m.gia AS [Thành tiền]
FROM dbo.DDH AS d INNER JOIN dbo.CTDDH AS c ON d.msddh = c.msddh INNER JOIN dbo.MH AS m ON c.msmh = m.msmh
ORDER BY [Mã đơn] w_32_DH_SUM
SELECT [Mã đơn], [Ngày lập], SUM([Thành tiền]) AS [Tổng tiền]
FROM dbo.w_31_DH_MH_stt
GROUP BY [Mã đơn], [Ngày lập]
Lập các Store Procedure (SP) và các Trigger cho các Table của DB
LẬP SP : Kiểm tra Danh sách các Đơn hàng đã phân công cho NV mà chưa giao DK08_DDHTest
Template generated from Template Explorer using:
Create Procedure (New Menu).SQL
Use the Specify Values for Template Parameters
command (Ctrl-Shift-M) to fill in the parameter
This block of comments will not be included in
the definition of the procedure.
CREATE PROCEDURE DK08_DDHTest @msnv nchar ( 20 )
Add the parameters for the stored procedure here
SELECT TOP ( 100 ) PERCENT dbo NV msnv , dbo NV HoTen , dbo DDH msddh , dbo DDH ThoiHanGiao , dbo DDH TinhTrang
FROM dbo DDH INNER JOIN dbo NV ON dbo DDH msnv dbo = NV msnv
WHERE ( dbo DDH TinhTrang 0 = ) AND ( NV msnv @msnv = )
ORDER BY dbo DDH ThoiHanGiao
CHẠY SP : Kiểm tra Danh sách các Đơn hàng đã phân công cho NV mà chưa giao
EXEC @return_value [dbo] = [DK08_DDHTest]
SELECT 'Return Value' @return_value =
LẬP Trigger : IN Danh sách NV sau mỗi lần Insert hoặc Update
CREATE TRIGGER DK08_NV ON NV
Lập bảng sao CSDL trên hệ quản trị MS SQL Server đối với CSDL QUẢN LÝ
Phải[AsttHoTen_Store]->Tasks->Copy Database:
Sử dụng: SQL Server Agents đúng Version
Kết xuất (Export) và Nạp (Import) DL trên hệ quản trị MS SQL Server đối với CSDL QUẢN LÝ
Phải[AsttHoTen_Store]->Tasks->Export Data…:
Phải[AsttHoTen_Store]->Tasks->Import Data…: