IMG-LOGO
×

Giáo Trình Môn Học

Khoá học lập trình SQL

Kiến Thức Core SQL Server

[Video] Hướng dẫn cách xác định kiểu dữ liệu, primary key, foreign key trong SQL - My SQL - SQL Server [Video] Hướng dẫn thao tác nhiểu bảng - select - multi table - join, inner join trong SQL Server [Video] Hướng dẫn phân tích CSDL - phân tích bảng, column trong bản - Học lập trình SQL, SQL Server [Video] Hướng dẫn tìm hiểu create, alter , insert table và bản chất primary key, foreign key - SQL Server [Video] Hướng dẫn tìm hiểu select, and, in, like, not in,group by .. having, order by asc, desc - SQL Server [Video] Quản lý sinh viên (create, alter, update, insert, select) - Lập trình SQL Server

View SQL Server

[Video] Hướng dẫn tìm hiểu view trong SQL Server Bài Giảng: Hướng dẫn tìm hiểu view + proc trong SQL - Lập trình SQL Server

Store & Procedure

[Video] Hướng dẫn tìm hiểu proc procedure trong SQL Server - Lập trình SQL Server, MySQL Bài Giảng: Xây dự hệ thống đưa đón học sinh bằng xe bus của Trường Học - Lập trình SQL Server [Video] Xây dựng CSDL quản lý điểm danh aptech - Lập trình SQL Server/MySQL

Trigger

[Video] Học Trigger qua ví dụ - quản lý nhà trên phố - Lập trình SQL Server [Video] Hướng dẫn học trigger qua bài quản lý điểm danh Aptech - Lập trình SQL Server [Video] Bài tập - Quản lý nhân khẩu - Lập trình SQL Server - MySQL




Trang Chủ SQL Server/MySQL Bài tập - Quản lý quán cafe - Lập trình SQL Server - MySQL

Bài tập - Quản lý quán cafe - Lập trình SQL Server - MySQL

by GokiSoft.com - 20:01 17/04/2021 14,947 Lượt Xem

Thiết kế CSDL phục vụ trong việc quản lý quán cafe. Yêu cầu đề bài như sau

- Quản lý được danh mục sản phâm của quán cafe

- Quản lý loại đồ uống trong quán cafe

- Quản lý nhân viên của hàng

- Quản lý đơn hàng -> mỗi đơn hàng được nhập vào bởi một nhân viên (Nghĩa là có thể xem đc đơn hàng này do nhân viên nào nhập) - Chú ý : Mỗi đơn hàng có thể có nhiều loại đồ uống

- Quản lý được khách hàng tới của hàng -> Đơn hàng sẽ mapping được vs khách hàng đã đặt đồ uống.

Yêu cầu nghiệp vụ

- Thiết kế CSDL & Nhập dữ liệu cho mỗi bảng 5 bản ghi

- Đánh index trên ít nhất 1 bảng. Tự chọn cột để đánh index

- Hiển thị danh sách loại đồ uống theo một danh mục -> yêu cầu viết truy vấn sql, tạo store (phần này làm 2 ý tách biết)

- Hiển thị danh mục sản phẩm trong 1 đơn hàng -> yêu cầu viết truy vấn sql và tạo 1 store cho chức năng này

- Hiển thị danh mục các đơn hàng theo mã KH.

- Hiển thị doanh thu theo ngày bắt đầu và ngày kết thức -> yêu cầu viết theo store.

Bình luận



Chia sẻ từ lớp học

TRẦN VĂN ĐIỆP [Teacher]

Ngày viết: 17:07 27/02/2021



Phân tích database
- Quản lý danh mục sản phẩm: Category
	id -> int -> primary key -> identity(1,1)
	name -> nvarchar(50)
- Quản lý menu đồ uống: Yêu cầu nghiệp hoặc tham khảo website tượng tự -> xem các thuộc tính cần thiết cho mục này => Product
	id -> int -> primary key -> identity(1,1)
	title -> nvarchar(200)
	thumbnail -> nvarchar(500)
	description -> text
	price -> float
	id_cat -> int -> foreign key -> Category (id)
- Quản lý nhân viên: Staff
	id -> int -> primary key -> identity(1,1)
	fullname -> nvarchar(50)
	birthday -> date
	address -> nvarchar(200)
	email -> nvarchar(200)
