Bài tập lớn môn cơ sở dữ liệu sql server - Pdf 51

BÁO CÁO TỔNG THỂ
XÂY DỰNG HỆ CƠ SỞ DỮ LIỆU QUẢN LÝ CỬA HÀNG THUỐC LÁ
VÀ DƯỢC PHẨM

Họ và tên: Đỗ Minh Huy
Lớp:58TH3
Mã sv: 1651060851

BÀI TẬP LỚN
MÔN HỌC: CƠ SỞ DỮ LIỆU

1.Tên đề tài
Xây dựng cơ sở dữ liệu cho bài toán quản lý hoạt động của cửa hàng
2.Mục đích
Xây dựng cơ sở dữ liệu cho bài toán trên hệ quản trị MS SQL Sever
3.Công việc cần thực hiện
-

Xác định quy tắc /ràng buộc, xây dựng mô hình thực thể liên kết ER
Chuyển từ mô hình thực thể liên kết sang mô hình quan hệ
Xác định khóa
Chuẩn hóa lược đồ quan hệ 3NF hoặc BCNF
Câu lệnh truy vấn dữ liệu SQL

4.Yêu cầu
Yêu cầu mỗi báo cáo phải trình bày rõ ràng, không có lỗi chính tả, từ 15-25
trang, cỡ chữ Times New Roman 13 hoặc tương đương, dãn dòng 1.2cm, đầu trang
cuối trang 2cm, lề trái 3.5cm, lề phải 2cm.
5. Tài liệu tham khảo
- Bài giảng của giáo viên




*** Bài toán thực tế***

1, Hệ CSDL :
- Quản lí danh sách các nhân viên trong cửa hàng.
- Quản lí việc xuất các hàng hóa trong cửa hàng, các hóa đơn nhập hàng,
hóa đơn bán hàng và đơn đặt hàng.
- Quản lí danh sách các khách hàng và các đối tác cung cấp hàng hóa.

2, Yêu cầu:
- Dữ liệu về các nhân viên trong cửa hàng, gồm các thông tin về: họ tên,
ngày sinh, số điện thoại, địa chỉ, mã nhân viên, …
- Dữ liệu về hàng hóa: mã hàng hóa, tên, số lượng, giá thành, …
- Dữ liệu về thông tin khách hàng: mã khách hàng, họ tên, địa chỉ, số điện
thoại, mặt hàng đã mua, …
- Dữ liệu về các đối tác cung cấp hàng( các nhà sản xuất dụng cụ văn phòng
phẩm, nhà xuất bản,… ): mã đối tác, tên, địa chỉ, số điện thoại sản phẩm,

- Dữ liệu về các hóa đơn nhập hàng: đỗi tác, hàng hóa, số lượng, đơn giá, …

I.

Xác định quy tắc/rằng buộc, xây dựng mô hình thực thể
liên kết ER
3


Quy tắc/ rằng buộc:
-

TênNV

Địa chỉ
SĐT

Tên CH

Cửa hàng

Giới tính

Quản lí
Nhân viên

Chủ cửa hàng
Địa chỉ

MaNV

Địa chỉ

Nhiệm vụ

SĐT

4

LoạiThuốc lá

Mãhh Công dụng

Sđt

Dược phẩm

Tên

II.

Loại

Chuyển từ mô hình thực thể sang mô hình quan hệ

Chủ cửa hàng
Tên chủ | Địa chỉ | SĐT .
Làm
Mã NV | Tên CH | Tên chủ .
Cửa hàng
5
Bán


Tên CH | Địa chỉ | SĐT .
Nhân viên
Mã NV | Tên NV | Địa chỉ | Tuổi | Giới tính | Nhiệm vụ | SĐT .
Bán hàng
Mã KH | Mã NV | Mã HH | Số lượng .
Khách hàng
Mã KH | Tên KH | Địa chỉ | Giới tính | Tuổi | SĐT.
Hàng hóa
Mã HH | Tên HH | Số lượng | Giá thành | Loại.


Loại}
F8 = {Mã HH → Loại, Mã HH → Tên, Mã HH → Loại, Mã HH → Công dụng}
F9 = {Mã HH → Loại}
F10 = {Mã nhập hàng → Mã NV, Mã nhập hàng → Mã HH, Mã nhập hàng →
Mã CC}

-

F11 ={Mã CC → Tên CC; Mã CC → Địa chỉ; Tên CC, Địa chỉ → Mã CC, Mã
CC → SĐT}
Xác định khóa:
-

Xét quan hệ CHUCH
Đặt Tenchu=A, Diachi=B, SĐT=C
Khi đó F={A→B, A→C}
U=ABC
T=A(T là tập thuộc tính xuất hiện bên trái)
P=BC (P là tập thuộc tính xuất hiện bên phải)
K=U/P= A
Ta có K+=ABC=U nên K=A là khóa . Tức là khóa của quan hệ CHUCH là
TenChu.

