Báo cáo bài tập lớn 1 thiết kế cơ sở dữ liệu phân tán

45 1 0
Báo cáo bài tập lớn 1 thiết kế cơ sở dữ liệu phân tán

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH ĐẠI HỌC CÔNG NGHỆ THÔNG TIN BÁO CÁO BÀI TẬP LỚN THIẾT KẾ CƠ SỞ DỮ LIỆU PHÂN TÁN Môn: Cơ sở liệu phân tán Lớp: IS211.N11.HTCL GVHD: Nguyễn Minh Nhựt Nhóm Sinh viên thực hiện: Lê Thị Ngọc Hảo 20521292 Nguyễn Thị Thu Thủy 20520797 Nguyễn Cẩm Tú 20520837 Nguyễn Hồng Ngọc Hạnh 20521287 TP Hồ Chí Minh, Tháng 12 năm 2022 MỤC LỤC MỤC LỤC Chương 1: Thiết kế sở liệu phân tán môi trường máy ảo, Radmin 1.1 Thiết kế mô tả CSDL phân tán 1.1.1 Mơ hình vật lý 1.1.2 Mơ hình liệu quan hệ 1.2 Xây dựng CSDL phân tán 1.2.1 DDL 1.2.2 DML 1.3 Kiến trúc phân mảnh: 17 1.4 Kiến trúc phân quyền 18 1.4.1 Mô tả cấu trúc phân quyền 18 1.4.2 Minh họa 19 1.5 Các câu truy vấn 21 1.5.1 Câu truy vấn 1: 21 1.5.2 Câu truy vấn 2: 21 1.5.3 Câu truy vấn 3: 22 1.5.4 Câu truy vấn 4: 22 1.5.5 Câu truy vấn 5: 23 1.5.6 Câu truy vấn 6: 23 1.5.7 Câu truy vấn 7: 24 1.5.8 Câu truy vấn 8: 24 1.5.9 Câu truy vấn 9: 25 1.5.10 Câu truy vấn 10: 25 Chương 2: Viết hm, th tc, rng buc ton vn truy vấn môi trường phân t án 27 2.1 Hàm – Function 27 2.1.1 Function đếm số lượng hóa đơn sản phẩm cần tìm chi nhánh 27 2.1.2 Function đếm số lượng khách hàng có cấp độ cần tìm chi nhánh 27 2.1.3 Function tìm xem khách hàng đăng ký chi nhánh 28 2.2 Th tc – Procedure 28 2.2.1 Procedure in thông tin trang sức với tình trạng cịn hàng kho chi nhánh cần tìm 28 2.2.2 Procedure in thông tin trang sức số lượng kho nhập tháng cần tìm 29 2.2.3 Procedure in thông tin chi tiết hóa đơn khách hàng cần tìm 30 2.3 Ràng buc toàn vn – Trigger 31 2.3.1 Trigger ngày nhập hàng phải lớn ngày sản xuất sản phẩm 31 2.3.2 Trigger cập nhật tổng tiền dựa cấp độ khách hàng 32 2.3.3 Trigger cập nhật điểm tích lũy dựa tổng tiền 33 IS211.N11.HTCL – Nhóm 2.3.4 Trigger cập nhật số lượng sản phẩm kho đặt hàng 34 Chương 3: Demo mc cô lp (ISOLATION LEVEL) môi trường phân tán 36 3.1 Trường hợp Lost Update 36 3.1.1 Mô tả tình 36 3.1.2 Minh họa 36 3.1.3 Giải pháp 36 3.3 Trường hợp Phantom Read 37 3.3.1 Mô tả tình 37 3.3.2 Minh họa 37 3.3.3 Giải pháp 37 3.2 Trường hợp Unrepeatable Read 37 3.2.1 Mô tả tình 37 3.2.2 Minh họa 38 3.2.3 Giải pháp 38 3.4 Trường hợp Deadlock 38 3.4.1 Mô tả tình 38 3.4.2 Minh họa 39 3.4.3 Giải pháp 39 Chương 4: Thực ti ưu ha truy vấn môi trường phân tán câu truy vấn đơn giản 40 4.1 Câu truy vấn đơn giản chưa ti ưu 40 4.2 EXPLAIN QUERY câu truy vấn đơn giản 40 4.3 Ti ưu ha câu truy vấn cc b, phân tán 41 4.4 Viết lại câu query môi trường phân tán 43 Chương 5: Cơ chế nhân Microsoft SQL Server Oracle (Option Bonus +2.00) Error! Bookmark not defined TÀI LIỆU THAM KHẢO 44 BẢNG PHÂN CÔNG CÔNG VIỆC 45 IS211.N11.HTCL – Nhóm Chương 1: Thiết kế sở liệu phân tán môi trường máy ảo, Radmin 1.1 Thiết kế mơ tả CSDL phân tán 1.1.1 Mơ hình vật lý 1.1.2 Mơ hình liệu quan hệ CSDL quản lý chi nhánh cửa hàng trang sức Cửa hàng trang sức có chi nhánh, chi nhánh nằm Quận 3, TP HCM chi nhánh Quận Hoàn Kiếm, Hà Nội Lược đồ sở liệu sau: CHINHANH (MACN, TENCN, DCHI, SODT) Tân từ: Mỗi chi nhánh có mã chi nhánh (MACN) dùng để phân biệt chi nhánh với nhau, tên chi nhánh (TENCN), địa (DCHI) số điện thoại (SODT) chi nhánh TRANGSUC (MASP, TENSP, NGAYSX, NHANHIEU, GIATIEN) Tân từ: Mỗi trang sức có mã trang sức (MASP) nhất, tên trang sức (TENSP), ngày sản xuất (NGAYSX), nhãn hiệu (NHANHIEU) giá tiền (GIATIEN) trang sức NHANVIEN (MANV, HOTEN, GIOITINH, NGSINH, DCHI, NGAYVL, CHUCVU, DTHOAI, LUONGCOBAN, MACN) Tân từ: Mỗi nhân viên có mã nhân viên (MANV) nhất, họ tên (HOTEN), giới tính (GIOITINH), ngày sinh (NGSINH), địa (DCHI), ngày vào làm (NGAYVL), chức vụ (CHUCVU), số điện thoại (DIENTHOAI), mức lương (LUONG) mã chi nhánh (MACN) nơi nhân viên làm việc KHO_QL (MACN, MASP, SOLUONG, NGAYNH) Tân từ: Mỗi quản lý kho có thơng tin mã chi nhánh (MACN), mã trang sức (MASP), số lượng (SOLUONG), ngày nhập hàng (NGAYNHAPHANG) trang sức IS211.N11.HTCL – Nhóm KHO_NV (MACN, MASP, TINHTRANG, KHUYENMAI) Tân từ: Mỗi nhân viên kho có thơng tin mã chi nhánh (MACN), mã trang sức (MASP), tình trạng trang sức (TINHTRANG) thơng tin khuyến (KHUYENMAI) trang sức KHACHHANG(MAKH, HOTEN, GIOITINH, DIEMTICHLUY, NGDK, CAPDO, MACN) DCHI, DTHOAI, NGSINH, Tân từ: Mỗi khách hàng có mã khách hàng nhất(MAKH), thơng tin họ tên(HOTEN), giới tính(GIOITINH), địa chỉ(DCHI), số điện thoại(DTHOAI), ngày sinh(NGSINH), điểm tích lũy quy đổi từ việc mua hàng(DIEMTICHLUY), cấp độ thành viên(CAPDO) mã chi nhánh đăng kí thành viên(MACN) HD(SOHD, NGHD, MAKH, MANV, TONGTIEN, PTTHANHTOAN) Tân từ: Mỗi hóa đơn có số hóa đơn để phân biệt(SOHD), ngày hóa đơn(NGHD), mã khách hàng mua(MAKH), mã nhân viên bán sản phẩm(MANV), tổng tiền hóa đơn(TONGTIEN) phương thức toán(PTTHANHTOAN) CTHD(SOHD, MASP, SL, GIAMGIA) Tân từ: Mỗi chi tiết hóa đơn có số hóa đơn(SOHD) mã sản phẩm(MASP) để phân biệt, số lượng sản phẩm(SL) số giảm giá(GIAMGIA) 1.2 Xây dựng CSDL phân tán 1.2.1 DDL Thực tạo bảng, tạo khóa chính, khóa ngoại tạo cho User CUAHANG1 CUAHANG2: ALTER SESSION SET NLS DATE FORMAT = 'DD/MM/YYYY HH24:MI:SS'; CREATE TABLE CUAHANG1.CHINHANH CREATE TABLE CUAHANG2.CHINHANH ( ( MACN VARCHAR2(10) NOT NULL, MACN VARCHAR2(10) NOT NULL, TENCN VARCHAR2(50), TENCN VARCHAR2(50), DIACHI VARCHAR2(50), DIACHI VARCHAR2(50), SODT VARCHAR2(10), SODT VARCHAR2(10), CONSTRAINT PK_CN PRIMARY KEY (MACN) CONSTRAINT PK_CN PRIMARY KEY (MACN) ); ); CREATE TABLE CUAHANG1.TRANGSUC ( MASP VARCHAR2(10) NOT NULL, TENSP VARCHAR2(100), NGAYSX DATE, NHANHIEU VARCHAR2(50), GIATIEN NUMBER, CONSTRAINT PK_TS PRIMARY KEY (MASP) ); CREATE TABLE CUAHANG2.TRANGSUC ( MASP VARCHAR2(10) NOT NULL, TENSP VARCHAR2(100), NGAYSX DATE, NHANHIEU VARCHAR2(50), GIATIEN NUMBER, CONSTRAINT PK_TS PRIMARY KEY (MASP) ); CREATE TABLE CUAHANG1.NHANVIEN ( MANV VARCHAR2(10) NOT NULL, HOTEN VARCHAR2(30), GIOITINH VARCHAR2(4), NGSINH DATE, DCHI VARCHAR2(50), CREATE TABLE CUAHANG2.NHANVIEN ( MANV VARCHAR2(10) NOT NULL, HOTEN VARCHAR2(30), GIOITINH VARCHAR2(4), NGSINH DATE, DCHI VARCHAR2(50), IS211.N11.HTCL – Nhóm NGAYVL DATE, CHUCVU VARCHAR2(20), DTHOAI VARCHAR2(15), LUONGCOBAN NUMBER, MACN VARCHAR2(10), CONSTRAINT PK_NV PRIMARY KEY (MANV) NGAYVL DATE, CHUCVU VARCHAR2(20), DTHOAI VARCHAR2(15), LUONGCOBAN NUMBER, MACN VARCHAR2(10), CONSTRAINT PK_NV PRIMARY KEY (MANV) ); ); CREATE TABLE CUAHANG1.KHO_NV ( MACN VARCHAR2(10), MASP VARCHAR2(10), TINHTRANG VARCHAR2(10), KHUYENMAI NUMBER, CONSTRAINT PK_KHO_NV PRIMARY (MACN, MASP) ); CREATE TABLE CUAHANG2.KHO_NV ( MACN VARCHAR2(10), MASP VARCHAR2(10), TINHTRANG VARCHAR2(10), KHUYENMAI NUMBER, CONSTRAINT PK_KHO_NV PRIMARY (MACN, MASP) ); CREATE TABLE CUAHANG1.KHO_QL ( MACN VARCHAR2(10), MASP VARCHAR2(10), SOLUONG NUMBER, NGAYNH DATE, CONSTRAINT PK_KHO_QL PRIMARY (MACN, MASP) ); KEY KEY CREATE TABLE CUAHANG1.KHACHHANG ( MAKH VARCHAR2(10) NOT NULL, HOTEN VARCHAR2(100), GIOITINH VARCHAR2(4), DCHI VARCHAR2(100), DTHOAI INT, NGSINH DATE, DIEMTICHLUY NUMBER DEFAULT 0, NGDK DATE, CAPDO VARCHAR2(7), MACN VARCHAR2(10), CONSTRAINT PK_KH PRIMARY KEY (MAKH) ); CREATE TABLE CUAHANG1.HD ( SOHD NUMBER NOT NULL, NGHD DATE, MAKH VARCHAR2(10), MANV VARCHAR2(10) NOT NULL, MACN VARCHAR2(10), TONGTIEN NUMBER DEFAULT 0, PTTHANHTOAN VARCHAR2(50), CONSTRAINT PK_HD PRIMARY KEY (SOHD) ); CREATE TABLE CUAHANG1.CTHD ( SOHD NUMBER NOT NULL, MASP VARCHAR2(10), SL NUMBER, GIAMGIA FLOAT, CONSTRAINT PK_CTHD_TS PRIMARY KEY (SOHD, MASP) ); KEY CREATE TABLE CUAHANG2.KHO_QL ( MACN VARCHAR2(10), MASP VARCHAR2(10), SOLUONG NUMBER, NGAYNH DATE, CONSTRAINT PK_KHO_QL PRIMARY (MACN, MASP) ); KEY CREATE TABLE CUAHANG2.KHACHHANG ( MAKH VARCHAR2(10) NOT NULL, HOTEN VARCHAR2(100), GIOITINH VARCHAR2(4), DCHI VARCHAR2(100), DTHOAI INT, NGSINH DATE, DIEMTICHLUY NUMBER DEFAULT 0, NGDK DATE, CAPDO VARCHAR2(7), MACN VARCHAR2(10), CONSTRAINT PK_KH PRIMARY KEY (MAKH) ); CREATE TABLE CUAHANG2.HD ( SOHD NUMBER NOT NULL, NGHD DATE, MAKH VARCHAR2(10), MANV VARCHAR2(10) NOT NULL, MACN VARCHAR2(10), TONGTIEN NUMBER DEFAULT 0, PTTHANHTOAN VARCHAR2(50), CONSTRAINT PK_HD PRIMARY KEY (SOHD) ); CREATE TABLE CUAHANG2.CTHD ( SOHD NUMBER NOT NULL, MASP VARCHAR2(10), SL NUMBER, GIAMGIA FLOAT, CONSTRAINT PK_CTHD_TS PRIMARY KEY (SOHD, MASP) ); IS211.N11.HTCL – Nhóm RANG BUOC KHOA NGOAI ALTER TABLE CUAHANG1.NHANVIEN CONSTRAINT FK_NV_CN_1 FOREIGN (MACN) REFERENCES CHINHANH(MACN); ALTER TABLE CUAHANG1.KHO_QL CONSTRAINT FK_KHOQL_CN_2 FOREIGN (MACN) REFERENCES CHINHANH(MACN); ALTER TABLE CUAHANG1.KHO_QL CONSTRAINT FK_KHOQL_TS_3 FOREIGN (MASP) REFERENCES TRANGSUC(MASP); ALTER TABLE CUAHANG1.KHO_NV CONSTRAINT FK_KHONV_CN_4 FOREIGN (MACN) REFERENCES CHINHANH(MACN); ALTER TABLE CUAHANG1.KHO_NV CONSTRAINT FK_KHONV_TS_5 FOREIGN (MASP) REFERENCES TRANGSUC(MASP); ALTER TABLE CUAHANG1.KHACHHANG CONSTRAINT FK_KH_CN_6 FOREIGN (MACN) REFERENCES CHINHANH(MACN); ALTER TABLE CUAHANG1.HD CONSTRAINT FK_HD_KH_7 FOREIGN (MAKH) REFERENCES KHACHHANG(MAKH); ALTER TABLE CUAHANG1.HD CONSTRAINT FK_HD_NV_8 FOREIGN (MANV) REFERENCES NHANVIEN(MANV); ALTER TABLE CUAHANG1.HD CONSTRAINT FK_HD_CN_9 FOREIGN (MACN) REFERENCES CHINHANH(MACN); ALTER TABLE CUAHANG1.CTHD CONSTRAINT FK_CTHD_TS_10 FOREIGN (MASP) REFERENCES TRANGSUC(MASP); ADD KEY ADD KEY ADD KEY ADD KEY ADD KEY ADD KEY ADD KEY ADD KEY ADD KEY ADD KEY RANG BUOC KHOA NGOAI ALTER TABLE CUAHANG2.NHANVIEN CONSTRAINT FK_NV_CN_1 FOREIGN (MACN) REFERENCES CHINHANH(MACN); ALTER TABLE CUAHANG2.KHO_QL CONSTRAINT FK_KHOQL_CN_2 FOREIGN (MACN) REFERENCES CHINHANH(MACN); ALTER TABLE CUAHANG2.KHO_QL CONSTRAINT FK_KHOQL_TS_3 FOREIGN (MASP) REFERENCES TRANGSUC(MASP); ALTER TABLE CUAHANG2.KHO_NV CONSTRAINT FK_KHONV_CN_4 FOREIGN (MACN) REFERENCES CHINHANH(MACN); ALTER TABLE CUAHANG2.KHO_NV CONSTRAINT FK_KHONV_TS_5 FOREIGN (MASP) REFERENCES TRANGSUC(MASP); ALTER TABLE CUAHANG2.KHACHHANG CONSTRAINT FK_KH_CN_6 FOREIGN (MACN) REFERENCES CHINHANH(MACN); ALTER TABLE CUAHANG2.HD CONSTRAINT FK_HD_KH_7 FOREIGN (MAKH) REFERENCES KHACHHANG(MAKH); ALTER TABLE CUAHANG2.HD CONSTRAINT FK_HD_NV_8 FOREIGN (MANV) REFERENCES NHANVIEN(MANV); ALTER TABLE CUAHANG2.HD CONSTRAINT FK_HD_CN_9 FOREIGN (MACN) REFERENCES CHINHANH(MACN); ALTER TABLE CUAHANG2.CTHD CONSTRAINT FK_CTHD_TS_10 FOREIGN (MASP) REFERENCES TRANGSUC(MASP); CÁC RÀNG BUỘC - Giá tiền trang sức phải lớn 500000 ALTER TABLE CUAHANG1.TRANGSUC 500000); - Giới tính nhân viên ‘Nam’ ‘Nu’ ALTER TABLE CUAHANG1.NHANVIEN IN('Nam', 'Nu')); - ADD CONSTRAINT CHECK_NV_2 CHECK(GIOITINH Ngày vào làm nhân viên phải lớn ngày sinh nhân viên ALTER TABLE CUAHANG1.NHANVIEN NGSINH); - ADD CONSTRAINT CHECK_TS_1 CHECK(GIATIEN > ADD CONSTRAINT CHECK_NV_3 CHECK(NGAYVL > Chức vụ nhân viên ‘Nhan vien’, ‘Thu ngan’, ‘Quan ly’ ALTER TABLE CUAHANG1.NHANVIEN ADD CONSTRAINT CHECK_NV_4 CHECK(CHUCVU IN('Nhan vien', 'Thu ngan', 'Quan ly')); - Số lượng sản phẩm mà bảng quản lý kho quản lý phải lớn ALTER TABLE CUAHANG1.KHO_QL - ADD CONSTRAINT CHECK_QL_5 CHECK(SOLUONG >= 0); Tình trạng trang sức nhân viên kho quản lý ‘Het Hang’ ‘Con Hang’ IS211.N11.HTCL – Nhóm ADD KEY ADD KEY ADD KEY ADD KEY ADD KEY ADD KEY ADD KEY ADD KEY ADD KEY ADD KEY ALTER TABLE CUAHANG1.KHO_NV IN('Con Hang', 'Het Hang')); - ADD CONSTRAINT CHECK_KNV_6 Giới tính khách hàng ‘Nam’ ‘Nu’ ALTER TABLE CUAHANG1.KHACHHANG ('Nam', 'Nu')); - ADD CONSTRAINT CHECK_KH_7 CHECK(GIOITINH IN Ngày đăng kí khách hàng phải lớn ngày sinh khách hàng ALTER TABLE CUAHANG1.KHACHHANG - ADD CONSTRAINT CHECK_KH_8 CHECK(NGDK > NGSINH); Cấp độ thẻ khách hàng ‘VVIP’, ‘VIP’, Thuong’ ALTER TABLE CUAHANG1.KHACHHANG IN('VVIP', 'VIP', 'Thuong')); - ADD CONSTRAINT CHECK_KH_9 CHECK(CAPDO Phương thức tốn hóa đơn ‘Tien mat’ hay ‘Ngan hang’ ALTER TABLE CUAHANG1.HD IN ('Ngan hang', 'Tien mat')); - CHECK(TINHTRANG ADD CONSTRAINT CHECK_HD_10 CHECK(PTTHANHTOAN Số lượng sản phẩm chi tiết hóa đơn phải từ trở lên ALTER TABLE CUAHANG1.CTHD ADD CONSTRAINT CHECK_CTHD_11 CHECK(SL >= 1); 1.2.2 DML Thực thêm liệu cho User CUAHANG1 CUAHANG2  Chi nhánh 1: o CHINHANH TABLE INSERT INTO CUAHANG1.CHINHANH TPHCM','0939013913'); VALUES('CN01', 'Pandora', 'Quan 3, o TRANGSUC TABLE INSERT INTO CUAHANG1.TRANGSUC (MASP, TENSP, NGAYSX, NHANHIEU, GIATIEN) VALUES ('SP01', 'Lac tay da quy hinh trai tim', '13/05/2019','PNJ', 25000000); INSERT INTO CUAHANG1.TRANGSUC (MASP, TENSP, NGAYSX, NHANHIEU, GIATIEN) VALUES ('SP02', 'Nhan dinh kim cuong carat', '14/05/2019','Doji', 45000000); INSERT INTO CUAHANG1.TRANGSUC (MASP, TENSP, NGAYSX, NHANHIEU, GIATIEN) VALUES ('SP03', 'Day chuyen dinh 10 vien kim cuong nhan tao', '10/06/2019','Doji', 120000000); INSERT INTO CUAHANG1.TRANGSUC (MASP, TENSP, NGAYSX, NHANHIEU, GIATIEN) VALUES ('SP04', 'Lac tay ruby do', '28/06/2019','PNJ', 30000000); INSERT INTO CUAHANG1.TRANGSUC (MASP, TENSP, NGAYSX, NHANHIEU, GIATIEN) VALUES ('SP05', 'Day chuyen ngoc trai den', '29/06/2019','Tiffany and Co', 19500000); INSERT INTO CUAHANG1.TRANGSUC (MASP, TENSP, NGAYSX, NHANHIEU, GIATIEN) VALUES ('SP06', 'Khuyen tai ngoc bich', '27/07/2019','Tiffany and Co', 120000000); INSERT INTO CUAHANG1.TRANGSUC (MASP, TENSP, NGAYSX, NHANHIEU, GIATIEN) VALUES ('SP07', 'Khuyen tai Swarovski', '27/07/2019','Swarovski', 120000000); INSERT INTO CUAHANG1.TRANGSUC (MASP, TENSP, NGAYSX, NHANHIEU, GIATIEN) VALUES ('SP08', 'Day chuyen vang trang', '25/08/2019','PNJ', 25000000); INSERT INTO CUAHANG1.TRANGSUC (MASP, TENSP, NGAYSX, NHANHIEU, GIATIEN) VALUES ('SP09', 'Lac tay ngoc trai tim', '25/08/2019','Doji', 25000000); IS211.N11.HTCL – Nhóm INSERT INTO CUAHANG1.TRANGSUC (MASP, TENSP, NGAYSX, NHANHIEU, GIATIEN) VALUES ('SP10', 'Nhan ngoc trai den', '26/08/2019','Tiffany and Co', 12000 000); INSERT INTO CUAHANG1.TRANGSUC (MASP, TENSP, NGAYSX, NHANHIEU, GIATIEN) VALUES ('SP11', 'Cai ao dinh Swarovski', '01/09/2019','Swarovski', 20000000); INSERT INTO CUAHANG1.TRANGSUC (MASP, TENSP, NGAYSX, NHANHIEU, GIATIEN) VALUES ('SP12', 'Nhan vang trang', '02/09/2019','Doji', 120000000); INSERT INTO CUAHANG1.TRANGSUC (MASP, TENSP, NGAYSX, NHANHIEU, GIATIEN) VALUES ('SP13', 'Day chuyen vang beige 18K', '03/09/2019','Tiffany and Co', 25000000); INSERT INTO CUAHANG1.TRANGSUC (MASP, TENSP, NGAYSX, NHANHIEU, GIATIEN) VALUES ('SP14', 'Khuyen tai vang trang', '04/09/2019','Tiffany and Co', 23000000); INSERT INTO CUAHANG1.TRANGSUC (MASP, TENSP, NGAYSX, NHANHIEU, GIATIEN) VALUES ('SP15', 'Nhan Swarovski', '28/09/2019','Swarovski', 50000000); INSERT INTO CUAHANG1.TRANGSUC (MASP, TENSP, NGAYSX, NHANHIEU, GIATIEN) VALUES ('SP16', 'Day chuyen pha le', '11/10/2019','Doji', 25000000); INSERT INTO CUAHANG1.TRANGSUC (MASP, TENSP, NGAYSX, NHANHIEU, GIATIEN) VALUES ('SP17', 'Bo trang suc vang trang', '25/10/2019','PNJ', 120000000); INSERT INTO CUAHANG1.TRANGSUC (MASP, TENSP, NGAYSX, NHANHIEU, GIATIEN) VALUES ('SP18', 'Day chuyen vang 9999', '29/10/2019','Doji', 25000000); INSERT INTO CUAHANG1.TRANGSUC (MASP, TENSP, NGAYSX, NHANHIEU, GIATIEN) VALUES ('SP19', 'Day chuyen dinh da cz', '29/10/2019','PNJ', 25000000); INSERT INTO CUAHANG1.TRANGSUC (MASP, TENSP, NGAYSX, NHANHIEU, GIATIEN) VALUES ('SP20', 'Bo trang suc vang trang dinh kim cuong nhan tao', '20/11/2019','Tiffany and Co', 70000000); INSERT INTO CUAHANG1.TRANGSUC (MASP, TENSP, NGAYSX, NHANHIEU, GIATIEN) VALUES ('SP21', 'Bo trang suc vang beige dinh kim cuong nhan tao', '15/12/2019','Tiffany and Co', 80000000); o NHANVIEN TABLE INSERT INTO CUAHANG1.NHANVIEN (MANV, HOTEN, GIOITINH, NGSINH, DCHI, NGAYVL, CHUCVU, DTHOAI, LUONGCOBAN, MACN) VALUES ('NV01', 'Ho Trong Khang', 'Nam','09/10/1999','Binh Dinh','20/10/2019', 'Quan ly', '0858595208', 12000000, 'CN01'); INSERT INTO CUAHANG1.NHANVIEN (MANV, HOTEN, GIOITINH, NGSINH, DCHI, NGAYVL, CHUCVU, DTHOAI, LUONGCOBAN, MACN) VALUES ('NV18', 'Nguyen Thi Thuy Nga', 'Nu','12/03/2001','Dak Lak','29/07/2021', 'Quan ly', '0943058578', 9000000, 'CN01'); INSERT INTO CUAHANG1.NHANVIEN (MANV, HOTEN, GIOITINH, NGSINH, DCHI, NGAYVL, CHUCVU, DTHOAI, LUONGCOBAN, MACN) VALUES ('NV13', 'Le Kim Thuy', 'Nu','04/10/1997','Ca Mau','29/12/2020', 'Nhan vien', '0982348989', 8000000, 'CN01'); INSERT INTO CUAHANG1.NHANVIEN (MANV, HOTEN, GIOITINH, NGSINH, DCHI, NGAYVL, CHUCVU, DTHOAI, LUONGCOBAN, MACN) VALUES ('NV06', 'Tran Kim Dung', 'Nu','19/02/2001','Ha Noi','25/09/2020', 'Nhan vien', '0928471948', 7000000, 'CN01'); INSERT INTO CUAHANG1.NHANVIEN (MANV, HOTEN, GIOITINH, NGSINH, DCHI, NGAYVL, CHUCVU, DTHOAI, LUONGCOBAN, MACN) VALUES ('NV12', 'Tran Van Son', IS211.N11.HTCL – Nhóm 'Nam','14/10/2001','Can Tho','27/12/2020', 'Nhan vien', '0923617364', 6000000, 'CN01'); INSERT INTO CUAHANG1.NHANVIEN (MANV, HOTEN, GIOITINH, NGSINH, DCHI, NGAYVL, CHUCVU, DTHOAI, LUONGCOBAN, MACN) VALUES ('NV09', 'Nguyen Ngoc Nhi', 'Nu','09/09/2001','Ca Mau','30/11/2020', 'Nhan vien', '0369872699', 6000000, 'CN01'); INSERT INTO CUAHANG1.NHANVIEN (MANV, HOTEN, GIOITINH, NGSINH, DCHI, NGAYVL, CHUCVU, DTHOAI, LUONGCOBAN, MACN) VALUES ('NV15', 'To Huu Tri', 'Nam','10/12/2002','Ca Mau','19/02/2021', 'Thu ngan', '0389824566', 6000000, 'CN01'); INSERT INTO CUAHANG1.NHANVIEN (MANV, HOTEN, GIOITINH, NGSINH, DCHI, NGAYVL, CHUCVU, DTHOAI, LUONGCOBAN, MACN) VALUES ('NV08', 'Le My Nhan', 'Nu','22/12/2000','Ca Mau','20/11/2020', 'Nhan vien', '0935563686', 5200000, 'CN01'); INSERT INTO CUAHANG1.NHANVIEN (MANV, HOTEN, GIOITINH, NGSINH, DCHI, NGAYVL, CHUCVU, DTHOAI, LUONGCOBAN, MACN) VALUES ('NV02', 'Trinh Tri Bang', 'Nam','01/07/2001','Can Tho','20/10/2019', 'Thu ngan', '0938746388', 5000000, 'CN01'); INSERT INTO CUAHANG1.NHANVIEN (MANV, HOTEN, GIOITINH, NGSINH, DCHI, NGAYVL, CHUCVU, DTHOAI, LUONGCOBAN, MACN) VALUES ('NV16', 'Tran Thi Hoa', 'Nu','01/09/2000','Hai Phong','19/02/2021', 'Nhan vien', '0234632672', 4000000, 'CN01'); o KHO_QL TABLE INSERT INTO CUAHANG1.KHO_QL (MACN, MASP, SOLUONG, NGAYNH) VALUES ('CN01', 'SP01', 10,'29/10/2022'); INSERT INTO CUAHANG1.KHO_QL (MACN, MASP, SOLUONG, NGAYNH) VALUES ('CN01', 'SP02', 90,'29/10/2022'); INSERT INTO CUAHANG1.KHO_QL (MACN, MASP, SOLUONG, NGAYNH) VALUES ('CN01', 'SP03', 80,'29/10/2022'); INSERT INTO CUAHANG1.KHO_QL (MACN, MASP, SOLUONG, NGAYNH) VALUES ('CN01', 'SP04', 500,'29/10/2022'); INSERT INTO CUAHANG1.KHO_QL (MACN, MASP, SOLUONG, NGAYNH) VALUES ('CN01', 'SP11', 510,'30/10/2022'); INSERT INTO CUAHANG1.KHO_QL (MACN, MASP, SOLUONG, NGAYNH) VALUES ('CN01', 'SP12', 200,'30/10/2022'); INSERT INTO CUAHANG1.KHO_QL (MACN, MASP, SOLUONG, NGAYNH) VALUES ('CN01', 'SP13', 100,'30/10/2022'); INSERT INTO CUAHANG1.KHO_QL (MACN, MASP, SOLUONG, NGAYNH) VALUES ('CN01', 'SP14', 120,'30/10/2022'); INSERT INTO CUAHANG1.KHO_QL (MACN, MASP, SOLUONG, NGAYNH) VALUES ('CN01', 'SP15', 110,'30/10/2022'); o KHO_NV TABLE INSERT INTO CUAHANG1.KHO_NV (MACN, MASP, TINHTRANG, KHUYENMAI) VALUES ('CN01', 'SP01', 'Het Hang',0); INSERT INTO CUAHANG1.KHO_NV (MACN, MASP, TINHTRANG, KHUYENMAI) VALUES ('CN01', 'SP03', 'Con Hang',10); 10 IS211.N11.HTCL – Nhóm FROM CUAHANG2.CTHD CT JOIN CUAHANG2.HD ON CT.SOHD = HD.SOHD WHERE HD.MAKH = V_MAKH UNION SELECT TONGTIEN FROM CUAHANG1.CTHD@CH1 CT JOIN CUAHANG1.HD@CH1 ON CT.SOHD = HD.SOHD WHERE HD.MAKH = V_MAKH ) LOOP DBMS_OUTPUT.PUT_LINE(' -'); DBMS_OUTPUT.PUT_LINE('TONG TIEN: '||DS_TT.TONGTIEN); END LOOP; EXCEPTION WHEN NO_DATA_FOUND THEN RAISE_APPLICATION_ERROR(-20008, 'Khong tim thay thong tin tu du lieu dau vao'); END; / DECLARE BEGIN DS_CTHD('KH22'); END; 2.3 Ràng buc toàn vn – Trigger 2.3.1 Trigger ngày nhập hàng phải lớn ngày sản xuất sản phẩm Phát biểu ràng buộc: Ngày nhập hàng sản phẩm phải lớn ngày sản xuất sản phẩm Bối cảnh: TRANGSUC, KHO_QL Nội dung: ∀ a ∈ KHO_QL, ∃ c ∈ TRANGSUC: c.MASP = a.MASP ∧ c.NGAYSX < a.NGAYNH Bảng tầm ảnh hưởng: TRANGSUC KHO_QL Thêm + Xóa - Sửa +(NGAYSX) +(NGAYNH,MASP) TRIGGER TREN TRANGSUC CREATE OR REPLACE TRIGGER TRIG_NGAYSX AFTER UPDATE OF NGAYSX ON TRANGSUC FOR EACH ROW DECLARE V_NGAYNH KHO_QL.NGAYNH%TYPE; V_MASP KHO_QL.MASP%TYPE; CURSOR C_KHO IS SELECT MASP FROM KHO_QL WHERE MASP = :NEW.MASP; BEGIN OPEN C_KHO; LOOP FETCH C_KHO INTO V_MASP; EXIT WHEN C_KHO%NOTFOUND; SELECT NGAYNH INTO V_NGAYNH 31 IS211.N11.HTCL – Nhóm FROM WHERE KHO_QL MASP = V_MASP; IF(:NEW.NGAYSX > V_NGAYNH) THEN RAISE_APPLICATION_ERROR(-20000, 'NgaySX phai be hon NGAYNH'); END IF; END LOOP; CLOSE C_KHO; DBMS_OUTPUT.PUT_LINE('Update cong'); END; TRIGGER TREN KHO_QL CREATE OR REPLACE TRIGGER TRIG_NGAYNH AFTER INSERT OR UPDATE OF NGAYNH ON KHO_QL FOR EACH ROW DECLARE V_NGAYSX TRANGSUC.NGAYSX%TYPE; BEGIN SELECT NGAYSX INTO V_NGAYSX FROM TRANGSUC WHERE MASP = :NEW.MASP; IF(V_NGAYSX > :NEW.NGAYNH) THEN RAISE_APPLICATION_ERROR(-20000, 'NgaySX phai be hon NGAYNH'); END IF; END; 2.3.2 Trigger cập nhật tổng tiền dựa cấp độ khách hàng Phát biểu ràng buộc: Cập nhật tổng tiền hóa đơn dựa cấp độ khách hàng Bối cảnh: KHACHHANG, HD Nội dung: ∀ a ∈ HD, ∃ c ∈ KHACHHANG: c.MAKH = a.MAKH ∧ c.CAPDO = ‘Thuong’∧ TONGTIEN = TONGTIEN – TONGTIEN*0.1 ∃ c ∈ KHACHHANG: c.MAKH = a.MAKH ∧ c.CAPDO = ‘VIP’ ∧ TONGTIEN = TONGTIEN – TONGTIEN*0.2 ∃ c ∈ KHACHHANG: c.MAKH = a.MAKH ∧ c.CAPDO = ‘VVIP’ ∧ TONGTIEN = TONGTIEN – TONGTIEN*0.3 Bảng tầm ảnh hưởng: KHACHHANG HD Thêm + Xóa - Sửa +(CAPDO) +(TONGTIEN,MAKH) TRIGGER TREN KHACHHANG CREATE OR REPLACE TRIGGER UPDATE_CAPDO 32 IS211.N11.HTCL – Nhóm AFTER UPDATE OF CAPDO ON KHACHHANG FOR EACH ROW DECLARE V_TONGTIEN HD.TONGTIEN%TYPE; V_SOHD HD.SOHD%TYPE; CURSOR HD_ IS SELECT SOHD FROM HD WHERE MAKH = :NEW.MAKH; BEGIN OPEN HD_; LOOP FETCH HD_ INTO V_SOHD; EXIT WHEN HD_%NOTFOUND; SELECT FROM WHERE TONGTIEN INTO V_TONGTIEN HD SOHD = V_SOHD; IF (:NEW.CAPDO = 'Thuong') THEN V_TONGTIEN := V_TONGTIEN - V_TONGTIEN*0.1; ELSIF (:NEW.CAPDO = 'VIP') THEN V_TONGTIEN := V_TONGTIEN - V_TONGTIEN*0.2; ELSE V_TONGTIEN := V_TONGTIEN - V_TONGTIEN*0.3; END IF; END LOOP; CLOSE HD_; END; TRIGGER TREN HD CREATE OR REPLACE TRIGGER UPDATE_TT BEFORE INSERT OR UPDATE OF TONGTIEN ON HD FOR EACH ROW DECLARE V_CAPDO KHACHHANG.CAPDO%TYPE; BEGIN SELECT CAPDO INTO V_CAPDO FROM KHACHHANG WHERE MAKH = :NEW.MAKH; IF (V_CAPDO = 'Thuong') THEN :NEW.TONGTIEN := :NEW.TONGTIEN - :NEW.TONGTIEN*0.1; ELSIF (V_CAPDO = 'VIP') THEN :NEW.TONGTIEN := :NEW.TONGTIEN - :NEW.TONGTIEN*0.2; ELSE :NEW.TONGTIEN := :NEW.TONGTIEN - :NEW.TONGTIEN*0.3; END IF; END; 2.3.3 Trigger cập nhật điểm tích lũy dựa tổng tiền  Phát biểu ràng buc: Cập nhật điểm tích lũy dựa tổng tiền hóa đơn Bối cảnh: KHACHHANG, HD Nội dung: ∀ a ∈ HD, ∃ c ∈ KHACHHANG: c.MAKH = a.MAKH ∧ c.DIEMTICHLUY = c.DIEMTICHLUY + a.TONGTIEN / 1000000 33 IS211.N11.HTCL – Nhóm  Bảng tầm ảnh hưởng: KHACHHANG HD Thêm + Xóa - Sửa +(DIEMTICHLUY) +(TONGTIEN,MAKH) TRIGGER TREN KHACHHANG CREATE OR REPLACE TRIGGER UPDATE_DIEM BEFORE UPDATE OF DIEMTICHLUY ON KHACHHANG FOR EACH ROW DECLARE V_TONGTIEN HD.TONGTIEN%TYPE; V_SOHD HD.SOHD%TYPE; CURSOR HD_ IS SELECT SOHD FROM HD WHERE MAKH = :NEW.MAKH; BEGIN OPEN HD_; LOOP FETCH HD_ INTO V_SOHD; EXIT WHEN HD_%NOTFOUND; SELECT FROM WHERE TONGTIEN INTO V_TONGTIEN HD SOHD = V_SOHD; :NEW.DIEMTICHLUY := :NEW.DIEMTICHLUY + V_TONGTIEN / 1000000; END LOOP; CLOSE HD_; DBMS_OUTPUT.PUT_LINE('CAP NHAT DIEM TICH LUY THANH CONG'); END; TRIGGER TREN HD CREATE OR REPLACE TRIGGER TRIG_TT AFTER INSERT OR UPDATE OF TONGTIEN ON HD FOR EACH ROW DECLARE V_DIEMTICHLUY KHACHHANG.DIEMTICHLUY%TYPE; BEGIN SELECT DIEMTICHLUY INTO V_DIEMTICHLUY FROM KHACHHANG WHERE MAKH = :NEW.MAKH; V_DIEMTICHLUY := V_DIEMTICHLUY + :NEW.TONGTIEN / 1000000; IF(V_DIEMTICHLUY < 0) THEN RAISE_APPLICATION_ERROR(-20000, 'LOI'); END IF; END; 2.3.4 Trigger cập nhật số lượng sản phẩm kho đặt hàng  Phát biểu ràng buc: Cập nhật số lượng sản phẩm kho lên hóa đơn Bối cảnh: KHO_QL, CTHD Nội dung: ∀ a ∈ CTHD, 34 IS211.N11.HTCL – Nhóm ∃ c ∈ KHO_QL: c.MASP = a.MASP ∧ c.SOLUONG = c.SOLUONG – SUM(SL)  Bảng tầm ảnh hưởng: CTHD KHO_QL Thêm + Xóa - Sửa +SUM(SL) +(SOLUONG,MASP) TRIGGER TREN KHO_QL -CREATE OR REPLACE TRIGGER TRIG_SL_KHO BEFORE UPDATE OF SOLUONG ON KHO_QL FOR EACH ROW DECLARE SUM_SL NUMBER; V_SOHD CTHD.SOHD%TYPE; V_MASP CTHD.MASP%TYPE; CURSOR CT IS SELECT MASP FROM CTHD WHERE MASP = :NEW.MASP; BEGIN OPEN CT; LOOP FETCH CT INTO V_MASP; EXIT WHEN CT%NOTFOUND; SELECT FROM WHERE SUM(SL) INTO SUM_SL CTHD MASP = V_MASP; :NEW.SOLUONG := :NEW.SOLUONG - SUM_SL; IF(:NEW.SOLUONG 36000000 AND TS.NHANHIEU = 'Tiffany and Co'; SELECT * FROM TABLE(DBMS_XPLAN.display_cursor(format=>'ALLSTATS LAST')); Kết quả: 40 IS211.N11.HTCL – Nhóm 4.3 Ti ưu ha câu truy vấn cc b, phân tán + Đồ thị truy vấn + Cây truy vấn tối ưu môi trường tập trung 41 IS211.N11.HTCL – Nhóm + Câu truy vấn tối ưu mơi trường tập trung: SELECT DISTINCT E.MAKH, HOTEN, GIOITINH, DCHI, DTHOAI, CAPDO, SOHD, TONGTIEN FROM (( SELECT TONGTIEN, MAKH, SOHD FROM ((SELECT TONGTIEN, MAKH, MASP, A.SOHD FROM ((SELECT SOHD, MAKH, TONGTIEN FROM HD WHERE TONGTIEN > 36000000) A INNER JOIN CTHD B ON A.SOHD = B.SOHD )) C INNER JOIN (SELECT MASP FROM TRANGSUC WHERE NHANHIEU = 'Tiffany and Co') D ON C.MASP = D.MASP)) E INNER JOIN (SELECT MAKH, HOTEN, GIOITINH, DCHI, DTHOAI, CAPDO FROM ((SELECT MAKH, HOTEN, GIOITINH, DCHI, DTHOAI, CAPDO, MACN FROM KHACHHANG WHERE CAPDO = 'Thuong') F INNER JOIN (SELECT MACN FROM CHINHANH WHERE MACN = 'CN01') G ON F.MACN = G.MACN)) H ON E.MAKH = H.MAKH); + EXPLAIN QUERY câu truy vấn tối ưu mơi trường tập trung: 42 IS211.N11.HTCL – Nhóm SELECT /*+ GATHER_PLAN STATISTICS */ DISTINCT E.MAKH, HOTEN, GIOITINH, DCHI, DTHOAI, CAPDO, SOHD, TONGTIEN FROM (( SELECT TONGTIEN, MAKH, SOHD FROM ((SELECT TONGTIEN, MAKH, MASP, A.SOHD FROM ((SELECT SOHD, MAKH, TONGTIEN FROM HD WHERE TONGTIEN > 36000000) A INNER JOIN CTHD B ON A.SOHD = B.SOHD )) C INNER JOIN (SELECT MASP FROM TRANGSUC WHERE NHANHIEU = 'Tiffany and Co') D ON C.MASP = D.MASP)) E INNER JOIN (SELECT MAKH, HOTEN, GIOITINH, DCHI, DTHOAI, CAPDO FROM ((SELECT MAKH, HOTEN, GIOITINH, DCHI, DTHOAI, CAPDO, MACN FROM KHACHHANG WHERE CAPDO = 'Thuong') F INNER JOIN (SELECT MACN FROM CHINHANH WHERE MACN = 'CN01') G ON F.MACN = G.MACN)) H ON E.MAKH = H.MAKH); SELECT * FROM TABLE(DBMS_XPLAN.display_cursor(format=>'ALLSTATS LAST')); 4.4 Viết lại câu query môi trường phân tán select distinct E.MAKH, HOTEN, GIOITINH, DCHI, DTHOAI, CAPDO, SOHD, TONGTIEN from ((select TONGTIEN, MAKH, SOHD from ((select TONGTIEN, MAKH, MASP, A.SOHD from ((select SOHD, MAKH, TONGTIEN from CN1.HD where TONGTIEN > 100000000) A inner join CN1.CTHD B on A.SOHD = B.SOHD )) C inner join (select MASP from TRANGSUC where NHANHIEU = 'Tiffany and Co') D on C.MASP = D.MASP)) E inner join (select MAKH, HOTEN, GIOITINH, DCHI, DTHOAI, CAPDO from ((select MAKH, HOTEN, GIOITINH, DCHI, DTHOAI, CAPDO, MACN from CN1.KHACHHANG where CAPDO = 'Thuong') F inner join (select MACN from CN1.CHINHANH where MACN = 'CN01') G on F.MACN = G.MACN)) H on E.MAKH = H.MAKH); 43 IS211.N11.HTCL – Nhóm TÀI LIỆU THAM KHẢO Bài tp lớn – Nhóm 4, Lớp IS211.M11.2 ( Nhóm tác giả Trần Quốc Thành, Trần Anh Thư, Trần Minh Quân, Hồ Anh Dũng ) Tham khảo liệu trang sc từ PNJ Việt Nam Link: https://www.pnj.com.vn/ Tài liệu thực hành “ ISOLATION LEVEL Oracle ” thầy Nguyễn Minh Nhựt cung cấp 44 IS211.N11.HTCL – Nhóm BẢNG PHÂN CƠNG CƠNG VIỆC Họ tên MSSV Phân công Đánh giá Lê Thị Ngọc Hảo 20521292 100% Nguyễn Cẩm Tú 20520837 Nguyễn Thị Thu Thủy 20520797 Nguyễn Hoàng Ngọc Hạnh 20521287 - Chương 1: Thiết kế CSDL tổ chức liệu, viết câu truy vấn - Chương 4: Thực câu lệnh tối ưu vẽ tối ưu hóa truy vấn - Viết báo cáo chương 1,2 chỉnh sửa form báo cáo - Thực Demo với vai trò Máy B - Chương 1: Viết câu truy vấn - Chương 2: Viết thủ tục, ràng buộc toàn vẹn - Chương 3: Viết Script hướng dẫn máy thực Demo mức cô lập - Viết báo cáo chương 2,3 - Thực Demo với vai trò Máy A - Chương 1: Viết câu truy vấn - Chương 2: Viết thủ tục, ràng buộc toàn vẹn, hàm - Chương 3: Viết Script hướng dẫn máy thực Demo mức cô lập - Viết báo cáo chương 2,3 - Chương 1: Thiết kế CSDL tổ chức liệu, viết câu truy vấn - Chương 4: Thực câu lệnh tối ưu vẽ tối ưu hóa truy vấn - Viết báo cáo chương 1,4 chỉnh sửa form báo cáo 100% 100% 100% 45 IS211.N11.HTCL – Nhóm

Ngày đăng: 17/08/2023, 10:30

Tài liệu cùng người dùng

Tài liệu liên quan