- Quản lý khách hàng: Customer
	id -> int -> primary key -> identity(1,1)
	fullname -> nvarchar(50)
	birthday -> date
	phone_number -> nvarchar(20)
	email -> nvarchar(200)
	address -> nvarchar(200)

	('Tran Van A', '1999-01-01', '123456789', '[email protected]', 'HN')

- Quản lý đơn hàng: Nhân viên đã order, khách hang nào, mỗi đơn hàng sẽ order được nhiều sản phẩm.
	Nhân a, khách hàng b mua 2 sản phẩm cafe nóng, sinh tố, chi phí tiền nong.
	Table: Order
		id -> int -> primary key -> identity(1,1)
		staff_id -> int -> Staff (id)
		customer_id -> int -> Customer (id)
		total_price -> float
		order_date -> date
		note -> varchar(500)
	Table: OrderDetail -> lưu thông tin sản phẩm mua
		id -> int -> primary key -> identity(1,1)
		order_id -> int -> Order (id)
		product_id -> int -> Product (id)
		number -> int
		price -> float
		total_price -> float

	# Nhân viên A -> 1
	# Khách hàng B -> 2
	# 	T1 (1) -> 20000 -> 2
	# 	T2 (2) -> 10000 -> 3
	# 
	# Order
	# 	1 1 2 70000
	# OrderDetail
	# 	1 1 2 20000 40000 1
	# 	2 2 3 10000 30000 1


TRẦN VĂN ĐIỆP [Teacher]

Ngày viết: 15:18 27/02/2021



-- Create database: quan_ly_cafe
create database quan_ly_cafe

-- Active database
use quan_ly_cafe

-- Create tables
create table Category (
	id int primary key identity(1,1),
	name nvarchar(50) not null
)

create table Product (
	id int primary key identity(1,1),
	title nvarchar(200),
	thumbnail nvarchar(500),
	description text,
	price float,
	id_cat int references Category (id)
)

create table Staff (
	id int primary key identity(1,1),
	fullname nvarchar(50),
	address nvarchar(200),
	email nvarchar(150),
	birthday date
)

create table Customer (
	id int primary key identity(1,1),
	fullname nvarchar(50),
	address nvarchar(200),
	email nvarchar(150),
	birthday date,
	phone_number nvarchar(20)
)

create table Orders (
	id int primary key identity(1,1),
	staff_id int references Staff(id),
	customer_id int references Customer(id),
	total_price float,  -- Sai -> thua -> Muc dich nghiep total_price -> xu ly query simple.
	order_date datetime,
	note nvarchar(500)
)

create table OrderDetail (
	id int primary key identity(1,1),
	product_id int references Product(id),
	number int,
	price float,
	total_price float, -- Sai -> thua -> Muc dich nghiep total_price -> xu ly query simple.
	order_id int references Orders(id)
)

-- Insert Data
insert into Category (name)
values
('Cafe'),
('Sinh To')

select * from Category

insert into Product (title, thumbnail, description, price, id_cat)
values
('Cafe nong', 'Thumbnail_1', 'Noi dung 1', 32000, 1),
('Cafe da', 'Thumbnail_2', 'Noi dung 2', 32000, 1),
('Cafe sua', 'Thumbnail_3', 'Noi dung 3', 32000, 1),
('Sinh to bo', 'Thumbnail_4', 'Noi dung 4', 42000, 2),
('Sinh to mang cau', 'Thumbnail_5', 'Noi dung 5', 42000, 2)

select * from Product

insert into Staff(fullname, birthday, email, address)
values
('TRAN VAN A', '1999-01-20', '[email protected]', 'Ha Noi')

insert into Customer(fullname, birthday, email, address, phone_number)
values
('TRAN VAN B', '1990-01-20', '[email protected]', 'Ha Noi', '1234567890')

insert into Orders(staff_id, customer_id, total_price, order_date, note)
values
(1, 1, 96000, '2021-02-26', ''),
(1, 1, 32000, '2021-02-25', ''),
(1, 1, 74000, '2021-02-27', '')

