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

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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... R12: Giá sản phẩm trong tbl_Orders phải lớn hơn 0R13: đơn hàng phải phải có sản p

Trang 1

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

Trần Minh Châu - 1531101013 Ngô Hoàng Cường - 1531101014

Trang 2

Chương 5: Tạo Stored Procedure

Chương 6: Tạo View

Chương 7: Tạo trigger

Trang 3

CHƯƠNG 1 GIỚI THIỆU SƠ LƯỢC VỀ CƠ SỞ DỮ LIỆU

Cửa hàng A là một cửa hàng mới mở Để nâng cao chất lượng phục vụ, cửa hang này muốn xây dựng một trang web online của cửa hàng để giúp khách hàng dễ dàng cập nhật các sản phẩm mà shop có, cũng như là đặt hàng online.

Ngoài 9 bảng trên, CSDL của chúng ta còn có 5 stored procedure, 5 views và 5

triggers Tất cả sẽ được trình bày chi tiết trong các chương sau

Trang 4

Bảng tbl_Categories:

Tân từ: Mỗi trang web đều phân loại những sản phẩm, thông tin theo nhiều lĩnh vực

và đây là nơi phân chia chúng Mã thể loại (Id), tên của thể loại (Ten)

Bảng tbl_Suppliers:

Trang 5

Tân từ: Đây là nơi để ghi nguồn gốc xuất xứ của các loại sản phẩm hay còn gọi là nhà sản xuất Mã nhà sản xuất (Id), tên nhà sản xuất (Ten), email của nhà sản xuất (Mail) và 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á cả (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)

Trang 6

Bảng tbl_Orders:

Tân từ: đưa ra các thông về nơi giao hàng và 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 chỉ (DiaChi), ghi chú (TomTat), giá tiền của đơn hàng (Tien), trạng thái đã giao chưa (Stat)

Bảng tbl_OrderDetails:

Tân từ: thông tin về 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)

Trang 7

Bảng tbl_Masters:

Tân từ: khá giống với bảng khách hàng đây là bảng dành cho những người quản lý web Tài khoản đăng nhập (TaiKhoan), mật khẩu đăng nhập (MatKhau), tên của chủ tài khoản (Ten), số điện thoại (Sdt), ngày sinh (NgaySinh)

Trang 8

Mô hình quan hệ giữa các bảng trong cơ sở dữ liệu QuanLyTrangWebBanHang:

Trang 10

CHƯƠNG 3

MÔ TẢ CÁC RÀNG BUỘC TOÀN VẸN

Ràng buộc liên bộ (ràng buộc về khóa chính):

R1 : TaiKhoan là khóa chính của bảng tbl_Customer

+ -(*)

R2 : Id là khóa chính của bảng tbl_Categories

Bối cảnh: tbl_Categories

Điều kiện: k1,k2tbl_Categories:k1k2 k1[Id]k2[Id]Tầm ảnh hưởng:

Trang 11

R3 Thêm Xóa Sửatbl_Suppliers +

Trang 12

121:stbl_Master

+ -(*)

R8: TaiKhoan là khóa chính của bảng tbl_MastersRole Bối cảnh: tbl_MastersĐiều kiện:

]TaiKhoan[

2]TaiKhoan[

121:sRoletbl_Master

+ -(*)

Trang 13

R9: roleslà khóa chính của bảng tbl_ActionRoles

Bối cảnh: tbl_ActionRoles

Điều kiện:

]roles[2]roles[121:Rolestbl_Action

Ràng buộc về miền giá trị của thuộc tính:

R10: Trạng thái của đơn hàng phải là 1 (đã giao) hoặc 0 (chưa giao)Bối cảnh: tbl_Orders

Điều kiện: ntbl_Orders:n.Stat 1, }

Trang 14

R12: Giá sản phẩm trong tbl_Orders phải lớn hơn 0

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]

- +[

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ửatbl_Orders + [KhachID] - +[ KhachID]

Trang 15

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:

tbl_Products + [NSX] - +[ NSX]tbl_Categories - + -(*)

Trang 16

CHƯƠNG 4 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 khi đã có cơ sở dữ liệu, ta tiếp tục viết các lệnh sau để tạo 9 bảng của 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,

Trang 17

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),

