1. Trang chủ
  2. » Luận Văn - Báo Cáo

Lập trình cơ sở dữ liệu

28 5 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 28
Dung lượng 219,5 KB

Nội dung

Lập trình sở liệu Trần Minh Châu - 1531101013 Ngơ Hồng Cường - 1531101014 MỤC LỤC Chương 1: Giới thiệu sơ lược CSDL Chương 2: Mô tả bảng Chương 3: Mơ tả ràng buộc tồn vẹn Chương 4: Các câu lệnh tạo CSDL Chương 5: Tạo Stored Procedure Chương 6: Tạo View Chương 7: Tạo trigger CHƯƠNG GIỚI THIỆU SƠ LƯỢC VỀ CƠ SỞ DỮ LIỆU Cửa hàng A cửa hàng mở Để nâng cao chất lượng phục vụ, cửa hang muốn xây dựng trang web online cửa hàng để giúp khách hàng dễ dàng cập nhật sản phẩm mà shop có, đặt hàng online QuanLyTrangWebBanHang gồm bảng:          tbl_Customer tbl_Categories tbl_Suppliers tbl_Products tbl_Orders tbl_OrderDetails tbl_Roles tbl_Masters tbl_ActionRoles Ngoài bảng trên, CSDL cịn có stored procedure, views triggers Tất trình bày chi tiết chương sau CHƯƠNG MÔ TẢ CÁC BẢNG Bảng tbl_Customer: Tân từ: Mỗi khách hàng có tài khoản (TaiKhoan) để phân biệt khách hàng với nhau, có mật (MatKhau) để đăng nhập vào tài khoản, họ tên (Ten), số điện thoại (sdt), ngày sinh (NgaySinh) Bảng tbl_Categories: Tân từ: Mỗi trang web phân loại sản phẩm, thông tin theo nhiều lĩnh vực nơi phân chia chúng Mã thể loại (Id), tên thể loại (Ten) Bảng tbl_Suppliers: Tân từ: Đây nơi để ghi nguồn gốc xuất xứ loại sản phẩm hay gọi nhà sản xuất Mã nhà sản xuất (Id), tên nhà sản xuất (Ten), email nhà sản xuất (Mail) số điện thoại (Sdt) Bảng tbl_Products: Tân từ: Quản lý danh sách sản phẩm Mã SP (Id), tên SP (Ten), Mô tả SP (TomTat), giá (Gia), ngày nhập hàng (NgayNhap), mã nhà sản xuất (NSX), mã phân loại (CategoriesID), số lượng (SoLuong), giảm giá (GiamGia) Bảng tbl_Orders: Tân từ: đưa thông nơi giao hàng thời gian tối đa để giao Mã đơn hàng (Id), mã khách hàng(KhachID), ngày đặt hàng (OrderDate), ngày tối đa để nhận hàng (RequireDate), người nhận (NguoiNhan), địa (DiaChi), ghi (TomTat), giá tiền đơn hàng (Tien), trạng thái giao chưa (Stat) Bảng tbl_OrderDetails: Tân từ: thông tin mặt hàng đc giao Mã thông tin đơn hàng (Id), mã đơn hàng (OrderID), mã sản phẩm (SanPhamID), số lượng khách hàng mua (SoLuong) Bảng tbl_Masters: Tân từ: giống với bảng khách hàng bảng dành cho người quản lý web Tài khoản đăng nhập (TaiKhoan), mật đăng nhập (MatKhau), tên chủ tài khoản (Ten), số điện thoại (Sdt), ngày sinh (NgaySinh) Bảng tbl_MastersRole: Tân từ: phân chia quyền hạn cho quản trị viên Tài khoản đăng nhập (TaiKhoan), vai trò (Roles) Bảng table tbl_ActionRoles Tân từ: thêm bớt chức quyền hạn Vai trò (Roles), tên chức (name) Mơ hình quan hệ bảng sở liệu QuanLyTrangWebBanHang: CHƯƠNG MÔ TẢ CÁC RÀNG BUỘC TOÀN VẸN Ràng buộc liên (ràng buộc khóa chính): R1 : TaiKhoan khóa bảng tbl_Customer Bối cảnh: tbl_Customer Điều kiện: k1, k  tbl_Customer : k1  k 2  k1[Id]  k 2[Id] Tầm ảnh hưởng: R1 Thêm Xóa Sửa tbl_Customer + + -(*) [TaiKhoan ] R2 : Id khóa bảng tbl_Categories Bối cảnh: tbl_Categories Điều kiện: k1, k  tbl_Categories : k1  k 2  k1[Id]  k 2[Id] Tầm ảnh hưởng: R2 Thêm Xóa Sửa tbl_Categories + + -(*) [Id] R3 : Id khóa bảng tbl_Suppliers Bối cảnh: tbl_ThanhToanPhong Điều kiện: k1, k  tbl_Suppliers : k1  k 2  k1[Id]  k 2[Id] Tầm ảnh hưởng: R12: Giá sản phẩm tbl_Orders phải lớn Bối cảnh: tbl_Products Điều kiện: y  ttbl_Orders : y.Tien 0 Tầm ảnh hưởng: R9 Thêm Xóa Sửa tbl_Orders + - + [Tien] Phụ thuộc tồn tại: R13: đơn hàng phải phải có sản phẩm Bối cảnh: tbl_Products, tbl_OrderDetails Điều kiện: tbl_OrderDetails[SanPhamID]  tbl_Products[Id] Tầm ảnh hưởng: R13 Thêm Xóa Sửa tbl_OrderDetail s + [SanPhamI D] - +[ SanPhamID] tbl_Products - + -(*) R14: Bối cảnh: tbl_Customer, tbl_Orders Điều kiện: tbl_Orders[KhachID]  tbl_Customer[TaiKhoan ] Tầm ảnh hưởng: R14 Thêm Xóa Sửa tbl_Orders + [KhachID] - +[ KhachID] tbl_Customer - + -(*) R:15 Bối cảnh: tbl_Categories, tbl_Products Điều kiện: tbl_Products[ NSX]  tbl_Categories[ Id] Tầm ảnh hưởng: R15 Thêm Xóa Sửa tbl_Products + [NSX] - +[ NSX] tbl_Categories - + -(*) CHƯƠNG CÁC CÂU LỆNH TẠO CƠ SỞ DỮ LIỆU Đầu tiên, ta dùng lệnh sau để tạo CSDL QuanLyTrangWebBanHang: CREATE DATABASE QuanLyTrangWebBanHang Sau có sở liệu, ta tiếp tục viết lệnh sau để tạo bảng CSDL này: tao bang tbl_Customer create table tbl_Customer ( TaiKhoan nvarchar(30) not null, MatKhau varchar(12) not null, Ten nvarchar(30) not null, Sdt varchar(14) not null, NgaySinh datetime not null, primary key (TaiKhoan) ) tao bang tbl_Categories create table tbl_Categories ( Id int IDENTITY(1,1) not null, Ten nvarchar(30) not null, primary key (Id) ) tao bang tbl_Suppliers create table tbl_Suppliers ( Id nvarchar(50) not null, Ten nvarchar(30) not null, Mail nvarchar(30) not null, Sdt varchar(14) not null, primary key (Id) ) tao bang tbl_Products create table tbl_Products ( Id int IDENTITY(100000,1) not null, Ten nvarchar(30) not null, TomTat nvarchar(50) null, Gia int not null, NgayNhap datetime not null, NSX nvarchar(50) not null, CategoriesID int not null, SoLuong int not null, GiamGia float not null, primary key (Id), foreign key (CategoriesID) references tbl_Categories(Id), foreign key (NSX) references tbl_Suppliers(Id) ) tao bang tbl_Orders create table tbl_Orders ( Id int IDENTITY(1000,1) not null, KhachID nvarchar(30) not null, OrderDate datetime not null, RequireDate datetime null, NguoiNhan nvarchar(30) not null, DiaChi nvarchar(60) not null, TomTat nvarchar(120) null, Tien int not null, Stat bit not null, primary key (Id), foreign key (KhachID) references tbl_Customer(TaiKhoan), ) tao bang tbl_OrderDetails create table tbl_OrderDetails ( Id int IDENTITY(100,1) not null, OrdersID int not null, SanPhamID int not null, SoLuong int not null, primary key (Id), foreign key (SanPhamID) references tbl_Products(Id), foreign key (OrdersID) references tbl_Orders(Id) ) tao bang tbl_Masters create table tbl_Masters ( TaiKhoan nvarchar(30) not null, MatKhau varchar(12) not null, Ten nvarchar(30) not null, Sdt varchar(14) not null, NgaySinh datetime not null, primary key (TaiKhoan) ) tao bang tbl_ActionRoles create table tbl_ActionRoles ( roles char(5) not null, name nvarchar(50) not null, primary key (roles), ) tao bang tbl_MastersRole create table tbl_MastersRole ( TaiKhoan nvarchar(30) not null, roles char(5) not null, primary key (TaiKhoan), foreign key (TaiKhoan) references tbl_Masters(TaiKhoan), foreign key (roles) references tbl_ActionRoles(roles) ) Sau có cấu trúc bảng, ta tiến hành chèn liệu vào bảng: chen du lieu vao bang tbl_Customer insert into tbl_Customer(TaiKhoan,MatKhau,Ten,Sdt,NgaySinh) values('clone10001@gmail.com','123456','ImCustomerA','1234567890',1992/5/23) insert into tbl_Customer(TaiKhoan,MatKhau,Ten,Sdt,NgaySinh) values('clone10002@gmail.com','123456','ImCustomerB','1234567890',1992/5/23) insert into tbl_Customer(TaiKhoan,MatKhau,Ten,Sdt,NgaySinh) values('clone10003@gmail.com','123456','ImCustomerC','1234567890',1992/5/23) insert into tbl_Customer(TaiKhoan,MatKhau,Ten,Sdt,NgaySinh) values('clone10004@gmail.com','123456','ImCustomerD','1234567890',1992/5/23) insert into tbl_Customer(TaiKhoan,MatKhau,Ten,Sdt,NgaySinh) values('clone10005@gmail.com','123456','ImCustomerE','1234567890',1992/5/23) chen du lieu vao bang tbl_Categories insert into tbl_Categories(Ten) values('Đồng hồ đeo tay') insert into tbl_Categories(Ten) values('Máy tính xách tay') insert into tbl_Categories(Ten) values('Điện thoại') insert into tbl_Categories(Ten) values('Máy ảnh') chen du lieu vao bang tbl_Masters insert into tbl_Masters(TaiKhoan ,MatKhau ,Ten ,Sdt,NgaySinh) values ('administrator0001@gmail.com','AdDepTrai','WeAreAdminA','1234567890',1992/5/0 3) insert into tbl_Masters(TaiKhoan ,MatKhau ,Ten ,Sdt,NgaySinh) values ('administrator0002@gmail.com','AdDepTrai','WeAreAdminB','1234567890',1991/5/1 3) insert into tbl_Masters(TaiKhoan ,MatKhau ,Ten ,Sdt,NgaySinh) values ('administrator0003@gmail.com','AdDepTrai','WeAreAdminC','1234567890',1994/5/2 1) insert into tbl_Masters(TaiKhoan ,MatKhau ,Ten ,Sdt,NgaySinh) values ('administrator0004@gmail.com','AdDepTrai','WeAreAdminD','1234567890',1992/2/2 3) chen du lieu vao bang tbl_Suppliers insert into tbl_Suppliers(Id,Ten ,Mail ,Sdt ) values ('D','dell','Supplier1@gmail.com',7412583690) insert into tbl_Suppliers(Id,Ten ,Mail ,Sdt) values ('NN','ni nikon','Supplier2@gmail.com',7412583690) insert into tbl_Suppliers(Id,Ten ,Mail ,Sdt) values ('H','haha','Supplier2@gmail.com',7213583690) chen du lieu vao bang tbl_Products insert into tbl_Products(Ten ,TomTat ,Gia ,NgayNhap ,NSX ,CategoriesID ,SoLuong ,GiamGia)values ('laptop1','Đây laptop vậy',1000,2020/1/1 ,'D',2,50,0) insert into tbl_Products(Ten ,TomTat ,Gia ,NgayNhap ,NSX ,CategoriesID ,SoLuong ,GiamGia)values ('laptop2','Đây laptop real',500,2010/2/1 ,'D',2,10,0.10) insert into tbl_Products(Ten ,TomTat ,Gia ,NgayNhap ,NSX ,CategoriesID ,SoLuong ,GiamGia)values ('Nikon XXX','Đây chắn siu phẩm máy ảnh!!!',10000,2020/1/1 ,'NN',4,5,0) insert into tbl_Products(Ten ,TomTat ,Gia ,NgayNhap ,NSX ,CategoriesID ,SoLuong ,GiamGia)values ('Iphone nokia','grrrrr',1000,2018/1/1 ,'H',2,50,0.05) chen du lieu vao bang tbl_Orders insert into tbl_Orders(KhachID,OrderDate,RequireDate,NguoiNhan,DiaChi,TomTat,Tien,Stat) values ('clone10003',2020/1/1,2020/1/2,'ImCustomerN','adsfasf','',1000,0) insert into tbl_Orders(KhachID,OrderDate,RequireDate,NguoiNhan,DiaChi,TomTat,Tien,Stat) values ('clone10004',2020/1/1,'','ImCustomerD','adsfasf','',10000,1) chen du lieu vao bang tbl_OrderDetails insert into tbl_OrderDetails(OrdersID,SanPhamID,SoLuong) values (1000,100000,1) insert into tbl_OrderDetails(OrdersID,SanPhamID,SoLuong) values (1001,100002,2) chen du lieu vao bang tbl_ActionRoles insert into tbl_ActionRoles(roles ,name )values ('ADMIN','Administrator') insert into tbl_ActionRoles(roles ,name )values ('USER','User') chen du lieu vao bang tbl_MastersRole insert into tbl_MastersRole(TaiKhoan ,roles ) values('administrator0001@gmail.com','ADMIN') insert into tbl_MastersRole(TaiKhoan ,roles ) values('administrator0002@gmail.com','USER') insert into tbl_MastersRole(TaiKhoan ,roles ) values('administrator0003@gmail.com','USER') insert into tbl_MastersRole(TaiKhoan ,roles ) values('administrator0004@gmail.com','USER') CHƯƠNG TẠO STORED PROCEDURE 1) Tạo thủ tục lưu trữ (SP) kiểm tra thông tin khách hàng nhập tài khoản create procedure ktCustomer @TaiKhoan nvarchar(30) as begin select TaiKhoan, Ten, NgaySinh, Sdt from tbl_Customer where @TaiKhoan=TaiKhoan end Ví dụ: exec ktCustomer 'clone10004@gmail.com' 2) Kiểm tra hóa đơn cho shipper cách nhập mã đơn hàng: create procedure ktOrder @MaDonHang char(12) as begin select * from tbl_Orders where Id=@MaDonHang end Ví dụ: exec ktOrder 1000 3) Kiểm tra đăng nhập khách hàng không trả sai trả create procedure ktCheckLoginCus ( @taikhoanCus nvarchar(30), @matkhauCus varchar(12) ) AS begin IF EXISTS(SELECT * FROM tbl_Customer WHERE @taikhoanCus=TaiKhoan AND MatKhau=@matkhauCus ) RETURN ELSE RETURN end Ví dụ: declare @intKqCus int exec @intKqCus = ktCheckLoginCus 'clone10001@gmail.com' ,123456 SELECT @intKqCus 'Ket qua Log In' 4) Kiểm tra đăng nhập admin không trả sai trả create procedure ktCheckLoginMaster ( @taikhoanAdmin nvarchar(30), @matkhauAdmin varchar(12) ) AS begin IF EXISTS(SELECT * FROM tbl_Masters WHERE TaiKhoan = @taikhoanAdmin AND MatKhau = @matkhauAdmin) RETURN ELSE RETURN end Ví dụ: declare @intKqMaster int exec @intKqMaster = ktCheckLoginMaster 'administrator0003@gmail.com' ,'AdDepTrai' SELECT @intKqMaster 'Ket qua Log In' 5) Đếm tổng sản phẩm có kho create procedure ktSoLuongSP @SoLuong int output as begin SELECT @SoLuong = COUNT(*) FROM tbl_Products end Ví dụ: declare @SL int exec ktSoLuongSP @SL out print @SL CHƯƠNG TẠO VIEW 1) Tạo view xem thông tin đơn hàng create view vwDanhSachDonHang as select tbl_Customer.Ten as TenKH, tbl_Orders.NguoiNhan, tbl_Products.Ten as TenSP, tbl_OrderDetails.SoLuong, tbl_Orders.OrderDate, tbl_Orders.RequireDate, tbl_Orders.DiaChi, tbl_Orders.Tien as TongTien from tbl_Orders inner join tbl_Customer on tbl_Orders.KhachID = tbl_Customer.TaiKhoan inner join tbl_OrderDetails on tbl_Orders.Id=tbl_OrderDetails.OrdersID inner join tbl_Products on tbl_Products.Id=tbl_OrderDetails.SanPhamID 2) Tạo view xem thông tin sản phẩm create view vwDanhSachSanPham as select tbl_Products.Ten as TenSP,tbl_Products.TomTat,tbl_Products.SoLuong,tbl_Suppliers.Ten as TenNSX,tbl_Products.Gia,tbl_Products.NgayNhap from tbl_Products inner join tbl_Suppliers on tbl_Products.NSX=tbl_Suppliers.Id 3) Tạo view xem thông tin đơn hàng chưa giao create view vwDanhSachDonHangChuaChuyen as select tbl_Customer.Ten as TenKH, tbl_Orders.NguoiNhan, tbl_Products.Ten as TenSP, tbl_OrderDetails.SoLuong, tbl_Orders.OrderDate, tbl_Orders.RequireDate, tbl_Orders.DiaChi, tbl_Orders.Tien as TongTien, tbl_Orders.Stat from tbl_Orders inner join tbl_Customer on tbl_Orders.KhachID = tbl_Customer.TaiKhoan inner join tbl_OrderDetails on tbl_Orders.Id=tbl_OrderDetails.OrdersID inner join tbl_Products on tbl_Products.Id=tbl_OrderDetails.SanPhamID where tbl_Orders.Stat=0 4) Tạo view cho biết danh sách admin create view vwDanhSachQuanTriVien as select tbl_Masters.Ten, tbl_Masters.NgaySinh, tbl_Masters.Sdt, tbl_Masters.TaiKhoan, tbl_ActionRoles.name from tbl_Masters inner join tbl_MastersRole on tbl_MastersRole.TaiKhoan=tbl_Masters.TaiKhoan inner join tbl_ActionRoles on tbl_MastersRole.roles=tbl_ActionRoles.roles 5) Cho biết nhữn sản phẩm giảm giá create view vwSanPhamGiamGia as select tbl_Products.Ten as TenSP,tbl_Products.TomTat,tbl_Products.SoLuong,tbl_Suppliers.Ten as TenNSX,tbl_Products.Gia,tbl_Products.GiamGia from tbl_Products inner join tbl_Suppliers on tbl_Products.NSX=tbl_Suppliers.Id where tbl_Products.GiamGia!=0 CHƯƠNG TẠO TRIGGER 1) Tạo trigger thỏa mãn điều kiện chỉnh sửa đơn hàng thay đổi thông tin liên quan CREATE TRIGGER ChinhSuaDonHang on tbl_Orders for update as if (@@ROWCOUNT=0) begin print 'Khong co du lieu o table tbl_Orders' return end if UPDATE(Id) begin update tk1 set tk1.Id=tk3.Id from tbl_Orders tk1,deleted tk2,inserted tk3 update tk1 set tk1.OrdersID=tk3.Id from tbl_OrderDetails tk1,deleted tk2,inserted tk3 end 2) Tạo trigger thỏa mãn điều kiện chỉnh sửa khách hàng thay đổi thông tin liên quan CREATE TRIGGER ChinhSuaKhachHang on tbl_Customer for update as if (@@ROWCOUNT=0) begin print 'Khong co du lieu o table tbl_Customer' return end if UPDATE(TaiKhoan) begin update tk1 set tk1.TaiKhoan=tk3.TaiKhoan from tbl_Customer tk1,deleted tk2,inserted tk3 update tk1 set tk1.KhachID=tk3.TaiKhoan from tbl_Orders tk1,deleted tk2,inserted tk3 end 3) Tạo trigger thỏa mãn điều kiện xóa khách hàng xóa thông tin liên quan CREATE TRIGGER XoaKhachHang on tbl_Customer for delete as if (@@ROWCOUNT=0) begin print 'Khong co du lieu o table tbl_Customer' return end delete tbl_Customer from tbl_Customer t1,deleted t2 where t1.TaiKhoan=t2.TaiKhoan delete tbl_Orders from tbl_Orders t1,deleted t2 where t1.KhachID=t2.TaiKhoan 4) Tạo trigger thỏa mãn điều kiện xóa sản phẩm xóa thơng tin liên quan CREATE TRIGGER XoaSP on tbl_Products for delete as if (@@ROWCOUNT=0) begin print 'Khong co du lieu o table tbl_Orders' return end delete tbl_Products from tbl_Products t1,deleted t2 where t1.Id=t2.Id delete tbl_OrderDetails from tbl_OrderDetails t1,deleted t2 where t1.SanPhamID=t2.Id 5) Tạo trigger thỏa mãn điều kiện chỉnh sửa sản phẩm thay đổi thông tin liên quan CREATE TRIGGER ChinhSuaSP on tbl_Products for update as if (@@ROWCOUNT=0) begin print 'Khong co du lieu o table tbl_Orders' return end if UPDATE(Id) begin update tk1 set tk1.Id=tk3.Id from tbl_Products tk1,deleted tk2,inserted tk3 update tk1 set tk1.SanPhamID=tk3.Id from tbl_OrderDetails tk1,deleted tk2,inserted tk3 end

Ngày đăng: 18/08/2022, 12:54

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w