insert into OrderDetail(order_id, product_id, number, price, total_price)
values
(1, 1, 2, 32000, 64000),
(1, 2, 1, 32000, 32000),
(2, 1, 1, 32000, 32000),
(3, 1, 1, 32000, 32000),
(3, 5, 1, 42000, 42000)

-- Query & Proc
select Product.id, Product.title, Product.price, Category.name
from Product left join Category on Product.id_cat = Category.id
where Category.id = 1

create proc proc_view_product_by_category
	@idCat int
as
begin
	select Product.id, Product.title, Product.price, Category.name
	from Product left join Category on Product.id_cat = Category.id
	where Category.id = @idCat
end

exec proc_view_product_by_category 2

-- Order: query & store (proc)
select Product.id, Product.title, Category.name, OrderDetail.number, OrderDetail.price, OrderDetail.total_price
from Product left join Category on Product.id_cat = Category.id
	left join OrderDetail on OrderDetail.product_id = Product.id
where OrderDetail.order_id = 1

create proc proc_products_by_order
	@orderId int
as
begin
	select Product.id, Product.title, Category.name, OrderDetail.number, OrderDetail.price, OrderDetail.total_price
	from Product left join Category on Product.id_cat = Category.id
		left join OrderDetail on OrderDetail.product_id = Product.id
	where OrderDetail.order_id = @orderId
end

exec proc_products_by_order 1

-- Query: Xem thong tin don hang -> 1 khach hang da mua -> Customer, Order
select Customer.id, Customer.fullname, Customer.address, Staff.fullname, Orders.total_price, Orders.order_date
from Orders left join Customer on Orders.customer_id = Customer.id
	left join Staff on Staff.id = Orders.staff_id
where Customer.id = 1

create proc proc_view_order_by_customer
	@customerId int
as
begin
	select Customer.id, Customer.fullname, Customer.address, Staff.fullname, Orders.total_price, Orders.order_date
	from Orders left join Customer on Orders.customer_id = Customer.id
		left join Staff on Staff.id = Orders.staff_id
	where Customer.id = @customerId
end

exec proc_view_order_by_customer 1

-- Doanh thu
select * from Orders

select sum(total_price) 'Tong Doanh Thu' from Orders
where order_date between '2021-02-25' and '2021-02-26'

create proc proce_money
	@startDate date,
	@endDate date
as
begin
	select sum(total_price) 'Tong Doanh Thu' from Orders
	where order_date between @startDate and @endDate
end

exec proce_money '2021-02-25', '2021-02-27'


Do Trung Duc [T2008A]

Ngày viết: 14:32 09/12/2020



-- Tao database
create database QuanLyCafe

-- Active database
use QuanLyCafe

-- Tao tables
create table category (
	id int primary key identity(1,1),
	name nvarchar(50) not null
)

create table product(
	id int primary key identity(1,1),
	title nvarchar(150),
	price money,
	thumbnail nvarchar(500),
	updated_at datetime,
	created_ad datetime,
	content text,
	id_cat int,
	constraint fk_id_cat foreign key (id_cat) references category(id)
)
create table staff(
	id int primary key identity(1,1),
	fullname nvarchar(100),
	birthday datetime,
	address nvarchar(200)
)
create table customer(
	id int primary key identity(1,1),
	fullname nvarchar(150),
	phone_number nvarchar(30),
	address nvarchar(200)
)
create table orders(
	id int primary key identity(1,1),
	staff_id int,
	constraint fk_staff_id foreign key (staff_id) references staff(id),
	customer_id int,
	constraint fk_customer_id foreign key (customer_id) references customer(id),
	total_price int,
	order_date datetime
)
create table order_detail(
	id int primary key identity(1,1),
	order_id int,
	product_id int,
	constraint fk_order_id foreign key (order_id) references orders(id),
	constraint fk_product_id foreign key (product_id) references product(id),
	amount int,
	price money,
	total_price int
)

-- Nhap du lieu cho tat ca cac tables
insert into category(name)
values
('tea'),
('coffee'),
('bia'),
('juice'),
('coca')

insert into product(title,price,thumbnail,updated_at,created_ad,content,id_cat)
values
('tra sua tran chau',10,'photo01.jpg','2020-10-10','2020-10-20','abcxyz',2),
('coffe da',20,'photo02.jpg','2020-10-10','2020-10-20','abcxyz',1),
('bia ha noi',30,'photo03.jpg','2020-10-10','2020-10-20','abcxyz',2),
('nuoc cam',40,'photo04.jpg','2020-10-10','2020-10-20','abcxyz',3),
('coca cola',50,'photo05.jpg','2020-10-10','2020-10-20','abcxyz',1)