Trang 18

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))

Trang 19

Sau khi đã có cấu trúc của từng bảng, ta tiến hành chèn dữ liệu vào từng 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/03)

insert into tbl_Masters(TaiKhoan ,MatKhau ,Ten ,Sdt,NgaySinh) values

('administrator0002@gmail.com','AdDepTrai','WeAreAdminB','1234567890',1991/5/13)

insert into tbl_Masters(TaiKhoan ,MatKhau ,Ten ,Sdt,NgaySinh) values

('administrator0003@gmail.com','AdDepTrai','WeAreAdminC','1234567890',1994/5/21)

insert into tbl_Masters(TaiKhoan ,MatKhau ,Ten ,Sdt,NgaySinh) values

('administrator0004@gmail.com','AdDepTrai','WeAreAdminD','1234567890',1992/2/23)

chen du lieu vao bang tbl_Suppliers

insert into tbl_Suppliers(Id,Ten ,Mail ,Sdt ) values

chen du lieu vao bang tbl_Products

insert into tbl_Products(Ten ,TomTat ,Gia ,NgayNhap ,NSX ,CategoriesID ,SoLuong ,GiamGia)values ('laptop1','Đây là laptop chắc vậy',1000,2020/1/1 ,'D',2,50,0)

Trang 20

insert into tbl_Products(Ten ,TomTat ,Gia ,NgayNhap ,NSX ,CategoriesID ,SoLuong ,GiamGia)values ('laptop2','Đây là 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ắc chắn là siu phẩm máy

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 )

Trang 21

CHƯƠNG 5 TẠO STORED PROCEDURE

1) Tạo thủ tục lưu trữ (SP) kiểm tra thông tin của khách hàng khi 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 bằng cách nhập mã đơn hàng:

create procedure ktOrder

Trang 22

3) Kiểm tra đăng nhập khách hàng được không nếu đúng trả về 1 sai trả về 0

create procedure ktCheckLoginCus

IF EXISTS( SELECT * FROM tbl_Customer

WHERE @taikhoanCus = TaiKhoan AND

MatKhau = @matkhauCus )

RETURN 1 ELSE

RETURN 0 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 của admin được không nếu đúng trả về 1 sai trả về 0

create procedure ktCheckLoginMaster

IF EXISTS( SELECT * FROM tbl_Masters

WHERE TaiKhoan = @taikhoanAdmin AND MatKhau =

@matkhauAdmin )

RETURN 1

ELSE

RETURN 0 end

Ví dụ:

declare @intKqMaster int

Trang 23

exec @intKqMaster = ktCheckLoginMaster 'administrator0003@gmail.com'

, 'AdDepTrai'

SELECT @intKqMaster 'Ket qua Log In'

5) Đếm tổng sản phẩm có trong kho

create procedure ktSoLuongSP

@SoLuong int output

Trang 24

CHƯƠNG 6 TẠO VIEW

1) Tạo view xem thông tin đơn hàng

create view vwDanhSachDonHang

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 về 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 về đơn hàng chưa giao

create view vwDanhSachDonHangChuaChuyen

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

Trang 25

4) Tạo view cho biết danh sách các 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 về nhữn sản phẩm đang 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

Trang 26

CHƯƠNG 7 TẠO TRIGGER

1) Tạo trigger thỏa mãn điều kiện khi chỉnh sửa đơn hàng sẽ thay đổi những thông tin liên quan

CREATE TRIGGER ChinhSuaDonHang on tbl_Orders for update

set tk1 TaiKhoan = tk3 TaiKhoan

from tbl_Customer tk1 , deleted tk2 , inserted tk3

Trang 27

update tk1

set tk1 KhachID = tk3 TaiKhoan

from tbl_Orders tk1 , deleted tk2 , inserted tk3

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 khi chỉnh sửa sản phẩm sẽ thay đổi những thôngtin liên quan

Trang 28

CREATE TRIGGER ChinhSuaSP on tbl_Products for update as

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