Xác định bài toán Hoạt động của nhà sách: mua hàng và bán hàng Mua hàng: Khi có nhu cầu mua thêm hàng thì bộ phận kinh doanh của nhà sách sẽ có hợp đồng với các nhà cung cấp sách đ
Trang 1HỌC VIÊN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
Khoa: Công nghệ thông tin
CƠ SỞ DỮ LIỆU
Đề tài: Xây dựng Cơ sở dữ liệu quản lý mua bán sách
Biên soạn: Lê Văn Các Lớp: D10CN1
Trang 2Đề tài: Xây dựng Cơ sở dữ liệu quản lý mua bán sách
I Xác định bài toán
Hoạt động của nhà sách: mua hàng và bán hàng
Mua hàng: Khi có nhu cầu mua thêm hàng thì bộ phận kinh doanh của nhà sách sẽ có hợp đồng với
các nhà cung cấp sách để nhập sách về nhà sách, sau đó nhà cung cấp đưa thông tin( báo giá) các loại hàng về cho nhà sách Nếu đồng ý thì bộ phận kinh doanh của nhà sách gửi hóa đơn đặt hàng đến nhà cung cấp sách.Sau đó nhà cung cấp sách sẽ chuyển hàng về cho nhà sách và kèm theo hóa đơn Sau khi kiểm tra những hàng không đạt yêu cầu thì nhà sách sẽ gửi trả lại cho nhà cung cấp sách Hàng đã kiểm tra đủ tiêu chuẩn sẽ cho tiến hành nhập kho Cuối tháng nhà cung cấp gửi bảng đối chiếu nợ để cửa hàng đối chiếu nợ
Bán hàng: Đối với khách mua sĩ thì trước hết họ phải viết vào một đơn đặt hàng ( Nhà sách cung
cấp) Sau khi đối chiếu với lượng hàng còn trong kho, nếu đủ thì sẽ tiến hành lập hóa đơn bán hàng và bán cho khách.Đối với khách mua lẻ thì họ vào các quầy tự chọn loại hàng mà mình cần mua Sau đó
ra quầy thu ngân để thanh toán Khách sẽ nhận được phiếu tính tiền kèm với hàng
Cuối tháng, bộ phận kinh doanh sẽ gửi báo cáo về doanh thu trong tháng, và các sách bán chạy nhất trong tháng cho lãnh đạo nhà sách
II Xác định các đối tượng thực thể
1 Đơn đặt hàng (DONDH) :
- Số phiếu
- Ngày
2 Sách ( SACH)
- Mã sách
- Tên sách
- Đơn giá
3 Hóa đơn nhập ( HDNHAP):
- Số phiếu
- Ngày nhập
4 Khách (KHACH)
- Mã khách
- Tên khách
- Địa chỉ
5 Kho (KHO)
- Mã kho
- Tên kho
- Địa chỉ
- Giá nhập
6 Hóa đơn bán (HDBAN)
- Số hóa đơn
- Đơn giá
- Số lượng
7 Nhà cung cấp (NCC)
- Mã nhà cung cấp
- Tên nhà cung cấp
- Địa chỉ nhà cung cấp
Xác định mối quan hệ giữa các thực thể như sau:
DONDH < có> nhiều SACH
DONDH <giao> NCC
DONDH <đặt> SACH
HDNHAP <giao> NCC
KHACH <nhận> HDBAN
Trang 3NCC < có> SACH KHACH < nhận > SACH KHO < nhận> nhiều NCC
III Mô hình E-R
Hóa đơn bán
Số hóa đơn Đơn giá
Số
lượng
Khách
Mã khách
Tên khách
Hóa đơn
nhập
Nhà cung cấp
Đơn đặt hàng
Sách
Kho
Đặt
Có
Nhận
giao
Giao
Có
Địa chỉ
nhập
Số phiếu
Ngày nhập
Mã NCC Tên
NCC
Mã kho
Tên kho
Địa chỉ
Giá nhập
Mã sách
Tên sách
Giá bán
Trang 4IV Mô hình quan hệ
Từ mô hình E-R ta xây dựng mô hình quan hệ theo các bước sau:
1 Chuyển các thực thể thành các quan hệ tướng ứng:
DONDH( Số phiếu,Ngày)
SACH( Mã sách , tên sách, Đơn giá)
HDNHAP( Số phiếu, Ngày nhập)
KHACH( Mã khách, Tên khách, Địa chỉ)
HDBAN ( Số HĐ, Giá bán ( Đơn giá), Loại sách, Số lượng)
NCC ( Mã NCC, Tên, Địa chỉ)
Kho ( Mã kho, Tên kho, Địa chỉ, Giá nhập)
2 Chuyển đổi các mối quan hệ
KHÁCH có nhiều HÓA ĐƠN BÁN: đưa MÃ KHÁCH làm khóa ngoại trong HÓA ĐƠN BÁN NHÀ CUNG CẤP nhận nhiều ĐƠN ĐẶT HÀNG: Đưa MÃ NCC làm khóa ngoại trong ĐƠN ĐẶT HÀNG
NHÀ CUNG CÁP cung cấp SÁCH cho nhiều KHO: Đưa MÃ NCC làm khóa ngoại trong KHO, đưa
MÃ SÁCH làm khóa ngoại trong KHO
NHÀ CUNG CẤP nhận nhiều HÓA ĐƠN NHẬP: Đưa MÃ NCC làm khóa ngoại trong HÓA ĐƠN NHẬP
KHO có nhiều SÁCH: Đưa MÃ KHO làm khóa ngoại trong SÁCH
- Kết quả như sau:
DONDH( Số phiếu, Mã NCC, Ngày)
SACH ( Mã sách, Mã kho, Tên sách, Giá bán ( Đơn giá) )
HDNHAP ( Số phiếu, Mã NCC, Ngày)
KHACH ( Mã khách, Tên khách, Địa chỉ)
HDBAN ( Số HĐ, Mã sách, Tên sách,, Giá bán, Số lượng)
NCC ( Mã NCC, Tên, Địa chỉ)
KHO ( Mã kho, Mã NCC, Mã sách, Tên kho, Địa chỉ, Giá nhập)
3 Mô hình dữ liệu quan hệ:
Trang 5(hình vẽ được export từ mysql workbench)
Biểu thức đại số quan hệ:
Truy vấn 1: Tìm tên tất cả các cuốn sách có giá bán 20.000 đồng
Biểu thức truy vấn hoàn chỉnh là:
Result = π(Tên sách) (σ(Giá bán = “ 20.000 ”)(SACH))
Truy vấn 2: Tìm tên tất cả các khách hàng có địa chỉ ở Hà Đông – Hà Nội
Result = π(Tên Khách) (σ(Địa chỉ = “ Hà Đông – Hà Nội”)(KHACH))
Truy vấn 3: Tìm mã sách và tên sách có giá bán dưới 100.000 đồng
Result = π(Mã sách, Tên sách) (σ(Giá bán < 100.000)(SACH))
Truy vấn 4: Tìm tất cả các cuốn sách có giá 100.000 mà đã bán hơn 80 cuốn:
Result = π(Tên sách) (σ((Giá bán = “CSDL” AND (Số lượng > 80))(HDBAN))
Truy vấn 5: Tìm tên tất cả các nhà cung cấp có địa chỉ ở Hà Đông hoặc Thanh Xuân
Result = π(Tên) (σ((Địa chỉ = “ Hà Đông ”) or (Địa chỉ = “ Thanh Xuân”))(NCC))
Truy vấn 6: Tìm mã nhà cung cấp có ngày nhập là 05/10/2012
Result = π(Mã NCC) (σ(Ngày nhập = “ 05/10/2012”)(HDNHAP))
Truy vấn 7: Tìm số phiếu của tất cả hóa đơn nhập.có mã nhà cung cấp là 10
Result = π(HDNHAP.Số phiếu) (σ(Mã NCC = “ 10”)(HDNHAP x NCC))
Truy vấn 8: Tìm mã tất cả các khách hàng có tên là Lê Văn Các
Result = π(Mã khách) (σ(Tên khách = “ Lê Văn Các ”)(KHACH))
Truy vấn 9:Tìm số hóa đơn mã tất cả các hóa đơn bán với các khách hàng chỉ mua sách với số lượng
50
Trang 6Result = [π(HDBAN.Số HD) (σ(HDBAN.Số lượng = 50)(HDBAN))]-[π(HDBAN.Số HD) (σ(HDBAN.Số lượng ≠ 50)(HDBAN))]
Truy vấn 10: Tìm mã khách của tất cả các khách hàng hoặc có tên là Lê Văn Các hoặc có địa chỉ Hà Đông:
Result = π(Mã khách) (σ((Tên = “ Lê Văn Các ”) or (Địa chỉ = “ Hà Đông”))(KHACH))
V Chuẩn hóa về dạng 3NF:
Tách SACH thành 2 quan hệ:
SACH ( Mã sách, Tên sách)
GIASACH ( Mã sách, Mã kho, Giá bán)
Tách KHO thành 2 qua hệ:
KHO ( Mã kho, Tên kho, Địa chỉ)
NHAPKHO ( Mã kho, Mã NCC, Mã sách, Giá nhập)
+ Kết quả chuẩn hóa:
DONDH( Số phiếu, Mã NCC, Ngày)
SACH ( Mã sách, Mã kho, Tên sách, Giá bán ( Đơn giá) )
HDNHAP ( Số phiếu, Mã NCC, Ngày)
KHACH ( Mã khách, Tên khách, Địa chỉ)
HDBAN ( Số HĐ, Mã sách, Tên sách,, Giá bán, Số lượng)
NCC ( Mã NCC, Tên, Địa chỉ)
KHO ( Mã kho, Mã NCC, Mã sách, Tên kho, Địa chỉ, Giá nhập)
NHAPKHO ( Mã kho, Mã NCC, Mã sách, Giá nhập)
SACH ( Mã sách, Tên sách)
GIASACH ( Mã sách, Mã kho, Giá bán)
VI Thực hiện 10 câu truy vấn bằng ngôn ngữ SQL
Truy vấn 1: Tìm tên tất cả các cuốn sách có giá bán 20.000 đồng
SELECT Tên sách
FROM SACH
WHERE Giá bán =20.000 đồng;
Truy vấn 2: Tìm tên tất cả các khách hàng có địa chỉ ở Hà Đông – Hà Nội
SELECT Tên khách
FROM KHACH
WHERE Địa chỉ =HA DONG_HANOI;
Truy vấn 3: Tìm mã sách và tên sách có giá bán dưới 100.000 đồng
SELECT Mã sách
FROM SACH
WHERE Giá bán < 100.000 ĐỒNG;
Truy vấn 4: Tìm tất cả các cuốn sách có giá 100.000 mà đã bán hơn 80 cuốn:
SELECT Tên sách
FROM SACH
Trang 7WHERE Gía bán=100.000 ĐỒNG AND Số lượng >80 CUON;
Truy vấn 5: Tìm tên tất cả các nhà cung cấp có địa chỉ ở Hà Đông hoặc Thanh Xuân
SELECT Tên
FROM NCC
WHERE Địa chỉ =HA DONG OR Địa chỉ = THANH XUAN;
Truy vấn 6: Tìm mã nhà cung cấp có ngày nhập là 05/10/2012
SELECT Mã NCC
FROM NCC
WHERE Ngày nhập =5/10/2012 IN
SELECT Ngày nhập
FROM HDNHAP
Truy vấn 7: Tìm số phiếu của tất cả hóa đơn nhập.có mã nhà cung cấp là 10
SELECT COUNT(Số phiếu)
FROM HDNHAP
WHERE Mã NCC=10 IN
SELECT Mã NCC
FROM NCC
Truy vấn 8: Tìm mã tất cả các khách hàng có tên là Lê Văn Các
SELECT Mã khách
FROM KHACH
WHERE Tên khách=LE VAN CAC;
Truy vấn 9:Tìm số hóa đơn mã tất cả các hóa đơn bán với các khách hàng chỉ mua sách với số lượng
50
SELECT COUNT(HDBAN)
FROM HDBAN
WHERE Số lượng =50;
Truy vấn 10: Tìm mã khách của tất cả các khách hàng hoặc có tên là Lê Văn Các hoặc có địa chỉ Hà Đông:
SELECT Mã khách
FROM KHACH
WHERE Tên khách =LE VAN CAC OR Địa chỉ= HA DONG;