Quản lý bán ô tô Cơ sở dữ liệu phân tán UTT. Báo cáo môn cơ sở dữ liệu phân tán tại trường đại học công nghệ giao thông vận tải UTT. Chúc các bạn gặt hái được nhiều điểm cao trong kỳ thi của mình. Thân ái
THIẾT KẾ CÁC HỆ CSDL PHÂN TÁN
Mô hình cơ sở dữ liệu
Tên trường Kiểu Độ rộng Giải thích
Manv Varchar 50 Khóa chính, Mã nhân viên
Ngaylamviec Date Ngày làm việc
Sdt Varchar 50 Số điện thoại
Tên trường Kiểu Độ rộng Giải thích
Luongcoban Money Lương cơ bản
Tên trường Kiểu Độ rộng Giải thích
Makh Varchar 50 Khóa chính, Mã khách hàng
Sdt Varchar 50 Số điện thoại
Tên trường Kiểu Độ rộng Giải thích
Maloaisp Varchar 50 Khóa chính, Mã loại sản phẩm
Max Tên loại sản phẩm
Tên trường Kiểu Độ rộng Giải thích
Masp Varchar 50 Khóa chính, Mã sản phẩm
Max Tiêu đề sản phẩm
Maloaisp Varchar 50 Mã loại sản phẩm
Mancc Varchar 50 Mã nhà cung cấp gia Money Mã giá
Soluong Int Số lượng sản phẩm
Tên trường Kiểu Độ rộng Giải thích
Mancc Varchar 50 Khóa chính, Mã nhà cung cấp
Sdt Varchar 50 Số điện thoại
Tên trường Kiểu Độ rộng Giải thích
Madh Varchar 50 Khóa chính, Mã đơn hàng
Manv Varchar 50 Mã nhân viên
Makh Varchar 50 Mã khách hàng
Diachi Nvarcha Max Địa chỉ r
Tên trường Kiểu Độ rộng Giải thích
50 Khóa chính, Mã đơn hàng
50 Khóa chính, Mã sản phẩm
Gia Money Gía sản phẩm
Soluong Int Số lượng sản phẩm
Giamgia Money Tiền giảm giá
Tạo CSDL Websitebanoto
CREATE DATABASE Website_ bán ô tô
Tạo bảng Nhân viên
( manv VARCHAR (50) PRIMARY KEY NOT NULL, tennv NVARCHAR (50), ngaysinh DATE, ngaylamviec DATE, dichi NVARCHAR (Max), sdt VARCHAR (50), chucvu NVARCHAR(50),
Tạo bảng Lương
( chucvu NVARCHAR(50) PRIMARY KEY NOT NULL, luongcoban MONEY, phucap MONEY
Tạo bảng Khách hàng
Makh VARCHAR (50) PRIMARY KEY NOT NULL, tenkh NVARCHAR (50), dichi NVARCHAR (Max), sdt VARCHAR (50), email VARCHAR (50)
Tạo bảng Loại sản phẩm
( maloaisp VARCHAR (50) PRIMARY KEY NOT NULL, tenloaisp NVARCHAR (Max),
Tạo bảng Nhà cung cấp
( mancc VARCHAR (50) PRIMARY KEY NOT NULL, dichi NVARCHAR (Max), sdt VARCHAR (50)
Tạo bảng Sản phẩm
( masp VARCHAR (50) PRIMARY KEY NOT NULL, tensp NVARCHAR (50), maloaisp VARCHAR (50) NOT NULL, mancc VARCHAR (50) NOT NULL, soluong INT, gia MONEY ,
Tạo bảng Đơn hàng
( madh VARCHAR (50) PRIMARY KEY NOT NULL, manv VARCHAR ( 50) NOT NULL, makh VARCHAR (50) NOT NULL, dichi NVARCHAR (Max), ngaydat DATE, ngaygiao DATE
Tạo bảng Chi tiết đơn hàng
( madh VARCHAR (50) NOT NULL, masp VARCHAR (50) NOT NULL, gia MONEY, soluong INT, giamgia MONEY,
CONSTRAINT pk_chitietdonhang PRIMARY KEY (madh,masp)
Tạo Liên Kết Giữa Các Bảng Dữ Liệu
To establish relationships between tables in a database, the following foreign key constraints are implemented: The 'sanpham' table adds a foreign key constraint, 'fk_nhacungcap', linking 'mancc' to 'nhacungcap(mancc)', and 'fk_loaisp', connecting 'maloaisp' to 'loaisp(maloaisp)' The 'donhang' table includes 'fk_donhang_khachhang', which associates 'makh' with 'khachhang(makh)', and 'fk_donhang_nhanvien', linking 'manv' to 'nhanvien(manv)' Additionally, the 'chitietdonhang' table enforces 'fk_chitiet_donhang', connecting 'madh' to 'donhang(madh)', and 'fk_chitiet_sanpham', which links 'masp' to 'sanpham(masp)'.
PHÂN MẢNH DỮ LIỆU
Phân mảnh ngang
- Phân mảnh ngang quan hệ Luong được phân mảnh 3 mảnh theo lương cơ bản:
- Phân mảnh ngang quan hệ NhaCungCap được phân mảnh 3 mảnh theo các chức vụ:
NCC1= σ diachi=Hà Nội ( NhaCungCap)
NCC2= σ diachi=Hà Nam (NhaCungCap)
NCC3= σ diachi=Nam Định (NhaCungCap)
- Phân mảnh ngang nguyên thủy trên quan hệ LoaiSP thành 4 mảnh ngang như sau:
- Phân mảnh ngang dẫn xuất trên quan hệ SanPham theo quan hệ LoaiSP thành 4 mảnh:
Phân mảnh dọc
- Quan hệ NhanVien được phân thành 3 mảnh dọc
NhanVien1(Manv, Tennv, Ngaysinh, Sdt)
NV1 = π MaNV ,TenNV , Ngaysinh ,SDT ( NhanVien )
NV2 = π MaNV , Ngaylamviec , Diachi ( NhanVien )
NV3 = π MaNV ,Chucvu , Luong ( NhanVien )
Phân mảnh hỗn hợp
- Quan hệ SanPham phân mảnh hỗn hợp thành 4 mảnh:
SP3 (MaSP, TenSP, Gia, SoLuong) với Gia 400000000
SP4 = σ Gia> 400000000 ( π MaSP, TenSP, SoLuong, Gia ( SanPham ))
Đồ thị phân mảnh và ảnh vật lý của quan hệ tổng thể
Sơ đồ định vị tại các trạm làm việc được chia thành 3 trạm:
SITE 1: NV1, NV2, NV3, Luong1, Luong2, NCC1, LoaiSP1, LoaiSP4, SP1, SP3, DH
SITE 2: NV3, Luong3, NCC2, NCC3, LoaiSP2, LoaiSP3, SP1, KH
SITE 3: NV3, Luong3, NCC3, LoaiSP2, LoaiSP4, SP2, SP4, KH, CTDH
TRUY VẤN PHÂN MẢNH VÀ TRUY VẤN TÁI THIẾT
Truy vấn phân mảnh
3.1.1 Truy vấn phân mảnh ngang
Truy vấn trên bảng lương
Phân mảnh luong1: select * into Luong1 from Luong where Luongcoban> 16000000
Phân mảnh luong2: select * into Luong1 from Luong where Luongcoban000000
Phân mảnh luong3: select * into Luong1 from Luong where Luongcoban< 16000000
Dễ thấy cách mảnh thỏa mãn được tính tái thiết, đầy đủ và tách biệt
Luong1 ⊆ Luong, Luong2 ⊆ Luong, Luong3 ⊆ Luong
Luong1 ∩ Luong2 = ∅ , Luong1 ∩ Luong3 = ∅ , Luong2 ∩ Luong3 = ∅
Truy vấn trên bảng NhaCungCap
Phân mảnh NCC1: select * into NCC1 from NhaCungCap where diachi = 'Hà Nội'
Phân mảnh NCC2: select * into NCC1 from NhaCungCap where diachi = 'Hà Nam'
Phân mảnh NCC3: select * into NCC1 from NhaCungCap where diachi = 'Nam Định'
Dễ thấy cách mảnh thỏa mãn được tính tái thiết, đầy đủ và tách biệt
NCC1 ⊆ NhaCungCap, NCC2 ⊆ NhaCungCap, NCC3 ⊆ NhaCungCap
NCC1 ∩ NCC2 = ∅ , NCC1 ∩ NCC3 = ∅ , NCC2 ∩ NCC3 = ∅
Truy vấn trên bảng LoaiSP
Phân mảnh LoaiSP1: select * into LoaiSP1 from LoaiSP where maLoaisp = 'RR'
Phân mảnh LoaiSP2: select * into LoaiSP1 from LoaiSP where maLoaisp = 'HD'
Phân mảnh LoaiSP3: select * into LoaiSP1 from LoaiSP where maLoaisp = 'TYT'
Phân mảnh LoaiSP4: select * into LoaiSP1 from LoaiSP where maLoaisp = 'MD'
Dễ thấy cách mảnh thỏa mãn được tính tái thiết, đầy đủ và tách biệt
LoaiSP1 ⊆ LoaiSP, LoaiSP2 ⊆ LoaiSP, LoaiSP3 ⊆ LoaiSP, LoaiSP4 ⊆ LoaiSP LoaiSP1 ∩ LoaiSP2 = ∅ , LoaiSP1 ∩ LoaiSP3= ∅ , LoaiSP1 ∩ LoaiSP4= ∅
LoaiSP2 ∩ LoaiSP3 = ∅ , LoaiSP2 ∩ LoaiSP4= ∅ , LoaiSP3 ∩ LoaiSP4= ∅
LoaiSP = LoaiSP1 ∪ LoaiSP2 ∪ LoaiSP3 ∪ LoaiSP4
3.1.2 Truy vấn phân mảnh dọc
Truy vấn trên bảng NhanVien
Phân mảnh NV1: select Manv, Tennv, Ngaysinh,Sdt into NV1 from NhanVien
Phân mảnh NV2: select MaNV, Ngaylamviec, Diachi into NV2 from NhanVien
Phân mảnh NV3: select MaNV, Chucvu,Luong into NV3 from NhanVien
Dễ thấy cách mảnh thỏa mãn được tính tái thiết, đầy đủ và tách biệt
NV1 ⊆ NhanVien, NV2 ⊆ NhanVien, NV3 ⊆ NhanVien
NV1 ∩ NV2 = ∅ , NV1 ∩ NV3 = ∅ , NV3 ∩ NV2 = ∅
3.1.3 Truy vấn phân mảnh hỗn hợp
Phân mảnh SP1: select MaSP, MaLoaiSP into SP1 from SanPham
Phân mảnh SP2: select MaSP, TenSP, MaNCC into SP2 from SanPham
Phân mảnh SP3: select MaSP, TenSP, Gia, SoLuong into SP3 from SanPham where Gia 400000000
Dễ thấy cách mảnh thỏa mãn được tính tái thiết, đầy đủ và tách biệt
SP1 ⊆ SanPham, SP2 ⊆ SanPham, SP3 ⊆ SanPham, SP4 ⊆ SanPham
SanPham = SP1 ⋈ SP2 ⋈ (SP3 ∪ SP4)
SP1 ∩ SP2 = ∅ , SP1 ∩ SP3 = ∅ , SP1 ∩ SP4 = ∅ , SP2 ∩ SP3 = ∅ ,
Tái thiết bảng NhanVien select * into NhanVien from NV1, NV2, NV3 where NV1.MaNV= NV2.MaNV and NV1.MaNV= NV3.MaNV
Tái thiết bảng NhaCungCap select * into NhaCungCap from NCC1, NCC2, NCC3
Tái thiết bảng Luong select * into Luong from Luong1, Luong2, Luong3
Tái thiết bảng LoaiSP select * into LoaiSP from LoaiSP1, LoaiSP2, LoaiSP3, LoaiSP4
Tái thiết bảng SanPham select * into SanPham from SP1, SP2, ( Select * From SP3 Union
Select * From SP4) as SP where SP1.MaSP= SP2.MaSP
AND (SP1.MaSP= SP.MaSP)
TỐI ƯU TRUY VẤN BẰNG THUẬT TOÁN INGRES
Cho biết tên loại sản phẩm Madaz và có giá tiền = 500000000
q: select tenloaisp from sanpham a, loaisp b where a.maloaisp=b.maloaisp
AND *b.maloaisp= 'MD') q1: select a.maloaisp into TG1 from sanpham a where gia= 500000000 q2: select tenloaisp from TG1, loaisp b where TG1.maloaisp=b.maloaisp q21: select tenloaisp from loaisp b where b.maloaisp = ‘MD’
Truy vấn q đã được rút gọn thành chuỗi truy vấn q1q2q21.
Cho biết tên sản phẩm được nhập từ nhà cung cấp tại Hà Nội
q: select a.tensp, a.masp from sanpham a, nhacungcap b where a.mancc=b.mancc
The SQL queries retrieve product names from a specific supplier located in Hanoi The first query selects the supplier ID from the 'nhacungcap' table where the address matches Hanoi The second query uses this supplier ID to fetch product names from the 'sanpham' table Additionally, a third query retrieves product names for a specific supplier identified as 'NCC1'.
Truy vấn p đã được rút gọn thành chuỗi truy vấn q1q2q21.
XÂY DỰNG CÂY ĐẠI SỐ QUAN HỆ VÀ RÚT GỌN CÂU TRUY VẤN20 1 Cho biết tên sản phẩm thuộc loại Rolls Roys và có giá > 400000000
Đưa ra tên sản phẩm của NCC ở Hà Nội và được bán trong năm 202023 3 Đưa ra tên sản phẩm thuộc loại Honda, đã được bán ra ngày '19/10/2020' tổng hóa đơn >200000000
From Sanpham a, Donhang b, Chitietdonhang c, nhacungcap d
Cây đại số quan hệ ban đầu
Cây đại số quan hệ rút gọn
Câu truy vấn sau khi rút gọn
From SP2, Donhang b, Chitietdonhang c, NCC1
AND (SP2.mancc=NCC1.mancc)
AND (NCC1.diachi = N'Hà Nội')
3 Đưa ra tên sản phẩm thuộc loại Honda, đã được bán ra ngày '19/10/2020' tổng hóa đơn >20000000
From Sanpham a, Chitietdonhang b, donhang c, loaisp d
Cây đại số ban đầu
Cây đại số rút gọn
Câu truy vấn sau khi rút gọn
From SP1, Chitietdonhang b, donhang c, LoaiSP2
AND (SP1.maloaisp= LoaiSP2.maloaisp)