You are on page 1of 53

BÀI THỰC HÀNH SỐ 3.

KIỂM TRA DATABASELINK VÀ TRUY VẤN PHÂN TÁN

Trần Thị Ngọc An, 19521189,

Nguyễn Xuân Minh Thu, 19521000,

Bùi Hữu Hiếu, 19521493,

Lê Bùi Dĩ Hòa, 19521517,

19521189@gm.uit.edu.vn, 19521000@gm.uit.edu.vn,

19521493@gm.uit.edu.vn, 19521517@gm.uit.edu.vn

TÓM TẮT NỘI DUNG THỰC HÀNH

Sinh viên tìm hiểu truy vấn phân tán, phân quyền trong hệ quản trị CSDL Oracle. Thực hiện các công
việc:
• Kết nối hai máy ảo Virtual Box
• Kết nối hai máy thật Radmin
• Thực hiện phân quyền trên hai máy
• Truy vấn phân tán

Keywords: Database Link, Oracle, Role, Grant, Connect, Query Distributing, …

NỘI DUNG THỰC HÀNH

1. DDL

CREATE TABLE SACH

MASACH varchar2(10) NOT NULL,

TENSACH varchar2(50) NOT NULL,

NGAYXB date,

TACGIA varchar2(50) NOT NULL,

GIATIEN number,

1
NHAXUATBAN varchar2(50),

LANIN number NOT NULL,

CONSTRAINT PK_SACH PRIMARY KEY (MASACH)

);

CREATE TABLE CHINHANH

MACHINHANH varchar2(10) NOT NULL,

TENCHINHANH varchar2(50),

SODT number NOT NULL,

CONSTRAINT PK_CN PRIMARY KEY(MACHINHANH)

);

CREATE TABLE KHOSACH_QLKHO

MACHINHANH varchar2(10) NOT NULL,

MASACH varchar2(10) NOT NULL,

SOLUONG number NOT NULL,

NGAYCAPNHAT DATE NOT NULL,

CONSTRAINT PK_KSQL PRIMARY KEY (MACHINHANH, MASACH),

CONSTRAINT FK_KSQL_CN FOREIGN KEY (MACHINHANH) REFERENCES

CHINHANH(MACHINHANH),

CONSTRAINT FK_KSQL_SACH FOREIGN KEY (MASACH) REFERENCES SACH(MASACH)

);

CREATE TABLE KHOSACH_NVBH (

MACHINHANH VARCHAR2(10) NOT NULL,

MASACH VARCHAR2(10) NOT NULL,

TINHTRANG VARCHAR2(10) NOT NULL,

KHUYENMAI NUMBER,

CONSTRAINT PK_NVBH PRIMARY KEY (MACHINHANH, MASACH),

CONSTRAINT FK_NVBH_MACHINHANH FOREIGN KEY (MACHINHANH) REFERENCES

CHINHANH(MACHINHANH),

2
CONSTRAINT FK_NVBH_MASACH FOREIGN KEY (MASACH) REFERENCES

CN2.SACH(MASACH)

);

CREATE TABLE NHANVIEN

MANV varchar2(10) NOT NULL,

TENNV varchar2(50) NOT NULL,

DIACHI varchar2(50) NOT NULL,

SODT varchar2(10),

LUONG number NOT NULL,

MACHINHANH varchar2(10) NOT NULL,

CONSTRAINT FK_NV_CN FOREIGN KEY (MACHINHANH) REFERENCES

CN2.CHINHANH(MACHINHANH),

CONSTRAINT PK_NV PRIMARY KEY(MANV)

);

----TABLE SACH----