-

Xét quan hệ CUAHANG
Đặt TenCH=A, Diachi=B, SĐT=C
Khi đó F={A→B, A→C}
U=ABC

Ta có K+=ABC=U nên K=AB là khóa . Tức là khóa của quan hệ LAM là
MaNV, TenCH.

-

Xét quan hệ KHACHHANG
Đặt MaKH=A, TenKH=B, DiaChi=C, SĐT =D, GioiTinh=F, Tuoi=G
Khi đó F={A→B, A→C,A→D, A→F, A→G }
U=ABCDFG
T=A(T là tập thuộc tính xuất hiện bên trái)
P=BCDFG (P là tập thuộc tính xuất hiện bên phải)
K=U/P= A
Ta có K+=ABCDFG=U nên K=A là khóa . Tức là khóa của quan hệ
KHACHANG là MaKH.

-

Xét quan hệ HANGHOA
8


Đặt MaHH=A, Loai=B, SoLuong=C, Gia =D, TenHH=E
Khi đó F={A→B, A→C,A→D, A→E }
U=ABCDE
T=A(T là tập thuộc tính xuất hiện bên trái)
P=BCDE (P là tập thuộc tính xuất hiện bên phải)
K=U/P= A
Ta có K+=ABCDE=U nên K=A là khóa . Tức là khóa của quan hệ
HANGHOA là MaHH.
-


U=AB
T=A(T là tập thuộc tính xuất hiện bên trái)
P=B (P là tập thuộc tính xuất hiện bên phải)
K=U/P= A
Ta có K+=AB=U nên K=A là khóa . Tức là khóa của quan hệ THUOCLA là
MaHH.
-

Xét quan hệ NHAPHANG
Đặt MaNH=A, MaNV=B, MaCC =C, SoLuong =D
Khi đó F={A→B, A→C,A→D}
U=ABCD
T=A(T là tập thuộc tính xuất hiện bên trái)
P=BCD (P là tập thuộc tính xuất hiện bên phải)
K=U/P= A
Ta có K+=ABCD=U nên K=A là khóa . Tức là khóa của quan hệ
NHAPHANG là MaNH.

-

Xét quan hệ NHACC
Đặt MaCC=A, TenCC=B, DiaChi=C, SĐT =D
Khi đó F={A→B, A→C,A→D }
U=ABCD
T=A(T là tập thuộc tính xuất hiện bên trái)
P=BCD (P là tập thuộc tính xuất hiện bên phải)
K=U/P= A
Ta có K+=ABCD=U nên K=A là khóa . Tức là khóa của quan hệ NHACC là
MaCC.

Tên CH: lược đồ ở dạng chuẩn 2NF.
 Do Tên CH → Địa chỉ, Tên CH là siêu khóa: lược đồ ở dạng chuẩn 3NF.



Làm (Mã NV, Tên CH, Tên chủ)
F3 = {Mã NV → Tên CH, Mã NV → Tên chủ }

Lược đồ quan hệ chỉ chứa các thuộc tính nguyên tố: lược đồ ở
dạng chuẩn 1NF.

Mã NV là khóa dự bị, thuộc tính Tên chủ, Tên CH phụ thuộc hàm
đầy đủ vào Mã NV: lược đồ ở dạng chuẩn 2NF.

Do Mã NV → Tên CH, Mã NV → Tên chủ và Mã NV là siêu
khóa, lược đồ thuộc chuẩn 3NF.
Nhân viên (Mã NV, Tên NV, Địa chỉ, Tuổi, Giới tính, SĐT)
F4 = {Mã NV → Tên NV, Mã NV → Địa chỉ, Mã NV → Tuổi, Mã NV →
Giới tính, Mã NV → SĐT}

Lược đồ quan hệ chỉ chứa các thuộc tính nguyên tố: lược đồ ở
dạng chuẩn 1NF.

11



Lược đồ có khóa dự bị là Mã NV, các thuộc tính khác phụ thuộc
đầy đủ vào Mã NV, nên lược đồ ở dạng chuẩn 2NF.



Loại}
 Lược đồ quan hệ chỉ chứa các thuộc tính nguyên tố: lược đồ ở dạng
chuẩn 1NF.
 Mã HH là khóa dự bị, các thuộc tính không khóa phụ thuộc hàm đầy đủ
vào Mã HH nên lược đồ ở dạng chuẩn 2NF.
 Do Mã HH → Tên HH, Mã HH → Số lượng, Mã HH → Giá thành, Mã
HH → Loại, Mã HH là siêu khóa, nên lược đồ ở dạng chuẩn 3NF.



Dược phẩm (Mã HH, Tên, Loại, Công dụng)
12


