Từ các hóa đơn có thể tìm thấy thông tin về sản phẩm, nhà cung cấp và khách hàng cũng như giá cả và các thông tin cần thiết khác.. Thông tin về nhà cung cấp bao gồm tên hãng, địa chỉ liê
Trang 1Học viện công nghệ bưu chính viễn thông
BÀI TẬP LỚN
MÔN : CƠ SƠ DỮ LIỆU
Đề tài: Quản lý cửa hàng tạp hóa
Sinh viên: Lê Tung Hoành
Lớp : D10CN1
Trang 2I: Phân tích bài toán
Bài toán đặt ra là quản lý bán hàng của cửa hàng tạp hóa Đòi hỏi quản lý bao gồm nhà cung cấp, sản phẩm, hóa đơn, loại sản phẩm và khách hàng Thông qua đó có thể lập các hóa đơn Từ các hóa đơn có thể tìm thấy thông tin về sản phẩm, nhà cung cấp và khách hàng cũng như giá cả và các thông tin cần thiết khác
Các thông tin về khách hàng cần nắm được họ tên, tên viết tắt, địa chỉ , số điện thoại
Thông tin về nhà cung cấp bao gồm tên hãng, địa chỉ liên hệ, số điện thoại, tình trạng của nhà cung cấp ra sao và đơn đặt hàng với nhà cung cấp đó là gì Một hãng cũng có thể cùng lúc cung cấp nhiều loại mặt hàng
Thông tin về sản phẩm phải nắm được là mô tả sản phẩm, ngày nhập về, ngày giao cho khách hàng, giá bán sản phẩm, lợi nhuận của từng sản phẩm, nhà cung cấp sản phẩm đó là ai
Trang 3Thông tin về hóa đơn bao gồm khách hàng mua, ngày mua và các sản phẩm được mua, đơn giá, số lượng sản phẩm khách hàng mua
II, Xác định các đối tượng thực thể:
1.Khách hàng: Thực thể khách hàng dùng để lưu thông tin của các khách hàng, bao gồm các thuộc tính:
Họ tên
Địa chỉ
Số điện thoại
2 Hóa đơn: Thực thể hóa đơn lưu thông tin để thể hiện các yêu cầu trả tiền của khách hàng, bao gồm các thuộc tính như:
Mã hóa đơn
Khách hàng mua
ngày mua
Tên sản phẩm
Số lượng
Đơn giá
3 Nhà cung cấp: Thực thể nhà cung cấp dùng để lưu thông tin của các nhà cung cấp bao gồm các thuộc tính như:
Tên
Tên hàng
Trang 4 Mã hàng
Địa chỉ
Số điện thoại
4.Sản phẩm: Thực thể sản phẩm lưu thông tin về các mặt hàng, bao gồm các thuộc tính chính như:
Tên sản phẩm
ngày nhập
ngày bán
giá nhập
giá bán
nhà cung cấp
III, Ánh xạ mô hình thực thể quan hệ ra mô hình cơ sở
dữ liệu quan hệ:
1, Mô hình E-R:
Trang 5
Sản phẩm
Nhà cung cấp
Số điện
thoại
Khách hàng mua
Ngày mua
Tên sản phẩm
Số lượng
Đơn giá
Ngày bán
Nhà cung cấp Giá bán
Ngày nhập
Giá nhập
Địa chỉ
Tên
Số điện
thoại
Tên sản phẩm
Lưu thông tin
Chứa
Cung cấp
Tên mặt hàng
Mã hàng
Mã hóa đơn
Trang 62.Thiết kế cơ sở dữ liệu ở mức logic:
Hóa đơn
#Mã hóa đơn Khách hàng mua Tên sản phẩm
Số lượng Đơn giá Ngày mua
Khách hàng
#Họ tên
Địa chỉ
Số điện thoại
Nhà cung cấp
#Tên
Tên mặt hàng
Mã hàng
Địa chỉ
Số điện thoại
Sản phẩm
#Tên sản phẩm Ngày nhập Ngày bán Giá nhập Giá bán Nhà cung cấp
Trang 73.Mô hình cơ sở dữ liệu quan hệ:
4 10 câu lệnh truy vấn:
Trang 8Ví dụ 1: Tìm tên tất cả các khách hàng có tên là Hoa
- Đầu tiên chọn tất cả khánh hàng có tên là Hoa
r = (Họ tên = “Hoa”)(Khách hàng)
- Tiếp chiếu kết quả lên thuộc tính Họ tên:
result = (Họ tên) (r)
- Câu truy vấn hoàn chỉnh là:
result = (Họ tên)((Họ tên = “Hoa”)(Khách hàng))
Ví dụ 2: Tìm tên các mặt hàng của nhà cung cấp
- Đầu tiên chọn các mặt hàng
r = (Tên mặt hàng = “Mã hàng”)(Nhà cung cấp)
- Tiếp chiếu kết quả lên thuộc tính Tên mặt hàng và Mã hàng result = (Tên mặt hàng, Mã hàng)(r)
- Câu truy vấn hoàn chỉnh
result = (Tên mặt hàng, Mã hàng)((Tên mặt hàng = ”Mã hàng”)(Nhà cung cấp))
Ví dụ 3: Tìm tên các khách hàng có địa chỉ ở Nguyễn Trãi
- Đầu tiên chọn các khách hàng có địa chỉ ở trên
r = (Địa chỉ = “Nguyễn Trãi”)(Khách hàng)
- Sau đó ta chiếu kết quả lên thuộc tính tên
result = (Họ tên)(r)
- Câu truy vấn hoàn chỉnh
result = (Họ tên)((Địa chỉ = “Nguyễn Trãi”)(Khách hàng))
Ví dụ 4: Tìm tên các sản phẩm nhập về ngày 20/12/2012
Trang 9- Đầu tiên ta chọn sản phẩm có ngày nhập về là 20/12/2012
r = (Ngày nhập = “20/12/2012”)(Sản phẩm)
- Sau đó ta chiếu kết quả lên thuộc tính tên sản phẩm result = (Tên sản phẩm)(r)
- Câu truy vấn hoàn chỉnh
result = (Tên sản phẩm)((Ngày nhập = “20/12/2012”)(Sản phẩm))
Ví dụ 5: Tìm tên sản phẩm nhập về có giá trên 100.000đ
- Đầu tiên ta chọn Giá nhập trên 100.000đ
r = (Giá nhập = “100.000đ”)(Sản phẩm)
- Sau đó ta chiếu kết quả lên thuộc tính Tên sản phẩm result = (Tên Sản phẩm)(r)
- Câu truy vấn hoàn chỉnh
result = (Tên sản phẩm)((Giá nhập = “100.000đ”)(Sản phẩm))
Ví dụ 6: Liệt kê các hóa đơn có giá trị trên 3 triệu đồng
- Đầu tiên ta chọn hóa đơn có giá trên 3 triệu đồng
r = (Hóa đơn > 3 triệu)(Hóa đơn)
- Sau đó ta chiếu kết quả lên thuộc tính Mã hóa đơn
result = (Mã hóa đơn)(r)
- Câu truy vấn hoàn chỉnh là:
result = (Mã hóa đơn)((Hóa đơn > 3 Triệu)(Hóa đơn))
Ví dụ 7: Tìm số lượng sản phẩm trên 20 mà khách hàng mua
- Câu truy vấn hoàn chỉnh
Trang 10result = (Tên sản phẩm)((Số lượng>20)(Sản phẩm))
Ví dụ 8: Tìm tên tất cả các sản phẩm nhập về có giá 3 triệu đồng hoặc trên 5 triệu đồng
- Câu truy vấn hoàn chỉnh
result = [(Tên sản phẩm)(( Giá nhập = 3 Triệu)(S))] [(Tên sản phẩm)((Giá nhập = 5 Triệu)(S))]
Ví dụ 9: Tìm tên tất cả các sản phẩm có giá bán trên 20 triệu
- Câu truy vấn hoàn chỉnh
result = (Tên sản phẩm)((Giá bán > 90)(Sản phẩm))
Ví dụ 10: Tìm các sản phẩm được nhập về ngày 12/10/2012 hoặc 20/8/2012
result = [(Tên sản phẩm)((Ngày nhập = 12/10/2012)(Sản phẩm))] [(Tên sản phẩm)((Ngày nhập = 20/20/8/2012)(Sản phẩm))]
5 Chuẩn hóa về dạng 3NF
- Các quan hệ:
+ Khách hàng (Họ tên#, Địa chỉ, Số điện thoại)
Trong đó: Họ tên là thuộc tính khóa
+ Hóa đơn (Mã hóa đơn#, Khách hàng mua, Tên sản phẩm, Số lượng, Đơn giá, Ngày mua)
Trong đó : Mã hóa đơn là thuộc tính khóa
+ Nhà cung cấp (Tên#, Mã hàng ,Tên mặt hàng, Địa chỉ, Số điện thoại)
Trong đó: Tên là thuộc tính khóa
+ Sản phẩm (Tên sản phẩm#, Ngày nhập, Ngày bán, Giá nhập, Giá bán, Nhà cung cấp)
Trong đó: Tên sản phẩm là thuộc tính khóa
- Cùng với các tập phụ thuộc hàm của chúng không gây ra vi phạm của dạng chuẩn 3NF (một lược đồ quan hệ R ở dạng 3NF với tập phụ thuộc hàm F nếu
Trang 11không có thuộc tính không khóa nào phụ thuộc hàm bắc cầu vào một khóa của R)
vì vậy lược đồ quan hệ trên đã ở dạng chuẩn 3NF
6 Dịch các câu lệnh DSQH sang SQL
Ví dụ 1: Tìm tên tất cả các khách hàng có tên là Hoa
SELECT * FROM Khách hàng WHERE Họ tên= ‘Hoa’;
Ví dụ 2: Tìm tên các mặt hàng của nhà cung cấp
SELECT * FROM Nhà cung cấp WHERE Tên mặt hàng= Mã hàng;
Ví dụ 3: Tìm tên các khách hàng có địa chỉ ở Nguyễn Trãi
SELECT * FROM Khách hàng WHERE Địa chỉ= ‘Nguyễn Trãi’;
Ví dụ 4: Tìm tên các sản phẩm nhập về ngày 20/12/2012
SELECT * FROM Sản phẩm WHERE Ngày nhập=20/12/2012;
Ví dụ 5: Tìm tên sản phẩm nhập về có giá trên 100.000đ
SELECT * FROM Sản phẩm WHERE Giá nhập=100.000đ;
Ví dụ 6: Liệt kê các hóa đơn có giá trị trên 3 triệu đồng
SELECT * FROM Hóa đơn WHERE Hóa đơn=3triệu;
Ví dụ 7: Tìm số lượng sản phẩm trên 20 mà khách hàng mua
SELECT * FROM Sản phẩm WHERE Số lượng>20;
Ví dụ 8: Tìm tên tất cả các sản phẩm nhập về có giá 3 triệu đồng hoặc trên 5 triệu đồng
SELECT * FROM Sản phẩm WHERE Giá nhập=3Triệu OR Giá nhập= 5Triệu;
Ví dụ 9: Tìm tên tất cả các sản phẩm có giá bán trên 20 triệu
SELECT * FROM Sản phẩm WHERE GiaBan>20Triệu;
Ví dụ 10: Tìm các sản phẩm được nhập về ngày 12/10/2012 hoặc 20/8/2012
SELECT * FROM Sản phẩm WHERE Ngày nhập=12/10/2012 OR Ngày nhập=20/8/2012;