INSERT INTO SACH VALUES ('Book1', 'SpyxFamily T.6',

to_date('29/10/2021','dd/mm/yyyy'), 'Endou Tatsuya', '25000', 'Kim

Dong', '1');

INSERT INTO SACH VALUES ('Book2', 'S. Family T.6 L',

to_date('29/10/2021','dd/mm/yyyy'), 'Endou Tatsuya', '45000', 'Kim

Dong', '1');

INSERT INTO SACH VALUES ('Book3', 'Th. Lũng B.H', null, 'Agatha

Christie', '120000', 'Tre', '1');

INSERT INTO SACH VALUES ('Book4', 'Black Jack 3',

to_date('25/10/2021','dd/mm/yyyy'), 'Osamu Tezuka', '30000', 'Tre',

'1');

INSERT INTO SACH VALUES ('Book5', 'One Piece 90',

to_date('11/10/2021','dd/mm/yyyy'), 'Eiichiro Oda', '19500', 'Kim

3
Dong', '2');

---- TABLE CHINHANH----

INSERT INTO CHINHANH values ('CN01','Quan 3, TPHCM', '0939013913');

INSERT INTO CHINHANH values ('CN02','Quan Hoan Kiem, Ha Noi',

'0907979815');

---- TABLE KHOSACH_QLKHO----

---CHINHANH1---

INSERT INTO KHOSACH_QLKHO VALUES ('CN01','Book1','0',

to_date('29/10/2021','dd/mm/yyyy'));

INSERT INTO KHOSACH_QLKHO VALUES ('CN01','Book3','510',

to_date('30/10/2021','dd/mm/yyyy'));

INSERT INTO KHOSACH_QLKHO VALUES ('CN01','Book5','100',

to_date('30/10/2021','dd/mm/yyyy'));

---CHINHANH2---

INSERT INTO KHOSACH_QLKHO VALUES ('CN02','Book1','500',

to_date('29/10/2021','dd/mm/yyyy'));

INSERT INTO KHOSACH_QLKHO VALUES ('CN02','Book2','0',

to_date('29/10/2021','dd/mm/yyyy'));

INSERT INTO KHOSACH_QLKHO VALUES ('CN02','Book4','180',

to_date('30/10/2021','dd/mm/yyyy'));

INSERT INTO KHOSACH_QLKHO VALUES ('CN02','Book5','187',

to_date('30/10/2021','dd/mm/yyyy'));

---- TABLE KHOSACH_NVBH----

---CHINHANH1---

INSERT INTO KHOSACH_NVBH VALUES ('CN01','Book1','Het Hang','0');

INSERT INTO KHOSACH_NVBH VALUES ('CN01','Book3','Con Hang','20');

INSERT INTO KHOSACH_NVBH VALUES ('CN01','Book5','Con Hang','20');

4
---CHINHANH2---

INSERT INTO KHOSACH_NVBH VALUES ('CN02','Book1','Con Hang','10');

INSERT INTO KHOSACH_NVBH VALUES ('CN02','Book2','Het Hang','0');

INSERT INTO KHOSACH_NVBH VALUES ('CN02','Book4','Con Hang','10');

INSERT INTO KHOSACH_NVBH VALUES ('CN02','Book5','Con Hang','15');

----TABLE NHANVIEN----

---CHINHANH1---

INSERT INTO NHANVIEN values ('NV03','Ho Trong Khang','Binh

Dinh','0858595208','5200000','CN01');

INSERT INTO NHANVIEN values ('NV04','Ho Huu Thang','Bien Hoa',

NULL,'5200000','CN01');

INSERT INTO NHANVIEN values ('NV06','Tran Thi Ngoc An','Binh

Dinh','0944052874','5200000','CN01');

---CHINHANH2---

INSERT INTO NHANVIEN values ('NV01','Nguyen Thi Thuy Nga','Dak

Lak','0943058578','4900000','CN02');

INSERT INTO NHANVIEN values ('NV02','Le Huynh Lan Ha','An

Giang','0823664648', '4900000','CN02');

INSERT INTO NHANVIEN values ('NV05','Phan Pham Quynh Hoa','Binh Thuan',

NULL, '4900000','CN02');

2. SIX QUERIES

-- QUERY 1

SELECT NVBH.MACHINHANH, S.MASACH, S.TENSACH

FROM CN1.SACH S JOIN CN1.KHOSACH_NVBH NVBH ON S.MASACH = NVBH.MASACH

WHERE NVBH.TINHTRANG = 'Het Hang'

UNION

SELECT NVBH.MACHINHANH, S.MASACH, S.TENSACH

FROM CN2.SACH@CN2_LINK S JOIN CN2.KHOSACH_NVBH@CN2_LINK NVBH ON

S.MASACH = NVBH.MASACH

5
WHERE NVBH.TINHTRANG = 'Het Hang';

-- QUERY 2

SELECT S.MASACH, S.TENSACH

FROM (CN1.SACH S JOIN CN1.KHOSACH_NVBH NVBH ON S.MASACH = NVBH.MASACH)

JOIN CN1.KHOSACH_QLKHO QLK ON S.MASACH = QLK.MASACH

WHERE NVBH.TINHTRANG = 'Con Hang'

AND QLK.SOLUONG > 120

UNION

SELECT S.MASACH, S.TENSACH

FROM (CN2.SACH@CN2_LINK S JOIN CN2.KHOSACH_NVBH@CN2_LINK NVBH ON

S.MASACH = NVBH.MASACH) JOIN CN2.KHOSACH_QLKHO@CN2_LINK QLK ON S.MASACH

= QLK.MASACH

WHERE NVBH.TINHTRANG = 'Con Hang'

AND QLK.SOLUONG > 120;

-- QUERY 3

SELECT S.TENSACH, S.NGAYXB, S.TACGIA, S.GIATIEN, QLK.SOLUONG, S.LANIN,

QLK.NGAYCAPNHAT

FROM CN1.SACH S JOIN KHOSACH_QLKHO QLK ON S.MASACH = QLK.MASACH

WHERE S.NHAXUATBAN = 'Kim Dong';

--QUERY 4

SELECT S.MASACH, S.TENSACH

FROM CN1.SACH S

WHERE S.MASACH NOT IN (SELECT MASACH FROM CN1.KHOSACH_NVBH NV1

WHERE NOT EXISTS (SELECT * FROM CN1.CHINHANH CN

WHERE NV1.MACHINHANH = CN.MACHINHANH

AND NV1.TINHTRANG = 'Con Hang'))

AND S.MASACH NOT IN (SELECT MASACH

6
FROM CN2.KHOSACH_NVBH@CN2_LINK NV2

WHERE NOT EXISTS (SELECT *

FROM CN2.CHINHANH@CN2_LINK CN

WHERE NV2.MACHINHANH = CN.MACHINHANH

AND NV2.TINHTRANG = 'Con Hang'));

-- QUERY 5

SELECT MASACH

FROM CN1.KHOSACH_QLKHO

WHERE MACHINHANH='CN01'

AND MASACH IN (SELECT MASACH

FROM CN2.KHOSACH_QLKHO@CN2_LINK

WHERE MACHINHANH='CN02')

--QUERY 6

SELECT S.MASACH, S.TENSACH, QLK.SLCN, QLK.KM

FROM CN1.SACH@NV_LINK S JOIN (SELECT MASACH, COUNT(MACHINHANH) SLCN,

MAX(KHUYENMAI) KM

FROM (SELECT * FROM CN1.KHOSACH_NVBH@NV_LINK

UNION SELECT * FROM CN2.KHOSACH_NVBH)

GROUP BY MASACH) QLK

ON S.MASACH = QLK.MASACH

WHERE NHAXUATBAN = 'Kim Dong';

3. KIẾN TRÚC PHÂN MẢNH

Chi nhánh 1:

SACH1 = SACH

CHINHANH1 =  MACHINHANH= “CN01” (CHINHANH)

KHOSACH1 tách thành:

KHOSACH_QLKHO1 =  MACHINHANH, MASACH, SOLUONG, NGAYCAPNHAT (KHOSACH_QLKHO

7
⋉ MACHINHANH CHINHANH1)

KHOSACH_NVBH1 =  MACHINHANH, MASACH, TINHTRANG, KHUYENMAI (KHOSACH_NVBH ⋉

MACHINHANH CHINHANH1)

NHANVIEN1 = NHAN VIEN ⋉ MACHINHANH CHINHANH1

Chi nhánh 2:

SACH2 = SACH

CHINHANH2 =  MACHINHANH= “CN02” (CHINHANH)

KHOSACH2 tách thành:

KHOSACH_QLKHO2 =  MACHINHANH, MASACH, SOLUONG, NGAYCAPNHAT (KHOSACH_QLKHO

⋉ MACHINHANH CHINHANH2)

KHOSACH_NVBH2 =  MACHINHANH, MASACH, TINHTRANG, KHUYENMAI (KHOSACH_NVBH ⋉

MACHINHANH CHINHANH2)

NHANVIEN2 = NHAN VIEN ⋉ MACHINHANH CHINHANH2

4. KIẾN TRÚC PHÂN QUYỀN

Chi nhánh 1:

Tạo user GiamDoc, QuanLyKho, NhanVien.

8
GiamDoc: Xem được thông tin tất cả các quan hệ chi nhánh 1, chi nhánh 2, Connect.

9
QuanLyKho: Xem được KHOSACH_QLKHO của chi nhánh 1, SACH.

NhanVien: Xem được SACH, KHOSACH_NVBH của chi nhánh 1, chi nhánh 2.

Chi nhánh 2:

10
Tạo user GiamDoc, QuanLyKho, NhanVien.

QuanLyKho: Xem được KHOSACH_QLKHO của chi nhánh 2, SACH.

NhanVien: Xem được SACH, KHOSACH_NVBH của chi nhánh 1, chi nhánh 2.

11
5. MÔI TRƯỜNG ẢO (VIRTUAL BOX)

a. Tổ chức dữ liệu máy A

Cấu hình máy ảo kiểm tra 1

12
13
14
15
16
17
18
19
20
21
22
23
Kết quả các câu truy vấn:

- Query 1:

24
- Query 2:

- Query 3:

- Query 4:

25
- Query 5:

b. Tổ chức dữ liệu máy B

26
27
28
29
30
31
32
33
- Query 6:

6. MÔI TRƯỜNG REAL (RADMIN VPN)

a. Tổ chức dữ liệu máy chủ (Chi nhánh 1)

Chi nhánh 1:

- Tạo bảng:
34
35
- Insert:

36
- Connect, DBA:

Chi nhánh 2:

- Connect:

- Select bảng CN1:

37
GiamDoc:

- Connect:

- Select bảng CN1:

38
39
40
QuanLyKho:

41
NhanVien:

Truy vấn thử dữ liệu:

42
Kết quả các câu truy vấn:

- Query 1:

- Query 2:

- Query 3:

43
- Query 4:

- Query 5:

44
b. Tổ chức dữ liệu máy trạm (Chi nhánh 2)

Chi nhánh 1:

- Connect:

- Select bảng CN2:

Chi nhánh 2:

- Tạo bảng:

45
- Insert:

46
47
- Connect, DBA:

GiamDoc:

- Connect:

- Select bảng CN2:

48
QuanLyKho:

NhanVien:

49
50
51
Truy vấn thử dữ liệu:

Kết quả các câu truy vấn:

- Query 6:

52
7. Link đường dẫn Youtube

https://youtu.be/8VufZjsFbeM

TÀI LIỆU THAM KHẢO

53

You might also like