F8 = {Mã HH → Loại, Mã HH → Tên, Mã HH → Loại, Mã HH → Công dụng}

Lược đồ quan hệ chỉ chứa các thuộc tính nguyên tố: lược đồ ở
dạng chuẩn 1NF.

Mã HH là khóa dự bị, các thuộc tính không khóa phụ thuộc hàm
đầy đủ vào Mã HH nên lược đồ ở dạng chuẩn 2NF.

Do Mã HH → Loại, Mã HH → Tên, Mã HH → Loại, Mã HH →
Công dụng, Mã HH là siêu khóa, nên lược đồ ở dạng chuẩn 3NF.


Thuốc lá (Mã HH, Loại)
F9 = {Mã HH → Loại}



13


V.

Câu hỏi truy vấn dữ liệu SQL.
Từ 11 lược đồ ở dạng chuẩn 3NF, ta xaya dựng thành 11 bảng dữ liệu:

** 11 bảng dữ liệu
1.

Bảng CHUCH: thông tin về chủ cửa hàng

Create table CHUCH(
TenChu nvarchar(30) not null primary key,
Diachi nvarchar(50),
SĐT char(15) );
2.

Bảng CUAHANG: thông tin về cửa hàng

Create table CUAHANG(
TenCH nvarchar(30) not null primary key,
Diachi nvarchar(50),
SĐT char(15) );
3.

Bảng NHANVIEN: thông tin về các nhân viên


6.

Bảng DUOCPHAM: thông tin dược phẩm

Create table DUOCPHAM(
MaHH char(8) not null primary key,
Ten nvarchar(10) ,
CongDung nvarchar(20),
Loai nvarchar(10) ,
Foreign key (MaHH) references HANGHOA (MaHH) );
7.

Bảng THUOCLA: thông tin về thuốc lá

Create table THUOCLA(
MaHH char(8) not null primary key,
Loai nvarchar(10),
Foreign key (MaHH) references HANGHOA(MaHH) );
8.

Bang KHACHHANG: thông tin về khách hàng

Create table KHACHHANG(
MaKH char(8) not null primary key,
Ten nvarchar(30) ,
DiaChi nvarchar (50),
GioiTinh nvarchar(4),
Tuoi int,
SĐT char(15) );
9.

MaCC char (8),
MaNV char(8),
MaHH char(8),
SoLuong int,
Foreign key (MaCC) references NHACC (MaCC),
Foreign key (MaHH) references HANGHOA (MaHH),
Foreign key (MaNV) references NHANVIEN (MaNV) );

** Thêm giá trị cho các bảng :
Bảng CHUCH:

Bảng CUAHANG:

Bảng HANGHOA:

16


Bảng NHANVIEN:

Bảng LAM:

Bảng THUOCLA:

17


Bảng DUOCPHAM:

Bảng BANHANG:

Câu 4: Tính giá tiền trung bình của thuốc lá:
Câu lệnh SQL:
Select AVG(Gia) as giaTB
From HANGHOA, THUOCLA
Where HANGHOA.MaHH=THUOCLA.MaHH

Câu 5: Tính tổng số khách hàng trong bảng KHACHHANG có đại chỉ là Bắc Ninh:
Câu lệnh SQL:
Select count(MaKH) as tongso
From KHACHHANG
Where DiaChi like N“Bắc Ninh”;

Câu 6: Đưa ra tên hàng hóa có giá thành lớn nhât:
Câu lệnh SQL:
Select Ten
20


From HANGHOA
Where Gia=(select max(Gia) from HANGHOA );

Kết quả:

Câu 7: Số lượng hàng bán của từng nhân viên :
Câu lệnh SQL:
Select NV.Ten, SUM(BH.SoLuong) As solanban
From NHANVIEN NV, BANHANG BH
Where NV.MaNV=BH.MaNV
Group by NV.Ten;


From HANGHOA
Where HANGHOA.MaHH Not in (select BANHANG.MaHH from BANHANG);

Kết quá:
Câu 12: Cho biết các mặt hàng có số lượng không phải lớn nhất:
Câu lệnh SQL:
Select *
From HANGHOA
Where SoLuong< some (select SoLuong from HANGHOA);

Kết quá:
Câu 13: Số lượng trung bình 1 lần đặt hàng của 1 mặt hàng:
Câu lệnh SQL:
Select MaHH, AVG(SoLuong)
From BANHANG
Group by MaHH;
23


Kết quá:
Câu 14: Mặt hàng có số lượng trung bình lớn nhất:
Câu lệnh SQL:
Select MaHH, AVG(SoLuong)
From BANHANG
Group by MaHH
Having AVG(SoLuong)>=All( Select Avg(SoLuong) from BANHANG group by
MaHH);

Kết quá:


Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status