insert into staff(fullname,birthday,address)
values
('Leo Messi','2020-05-05','Argentina'),
('C.Ronaldo','2020-05-05','Portugal'),
('T.V.Lam','2020-05-05','VietNam'),
('A.Grizman','2020-05-05','France'),
('H.Xavi','2020-05-10','Spain')

insert into customer(fullname,phone_number,address)
values
('Tran Van A','1234444','Hanoi'),
('Tran Van B','133243','Hanam'),
('Tran Van C','3223242','ThaiBinh'),
('Tran Van D','3414141','NamDinh'),
('Tran Van E','31213123','HaiPhong')

select * from staff

insert into orders(staff_id,customer_id,total_price,order_date)
values
(2,2,50,'2020-12-11'),
(2,1,60,'2020-12-11'),
(5,4,70,'2020-12-11'),
(3,2,55,'2020-12-11'),
(4,3,60,'2020-12-11')

select * from orders

insert into order_detail(order_id,product_id,amount,price,total_price)
values
(2,2,2,20,40),
(2,1,1,10,10),
(4,2,3,20,60),
(3,2,3,20,60),
(3,1,1,10,10)

-- Liet ke san pham theo 1 danh muc: id, title, price, thumbnail, updated_at, category_name
select * from category
select * from product

select product.id, product.title, product.price, product.thumbnail, product.updated_at, category.name as category_name
from product left join category on product.id_cat = category.id
where category.id = 2

create proc proc_view_product
	@idCat int
as
begin
	select product.id, product.title, product.price, product.thumbnail, product.updated_at, category.name as category_name
	from product left join category on product.id_cat = category.id
	where category.id = @idCat
end

exec proc_view_product 1
exec proc_view_product 2

-- Hien thi thong tin danh muc san pham trong don hang
select * from category
select * from product
select * from orders
select * from order_detail

select product.title, order_detail.amount, order_detail.price, order_detail.total_price
from product left join order_detail on product.id = order_detail.product_id
where order_detail.order_id = 2

create proc proc_view_order_detail
	@orderId int
as
begin
	select product.title, order_detail.amount, order_detail.price, order_detail.total_price
	from product left join order_detail on product.id = order_detail.product_id
	where order_detail.order_id = @orderId
end

exec proc_view_order_detail 2
exec proc_view_order_detail 1

-- xem thong tin chi tiet ve KH: nhan vien ban hang, khach hang, tong tien, ngay mua
select staff.fullname 'Ten Nhan Vien', customer.fullname 'Ten KH', orders.total_price, orders.order_date
from orders left join staff on orders.staff_id = staff.id
	left join customer on orders.customer_id = customer.id
where orders.customer_id = 2

create proc proc_view_order_by_customer
	@customerId int
as
begin
	select staff.fullname 'Ten Nhan Vien', customer.fullname 'Ten KH', orders.total_price, orders.order_date
	from orders left join staff on orders.staff_id = staff.id
		left join customer on orders.customer_id = customer.id
	where orders.customer_id = @customerId
end

exec proc_view_order_by_customer 2

-- Thong ke doanh thu
select sum(total_price) as 'Tong Doanh Thu'
from orders
where order_date >= '2020-12-10'
	and order_date <= '2020-12-30'

create proc proce_view_money
	@startDate date,
	@endDate date
as
begin
	select sum(total_price) as 'Tong Doanh Thu'
	from orders
	where order_date >= @startDate
		and order_date <= @endDate
end

exec proce_view_money '2020-12-10', '2020-12-30'


Nguyên Phấn Đông [T2008A]

Ngày viết: 14:04 09/12/2020



create table category(
 id int primary key identity(1,1),
 name nvarchar(50)
)
go

create table product(
 id int primary key identity(1,1),
 title nvarchar(50),
 price money,
 cat_id int references category(id),
 thumnail nvarchar(500),
 update_at datetime,
 create_at datetime,
 content text
)
go

