Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (481.49 KB, 17 trang )
<span class="text_page_counter">Trang 1</span><div class="page_container" data-page="1">
TRƯỜNG ĐẠI HỌC XÂY DỰNG HÀ NỘI KHOA CÔNG NGHỆ THÔNG TIN
BÁO CÁO
TÊN ĐỀ TÀI: QUẢN LÝ BÁN LAPTOP, PC
Tên bộ môn: Đồ án hệ cơ sở dữ liệu
Giảng viên hướng dẫn: Nguyễn Hồng Hạnh Nhóm: 13 – 65IT3
Sinh viên thực hiện :
1. Lương Tuấn Minh – 4000265 2. Nguyễn Duy Anh - 6765 3. Lê Xuân Mười – 138065 4. Nguyễn Đức Thành - 1546865
<i>Hà Nội, ngày 24 tháng 01 năm 2022</i>
</div><span class="text_page_counter">Trang 2</span><div class="page_container" data-page="2"><b>1.1.Yêu cầu lưu trữ</b>
<b>-</b> Lưu trữ 3 đối tượng chính:
+ Sản phẩm: sản phẩm, chi tiết sản phẩm, khuyến mãi, ảnh, thể loại + Khách hàng: khách hàng, thanh toán,..
+ Nhân viên: nhân viên, tài khoản, lương
<b>1.2.Khai thác dữ liệu</b>
<b>-</b> Lấy danh sách sản phẩm, khách hàng, nhân viên trong hệ thống
<b>-</b> Thống kê doanh thu, sản phẩm bán ra,…
<b>-</b> Năng suất bán hàng của nhân viên
<b>-</b> Khách hàng thân quen
<b>2. Mô tả thực thể và các mối quan hệ, sơ đồ ERD2.1.Mô tả thực thể</b>
<b>-</b> Sản phẩm (PRODUCTS): lưu trữ thơng tin chính về sản phẩm
<b>-</b> Chi tiết sản phẩm (PRODUCT_DETAIL): lưu trữ chi tiết thông số sản phẩm
<b>-</b> Giảm giá (COUPON): lưu trữ thông tin khuyến mãi, giảm giá sản phẩm
<b>-</b> Ảnh (IMG): lưu trữ ảnh mô tả sản phẩm
<b>-</b> Loại sản phẩm (CATALOG): lưu trữ các loại sản phẩm có trong cửa hàng
<b>-</b> Khách hàng (GUEST): lưu trữ thông tin khách hàng đã mua hàng
<b>-</b> Đơn thanh tốn (BILL): lưu trữ thơng tin cơ bản (mã khách hàng, tổng tiền)
<b>-</b> Chi tiết đơn (BILL_DETAIL): lưu trữ chi tiết đơn (mã sản phẩm, mã đơn)
<b>-</b> Doanh thu (SALES): dựa trên số đơn đã bán để lưu số tiền kiếm trong tháng
<b>-</b> Nhân viên (STAFF): lưu trữ thông tin nhân viên
<b>-</b> Tài khoản (ACCOUNT_STAFF): lưu trữ tài khoản của nhân viên
<b>-</b> Lương (SALARY): lưu trữ lương/tháng của nhân viên
</div><span class="text_page_counter">Trang 5</span><div class="page_container" data-page="5"><b>2.3.Sơ đồ ERD</b>
</div><span class="text_page_counter">Trang 6</span><div class="page_container" data-page="6"><b>3. Mô tả cấu trúc bảng và giải thích ý nghĩa các cột dữ liệu của bảng</b>
<b>-</b> Create_at: thời gian tạo
<b>-</b> Create_by: tạo bởi nhân viên nào
<b>-</b> Update_at: thời gian sửa đổi, cập nhật
<b>-</b> Update_by: thay đổi bởi nhân viên nào + content: nội dung mô tả sản phẩm
<b>-Chi tiết sản phẩm (PRODUCT_DETAIL):</b>
+ monitor: thông tin màn hình + cpu: thơng tin ổ cứng + ram: thông tin bộ nhớ + vga: thông tin card màn hình + ssd: thơng tin ổ cứng (thể rắn) + hdd: thông tin ổ cứng
+ psu: thông tin nguồn
+ mainboard: thơng tin bo mạch chính
</div><span class="text_page_counter">Trang 7</span><div class="page_container" data-page="7">+ case_pc: thơng tin vỏ máy tính
<b>-Khuyến mãi (COUPON):</b>
+ id: mã khuyến mãi + discount: giảm giá
+ start_at: bắt đầu vào ngày/ giờ nào + end_at: kết thúc vào ngày/giờ nào + birthday: ngày sinh
+ email: tài khoản thư điện tử + address: địa chỉ khách hàng + phone: số điện thoại khách hàng
<b>-Đơn thanh toán (BILL):</b>
+ id: mã đơn thanh toán
</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="8"><b>-Nhân viên (STAFF):</b>
+ id: mã nhân viên + name: tên nhân viên + gender: giới tính + birthday: ngày sinh + address: địa chỉ nhân viên + phone: số điện thoại nhân viên + position: chức vụ
<b>-Tài khoản nhân viên (ACCOUNT_STAFF):</b>
+ id: mã tài khoản + account: tài khoản + password: mật khẩu
<b>-Lương nhân viên (SALARY)</b>
+ id: mã nhân viên
</div><span class="text_page_counter">Trang 9</span><div class="page_container" data-page="9"><b>4. Sơ đồ quan hệ thể hiện mối liên kết giữa các bảng được tạo (RelationshipDiagram)</b>
</div><span class="text_page_counter">Trang 10</span><div class="page_container" data-page="10"><b>5. Danh sách truy vấn đã thiết kế và hình ảnh demo kết quả tương ứng5.1 SẢN PHẨM</b>
1. Lấy ra những sản phẩm của hãng acer SELECT p.product_name, p.product_brand FROM PRODUCTS p,CATALOG c
WHERE p.catalog_id = c.id AND c.catalog_name = 'laptop' AND
WHERE price = ( SELECT MAX(price) FROM PRODUCTS)
4. Sắp xếp, hiển thị theo giá (tên) giảm dần hoặc tăng dần về giá (alpha a-z) SELECT product_name, product_brand, price
FROM PRODUCTS ORDER BY price DESC
</div><span class="text_page_counter">Trang 11</span><div class="page_container" data-page="11">5. Hiển thị theo tên hoặc mã sản phẩm
SELECT pd.monitor, pd.ram, pd.vga, pd.ssd FROM PRODUCTS p, PRODUCT_DETAIL pd WHERE p.id = pd.id AND p.id = 5
6. Sản phẩm bán được trong 7 ngày qua SELECT p.product_name
FROM PRODUCTS p, BILL b, BILL_DETAIL bd
WHERE b.id = bd.bill_id AND bd.product_id = p.id AND b.create_at BETWEEN GETDATE()-DAY(7) AND GETDATE();
7. In ra id có hãng dell và có giá trong khoảng từ 20000000 đến 40000000 select id from Products
where product_brand = 'dell'
and price >= 20000000 and price <= 40000000
</div><span class="text_page_counter">Trang 12</span><div class="page_container" data-page="12">8. In ra danh sách các sản phẩm (id,product_name) do hãng msi và acer sản xuất và có giá tiền từ 10000000 đến 50000000
select id,product_name from products
where (product_brand='msi' or product_brand='acer') and price >=10000000 and price <=50000000
9. In ra danh sách các sản phẩm (id,product_name) được khách hàng có tên 'Hoang Van Nam' mua trong tháng 1/2022
select p.id,p.product_name
from products p , guest g, bill b, bill_detail bd where g.name ='Hoang Van Nam'
and bd.product_id = p.id and month(b.create_at)='1'
and year (b.create_at)='2022'
and b.guest_id = g.id and bd.bill_id = b.id
10. In ra danh sách các sản phẩm (id,product_name) không bán được. select p.id,p.product_name from products p
where p.id not in (select bd.product_id from bill_detail bd)
</div><span class="text_page_counter">Trang 13</span><div class="page_container" data-page="13">11. In ra danh sách các sản phẩm (id,product_name) thuộc hãng "dell" không bán được
select p.id,p.product_name from products p where p.product_brand = 'dell'
and p.id not in (select bd.product_id from bill_detail bd)
12. có bao nhiêu sản phẩm không bán được select count (p.id) as soluong from products p where p.id not in(select product_id from bill_detail)
13. tìm tên khách hàng đã mua hóa đơn có giá trị cao nhất trong năm 2022 select g.name from bill b, GUEST g
where b.guest_id=g.id and amount in ( select max(b.amount) from bill b where year(b.create_at)= '2022')
14. In ra danh sách các sản phẩm (id,product_name) có giá bán bằng 1 trong 3 mức giá cao nhất
select id,product_name from PRODUCTS
where price in (select top 3 p.price from PRODUCTS p order by p.price DESC)
</div><span class="text_page_counter">Trang 14</span><div class="page_container" data-page="14"><b>5.2 ĐƠN HÀNG, DOANH THU</b>
15. Lấy ra thông tin các đơn hàng mua vào ngày 07/12/2021
SELECT * FROM BILL WHERE CAST(create_at AS DATE) = '2021-12-07'
16. Hiện doanh thu hiện tại
SELECT sum(amount) as doanh_thu FROM BILL
WHERE create_at BETWEEN '2021-12-01' AND GETDATE()
17. Thống kê có bao nhiêu đơn hàng mua trong 1 tuần vừa qua SELECT count(id) as so_luong_don_hang
FROM BILL
WHERE create_at BETWEEN GETDATE()-DAY(7) AND GETDATE()
18. Lấy ra tên các sản phẩm có mã đơn hàng = 1
select p.product_name from PRODUCTS p, BILL_DETAIL bdt where p.id = bdt.product_id and bdt.bill_id = '1'
19. Lấy ra tên khách hàng có mã đơn = 2 select g.name from GUEST g , BILL b where g.id = b.guest_id and b.id = '2'
20. Lấy ra tên sản phẩm được khách hàng id = 3 mua select p.product_name
from PRODUCTS p, GUEST g , BILL_DETAIL bdt, BILL b
</div><span class="text_page_counter">Trang 15</span><div class="page_container" data-page="15">where g.id = b.guest_id and p.id = bdt.product_id and bdt.bill_id = b.id and g.id
WHERE name = 'Nguyen Duy Anh'
22. Hiển thị thông tin nhân viên tạo khuyến mãi ngày 13/10/2021 SELECT s.name, s.address, s.phone
FROM STAFF s, COUPON c
WHERE s.id = c.create_by AND cast(c.start_at as date) = '2021-10-13'
GROUP BY name,address, phone
23. Hiển thị nhân viên chưa có hóa đơn nào SELECT s.name, s.address, s.phone FROM STAFF s, BILL b
WHERE s.id NOT IN (SELECT create_by FROM BILL) GROUP BY name,address, phone
24. Tính tổng tiền các đơn của nhân viên bán được nhiều nhất DECLARE @cMax int = (SELECT MAX(s)
FROM (SELECT COUNT(create_by) as s FROM BILL GROUP BY create_by ) as s)
DECLARE @sId int=(SELECT create_by FROM BILL GROUP BY create_by HAVING COUNT(create_by)=@cMax)
SELECT s.id, s.name,SUM(b.amount) as tong_tien FROM STAFF s, BILL b
WHERE s.id = b.create_by AND b.create_by = @sId GROUP BY s.id, s.name
25. Hiển thị nhân viên bán được nhiều đơn nhất DECLARE @cMax int = (SELECT MAX(s)
</div><span class="text_page_counter">Trang 16</span><div class="page_container" data-page="16">FROM (SELECT COUNT(create_by) as s FROM BILL GROUP BY create_by ) as s)
DECLARE @sId int=(SELECT create_by FROM BILL GROUP BY create_by HAVING COUNT(create_by)=@cMax)
SELECT s.id, s.name,@cMax as tong_don FROM STAFF s, BILL b WHERE s.id = b.create_by AND b.create_by = @sId
GROUP BY s.id, s.name
<b>5.4. KHÁCH HÀNG</b>
26. Hiển thị thông tin khách hàng mua nhiều nhất trong 30 ngày DECLARE @Max int = (SELECT MAX(s)
FROM (SELECT SUM(amount)as s FROM BILL b WHERE create_at BETWEEN GETDATE()-DAY(30) AND GETDATE() GROUP BY guest_id ) as s)
DECLARE @id int=(SELECT guest_id FROM BILL GROUP BY guest_id HAVING SUM(amount)=@Max)
SELECT g.id, g.name,@Max as tong FROM GUEST g, BILL b
WHERE g.id = b.guest_id AND guest_id = @id GROUP BY g.id, g.name
27.In ra thông tin nhân viên doanh thu nhiều nhất trong 30 ngày DECLARE @cMax int = (SELECT MAX(s)
FROM (SELECT SUM(amount)as s FROM BILL b
WHERE create_at BETWEEN GETDATE()-DAY(30) AND GETDATE() GROUP BY create_by ) as s)
DECLARE @sId int=(SELECT create_by FROM BILL GROUP BY create_by HAVING SUM(amount)=@cMax)
SELECT s.id, s.name,@cMax as tong FROM STAFF s, BILL b WHERE s.id = b.create_by AND b.create_by = @sId
GROUP BY s.id, s.name
28. Tìm tên khách hàng đã mua hóa đơn có giá trị cao nhất trong năm 2022 select g.name from bill b, GUEST g where b.guest_id=g.id and amount in( select max(b.amount) from bill b where year(b.create_at)= '2022')
</div><span class="text_page_counter">Trang 17</span><div class="page_container" data-page="17"><b>6. Đánh giá thiết kế CSDL6.1.Ưu điểm:</b>
<b>-</b> Phù hợp với cửa hàng buôn bán nhỏ, sử dụng để bán hàng trực tiếp
<b>-</b> Các trường dữ liệu có thể đáp ứng đủ các nhu cầu cơ bản của 1 cửa hàng (về lưu trữ, tính tốn,…)
<b>6.2.Nhược điểm</b>
<b>-</b> Thiếu 1 số bảng để đáp ứng nhu cầu cho 1 cửa hàng kết hợp bán online (thu thập đánh giá của khách hàng về sản phẩm, giao hàng, mua hàng online,…)
</div>