Mô tả bài toánMỗi khách hàng có một mã khách hàng MAKH duy nhất, mỗi MAKH xác định được các thông tin về khách hàng như: họ tên khách hàng HOTEN, địa chỉ ĐIACHI, số điện thoại DIENTHOAI.
Trang 1TRƯỜNG ĐẠI HỌC DUY TÂN
BÀI TẬP CÁ NHÂN MÔN: CƠ SỠ DỮ LIỆU
Đề tài QUẢN LÝ BÁN HÀNG
Giảng viên hướng dẫn : Trần Huệ Chi Sinh viên thực hiện : Nguyễn Văn Thuận Lớp : IS 301 B
Mã sinh viên: 28211106441
Trang 2
MỤC LỤC PHẦN I – PHÂN TÍCH YÊU CẦU VÀ THIẾT KẾ MÔ HÌNH CƠ SỞ DỮ LIỆU 1
1 Mô tả bài toán 1
2 Mô hình thực thể liên kết 2
3 Mô hình quan hệ 2
4 Nhập dữ liệu 3
PHẦN II – BIỂU THỨC ĐẠI SỐ QUAN HỆ 5
PHẦN III – NGÔN NGỮ SQL 6
1 Câu lệnh tạo bảng 6
2 Câu lệnh chỉnh sửa cấu trúc bảng 6
2.1 Câu lệnh thêm cột 6
2.2 Câu lệnh xóa cột 6
2.3 Câu lệnh đổi kiểu dữ liệu 6
3 Câu lệnh về dữ liệu 7
3.1 Câu lệnh nhập dữ liệu vào bảng 7
3.2 Câu lệnh xóa dữ liệu 7
4 Câu lệnh thao tác dữ liệu 7
4.1 Truy vấn lấy dữ liệu từ 1 bảng (8 câu) 7
4.2 Truy vấn từ nhiều bảng (6 câu) 8
4.3 Truy vấn có dùng hàm 10
4.4 Truy vấn có gộp nhóm 10
Trang 3PHẦN I – PHÂN TÍCH YÊU CẦU VÀ THIẾT KẾ MÔ HÌNH CƠ
SỞ DỮ LIỆU
1 Mô tả bài toán
Mỗi khách hàng có một mã khách hàng (MAKH) duy nhất, mỗi MAKH xác định được các thông tin về khách hàng như: họ tên khách hàng (HOTEN), địa chỉ (ĐIACHI), số điện thoại (DIENTHOAI) Các mặt hàng được phân loại theo từng nhóm hàng, mỗi nhóm hàng có một mã nhóm (MANHOM) duy nhất, mỗi mã nhóm hàng xác định tên nhóm hàng (TENNHOM), tất
nhiên một nhóm hàng có thể có nhiều mặt hàng Mỗi mặt hàng được đánh một mã số (MAHANG) duy nhất, mỗi mã số này xác định các thông tin về mặt hàng đó như : tên hàng (TENHANG), đơn giá bán (ĐONGIA), đơn vị tính (ĐVT) Mỗi hóa đơn bán hàng có một số hóa đơn (SOHD) duy nhất, mỗi hóa đơn xác định dược khách hàng và ngày lập hóa đơn (NGAYLAPHD), ngày bán hàng (NGAYBAN) Với mỗi mặt hàng trong
một hóa đơn cho biết số lượng bán (SLBAN) của mặt hàng đó
KHACHHANG (MAKH, HOTEN, DIACHI, DIENTHOAI)
NHOMHANG (MANHOM, TENNHOM)
HOADON (SOHD, NGAYLAPHD, NGAYBAN)
MATHANG (MAHANG, TENHANG, DONGIA, DVT)
BAN (SOHD, MAHANG, SLBAN)
Trang 42.Mô hình thực thể liên kết
Bản vẽ mô hình thực thể liên kết 3.Mô hình quan hệ
Bản vẽ mô hình quan hệ
Trang 54.Nhập dữ liệu
Bảng dữ liệu KHACHHANG
Bảng dữ liệu NHOMHANG
Bảng dữ liệu MATHANG
Trang 6Bảng dữ liệu HOADON
Bảng dữ liệu BAN
Trang 7PHẦN II – BIỂU THỨC ĐẠI SỐ QUAN HỆ
1 Lập danh sách các khách hàng ở Đà Nẵng
δdiachi = “Đà Nẵng” (KHACHHANG)
2 Lập danh sách những mặt hàng có dvt là kg
δDVT = “kg” (MATHANG)
3 Lấy những hóa đơn năm 2023 Mahd, makh, ngayhd
πmahđ, makh, ngayhd (δ year(ngayhd) = 2023(hoadon))
4 Lấy những mặt hàng có sl bán>=20 Mah, mahd, slban
πmah, mahd, slban (δ slban >= 20 (ban))
5 Lấy những mặt hàng có trong hd01 Mahd, mah, tenh
πmahd, mah, tenh (δmahd = “hd01” (ban * mathang))
6 Lấy những mặt hàng mà kh01 đã mua Makh, mahd, mah, tenh πmakh, mahd, mah, tenh (δmakh = “kh01” (ban*hoadon * mathang))
7 Lấy những hóa đơn mua với sl>50 Mah, mahd, tenh, sl
πmah, mahd, tenh, slban (δ slban >50 (ban * mathang))
8 Lấy những mặt hàng chưa ai mua
πmah(mathang) – πmah(ban)
Trang 8
PHẦN III – NGÔN NGỮ SQL
1 Câu lệnh tạo bảng
CREATE TABLE KHACHHANG
(MAKH TEXT PRIMARY KEY,
HOTEN TEXT,
DIACHI TEXT,
DIENTHOAI NUMBER)
CREATE TABLE NHOMHANG
(MANHOM TEXT PRIMARY KEY,
TENNHOM TEXT)
CREATE TABLE MATHANG
(MAHANG TEXT PRIMARY KEY,
TENHANG TEXT,
DONGIA NUMBER,
DVT TEXT,
MANHOM TEXT REFERENCES NHOMHANG(MANHOM))
2 Câu lệnh chỉnh sửa cấu trúc bảng
2.1 Câu lệnh thêm cột
Alter table HOADON add column GIAMGIA number 2.2 Câu lệnh xóa cột
Alter table KHACHHANG drop column DIACHI 2.3 Câu lệnh đổi kiểu dữ liệu
alter table KHACHHANG
alter column DIENTHOAI int
Trang 93 Câu lệnh về dữ liệu
3.1 Câu lệnh nhập dữ liệu vào bảng
Insert into KHACHHANG (MAKH, HOTEN, DIACHI, DIENTHOAI) values (“KH06”, “Nguyễn Văn A”, “Hà Nội”, “0123456789”)
3.2 Câu lệnh xóa dữ liệu
Delete from KHACHHANG where MAKH = “KH01”
4 Câu lệnh thao tác dữ liệu
4.1 Truy vấn lấy dữ liệu từ 1 bảng (8 câu)
- Câu không cần điều kiện: Lập danh sách các khách hàng
Select makh, hotwn, diachi, dienthoai from KHACHHANG
- Câu có 1 điều kiện: Lấy những mặt hàng có dvt là “kg” tenh, dvt
Select tenh, dvt
From HANG
Where dvt = “kg”
- Câu có 2 điều kiện: Liệt kê các mặt hàng có số lượng
>=10 và <=20 Mah, soluong, dongia
Select mah, soluong, dongia
From BAN
Where soluong >= 10 and soluong <= 20
- Câu có sử dụng biểu thức: Lấy những hóa đơn trong
năm 2022 Mahd, nam
Select mahd, ngayhd as nam
From HOADON
Trang 10
Where year (ngayhd) = 2022
- Câu có dùng tùy chọn top N: Liệt kê 2 mặt hàng có đơn giá thấp nhất
Select top 2 mahang, tenhang, dongia
From MATHANG
Order by dongia
- Câu có dùng tùy chọn *: Lấy tất cả thông tin của các hóa đơn
Select * from HOADON
- Câu có dùng tùy chọn order by: Lấy danh sách khách hàng được sắp xếp theo mã khách hàng
Select * from KHACHHANG order by makh
- Câu có sử dụng kết hợp 2 hoặc 3 tùy chọn trên: Lấy danh sách 10 mặt hàng có Đơn giá cao nhất, được sắp xếp theo Mã hàng
Select top 10 * from MATHANG
Order by dongia, mahang
4.2 Truy vấn từ nhiều bảng (6 câu)
- 2 Câu truy vấn từ 2 bảng không cần điều kiện lọc
Truy vấn tất cả thông tin của bảng KHACHHANG và NHOMHANG:
Select * from KHACHHANG, NHOMHANG
Truy vấn số hóa đơn và ngày lập hóa đơn từ bảng HOADON và MATHANG:
Select hoadon.sohd, hoadon.ngaylaphd from hoadon, mathang
Trang 11- 2 Câu truy vấn từ 2 bảng có thêm điều kiện lọc
Truy vấn số hóa đơn, ngày lập hóa đơn và mã hàng từ bảng HOADON và MATHANG chỉ khi mã hàng bằng
“MH01”:
select hoadon.sohd, hoadon.ngaylaphd, mathang.mahang from hoadon, mathang where mathang.mahang = “MH01” truy vấn mã khách hàng và địa chỉ từ bảng
KHACHHANG và NHOMHANG chỉ khi nhóm hàng là
“Snack”:
select khachhang.makh, khachhang.diachi
from khachhang, nhomhang
where nhomhang.tennhom = “snack”
- 2 Câu truy vấn từ 3 bảng trở lên
Truy vấn số hóa đơn, ngày lập hóa đơn, tên hàng, và số lượng bán từ các bảng HOADON, MATHANG và BAN: select hoadon.sohd, hoadon.ngaylaphd, mathang.tenhang, ban.slban from hoadon, mathang, ban
where hoadon.sohd = ban.sohd and mathang.mahang = ban.mahang
Truy vấn tên nhóm hàng, tên hàng, mã hàng và đơn giá
từ các bảng NHOMHANG, MATHANG và BAN chỉ khi
số lượng bán lớn hơn 10:
select nhomhang.tennhom, mathang.tenhang,
mathang.mahang, mathang.dongia
from nhomhang, mathang, ban
where nhomhang.manhom = mathang.manhom and mathang.mahang = ban.mahang and ban.slban > 10
Trang 124.3 Truy vấn có dùng hàm
- 1 câu có dùng làm sum có điều kiện: Tính tổng số lượng hàng đã bán trong toàn bộ các hóa đơn
select sum (SLBAN)
from BAN
- 1 câu dùng hàm count: Đếm số lượng khách hàng
select count (*) as sl_khachhang
from KHACHHANG
- 1 câu dùng hàm agv có điều kiện: Tính trung bình giá của các mặt hàng có số lượng bán lớn hơn 10
select avg(dongia)
from mathang
where mahang in
(select mahang
from ban
where slban > 10)
- 1 câu dùng max: tìm mặt hàng có giá cao nhất
select max(dongia)
from mathang
- 1 câu dùng min: Tìm số lượng bán nhỏ nhất trong bảng BAN
select min (slban)
from ban
4.4 Truy vấn có gộp nhóm
- 1 câu có dùng hàm sum: Tính tổng số lượng hàng đã bán của mỗi hóa đơn
select distinct b.sohd,
(select sum(slban) from ban where sohd = b.sohd) as tong_slban
from ban b
- 1 câu có dùng hàm count có điều kiện nhóm: đếm số lượng khách hàng theo từng nhóm hàng
select nh.tennhom,
(select count(*)
Trang 13from khachhang kh, mathang mh
where kh.mahang = mh.mahang and mh.manhom = nh.manhom) as so_luong_kh
từ 2 bảng: Tìm mã hàng và giá cao nhất trong danh sách
các mặt hàng
select mh.mahang, max(mh.dongia) as gia_cao_nhat
from mathang mh
- 1 câu có dùng hàm avg có điều kiện nhóm: Tính giá
trung bình của các mặt hàng đã bán theo từng hóa đơn
select b.sohd, (select avg(dongia) from mathang where mahang = b.mahang) as gia_trung_binh from ban b