create table staff(
 id int primary key identity(1,1),
 fullname nvarchar(50),
 birth date,
 address nvarchar(500)
)
go

create table customer(
 id int primary key identity(1,1),
 fullname nvarchar(50),
 phone_number nvarchar(20),
 address nvarchar(100)
)
go

create table ordder(
 id int primary key identity(1,1),
 staff_it int foreign key (id) references staff(id),
 customer_id int foreign key (id) references customer(id),
 total_price int,
 order_date date
 )
 go

 create table ordder_detal(
   id int primary key identity(1,1),
   order_id int foreign key (order_id) references ordder(id),
   product_id int foreign key(product_id) references product(id),
   amuont int,
   price int,
   total_price int 
)
go


Nguyễn Anh Vũ [T2008A]

Ngày viết: 13:47 09/12/2020



create database Quan_Ly_Quan_CONGCafe
use Quan_Ly_Quan_CONGCafe

create table Danh_Muc_Sp (
       id int primary key identity(1,1),
	   name nvarchar(70)
)

create table Do_Uong (
       id int primary key identity(1,1),
	   name nvarchar(50),
       beveragcode nvarchar(50),
	   smell nvarchar(50),
	   price nvarchar(30),
	   size nvarchar(10)
)

create table Nhan_Vien (
       fullname nvarchar(50),
	   rollno nvarchar(100),
	   birthday date,
	   address nvarchar(200),
	   phonenumber nvarchar(20),
	   gender nvarchar(10)
)

create table Quan_ly_Khach_Hang (
       id int primary key identity(1,1),
	   fullname nvarchar (50),
	   phone_number nvarchar(20),
	   address nvarchar(50),
	   gender nvarchar(10)
)

create table Quan_Ly_Don_Hang (
       id int primary key identity(1,1),
	   staff_id int foreign key references staff(id),
	   customer_id int foreign key references customer(id),
	   total_price int(tong so tien cua don hang),
	   order_date datetime
)


insert into Danh_Muc_Sp(name)
values
('Cafe Cộng'),
('Cafe Cộng'),
('Cafe Cộng'),
('Cafe Cộng'),
('Cafe Cộng')

insert into Do_Uong(name,beveragcode,smell,price,size)
values
('Cafe Sữa Đá', '12345', 'Sữa Dừa','35,000 VNĐ', 'L'),
('Cafe Sữa Đá', '12345', 'Sữa Dừa','35,000 VNĐ', 'L'),
('Cafe Sữa Đá', '12345', 'Sữa Dừa','35,000 VNĐ', 'L'),
('Cafe Sữa Đá', '12345', 'Sữa Dừa','35,000 VNĐ', 'L'),
('Cafe Sữa Đá', '12345', 'Sữa Dừa','35,000 VNĐ', 'L')

insert into Nhan_Vien( fullname, rollno, birthday, address, phonenumber, gender)
values
('Nguyễn Anh Vũ', 'T2008A', '2020-12-09', 'Hà Nam', '0964657860', 'Nam'),
('Nguyễn Anh Vũ', 'T2008A', '2020-12-09', 'Hà Nam', '0964657860', 'Nam'),
('Nguyễn Anh Vũ', 'T2008A', '2020-12-09', 'Hà Nam', '0964657860', 'Nam'),
('Nguyễn Anh Vũ', 'T2008A', '2020-12-09', 'Hà Nam', '0964657860', 'Nam'),
('Nguyễn Anh Vũ', 'T2008A', '2020-12-09', 'Hà Nam', '0964657860', 'Nam')

insert into Quan_ly_Khach_Hang(fullname,phone_number,address,gender)
values
('Nguyen Phan Dong', '0911110001', '120 Tran Duy Hung', 'Nu'),
('Nguyen Phan Dong', '0911110001', '120 Tran Duy Hung', 'Nu'),
('Nguyen Phan Dong', '0911110001', '120 Tran Duy Hung', 'Nu'),
('Nguyen Phan Dong', '0911110001', '120 Tran Duy Hung', 'Nu'),
('Nguyen Phan Dong', '0911110001', '120 Tran Duy Hung', 'Nu')

select * from Danh_Muc_Sp
select * from Do_Uong
select * from Nhan_Vien
select * from Quan_ly_Khach_Hang


Đã sao chép!!!