Tiểu luận môn học cơ sở dữ liệu nâng cao

48 0 0
Tiểu luận môn học cơ sở dữ liệu nâng cao

Đ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

Trong trường hợp này, vì đã tìm thấy siêu khoá {A,B,C}, nó chứa tất cả các thuộc tính, nên nó là khóa của lược đồ quan hệ này.Vậy, trong ví dụ này, khóa của lược đồ quan hệ được xác định

Trang 1

TRƯỜNG ĐẠI HỌC TÀI NGUYÊN VÀ MÔI TRƯỜNG TP.HCM KHOA: HỆ THỐNG THÔNG TIN VÀ VIỄN THÁM

TIỂU LUẬN MÔN HỌCCƠ SỞ DỮ LIỆU NÂNG CAO

Giảng viên hướng dẫn :

Sinh viên thực hiện : NHAN VĂN ÁNH

MSSV: 1050080169

TP Hồ Chí Minh, tháng 12 năm 2023

Trang 2

TRƯỜNG ĐẠI HỌC TÀI NGUYÊN VÀ MÔI TRƯỜNG TP.HCM KHOA: HỆ THỐNG THÔNG TIN VÀ VIỄN THÁM

TIỂU LUẬN MÔN HỌCCƠ SỞ DỮ LIỆU NÂNG CAO

Giảng viên hướng dẫn :

Sinh viên thực hiện : NHAN VĂN ÁNH

MSSV: 1050080169

TP Hồ Chí Minh, tháng 12 năm 2023

Trang 3

1.3.5 Chuẩn Hóa Lược Đồ CSDL 5

1.4 Chuẩn Hóa lược Đồ Sử Dụng Thuật Toán 7.10 Trang 150 - Phân Rã Đến 3NF 6

Phần 2: Cơ Sở Dữ Liệu Phân Tán (Cơ Bản) 7

Phần 2: Cơ sở dữ liệu phân tán (Cơ bản) 7

Cho CSDL quản lý vật tư như sau: 7

Các bước thực hiện: 15

Phần 3: Cấu Trúc Dữ Liệu NoSQL-MongoDB(Cơ Bản) 24

1 Truy vấn dữ liệu với phương thức find(): 25

2 Truy vấn tất cả dữ liệu trong collection: 32

3 Truy vấn dữ liệu với điều kiện: 32

4 Truy vấn với điều kiện phức tạp: 33

Trang 4

9 Chỉ mục rời rạc (Sparse Indexes) 45

10 Time-to-Live Indexes (TTL Indexes) 45

Trang 5

Phần 1: Cơ Sở Dữ Liệu Tập Trung 1.1 Phủ Tối thiểu

"Tập phụ thuộc hàm tối thiểu là tập mà thỏa mãn các điều kiện sau:

Mỗi phụ thuộc hàm trong tập chỉ có một thuộc tính ở vế phải, không có thuộc tính dư thừa Không thể thay thế bất kỳ phụ thuộc hàm X → A nào trong tập bằng phụ thuộc hàm Y → A, với Y là tập con của X và vẫn giữ nguyên tính đúng của các phụ thuộc hàm.

Không thể loại bỏ bất kỳ phụ thuộc hàm nào ra khỏi tập mà vẫn giữ nguyên tính đúng của tập phụ thuộc hàm.

Tập tối thiểu các phụ thuộc hàm có thể được hiểu như tập không chứa thông tin dư thừa Điều kiện 1 đảm bảo rằng mỗi phụ thuộc hàm đều đúng theo cấu trúc cơ bản chỉ với một thuộc tính ở vế phải, điều kiện 2 đảm bảo không có thuộc tính nào không cần thiết ở vế trái và điều kiện 3 đảm bảo không có phụ thuộc hàm nào thừa thãi Tập phụ thuộc hàm tối thiểu cũng được gọi là phủ tối thiểu."

1.2 Tìm Tất Cả Các Khóa

Dữ liệu vào: Q(U), tập phụ thuộc hàm F Dữ liệu ra: tất cả các khóa của Q Thuật toán:

Bước 1: Xác định tất cả các tập con của Q Để xác định tất cả các tập con của một lược đồ quan hệ Q(U) với U={A1, A2, , An} ta lần lượt duyệt tất cả 2n-1 tập hợp con khác rỗng của U (n là số thuộc tính của Q) Kết quả tìm được giả sử là các tập thuộc tính:

S={X1, X2, …,X2n-1}

Bước 2: Tính Xi + Nếu Xi + = U thì Xi là siêu khoá Giả sử sau bước này có m siêu khoá: S = {S1,S2,…,Sm}

Bước 3 Tìm các khóa từ tập siêu khóa S Xét mọi Si và Sj con của S (i ≠ j), nếu Si Sj thì ta loại Sj ra khỏi S Kết quả S còn lại chính là tập tất cả các khoá cần tìm

Ví dụ :

Trang 6

Giả sử có một lược đồ quan hệ với tập thuộc tính :U={A,B,C} và tập phụ thuộc

Ở đây, {A,B,C} là siêu khoá vì nó chứa tất cả các thuộc tính trong U.

Bước 3: Tìm các khóa từ tập siêu khoá S Trong trường hợp này, vì đã tìm thấy siêu khoá {A,B,C}, nó chứa tất cả các thuộc tính, nên nó là khóa của lược đồ quan hệ này.

Vậy, trong ví dụ này, khóa của lược đồ quan hệ được xác định là{A,B,C} dựa trên thuật toán đã mô tả.

1.3 Nhận Diện Các Dạng Chuẩn1.3.1 1NF

Một lược đồ quan hệ Q được gọi là ở dạng chuẩn 1 nếu mọi thuộc tính trong Q đều là các thuộc tính đơn Tức là những giá trị trong các thuộc tính đều không thể phân chia được nữa Ví Dụ :Giả sử có lược đồ quan hệ:

Trang 7

Trong đó thuộc tính MonHoc là thuộc tính kép Để có được dạng chuẩn 1 cho quan hệ trên, ta có thể tách thuộc tính kép thành thuộc tính đơn như sau:

CHUYENMON (MAGV, MONHOC)

Một lược đồ quan hệ Q đạt dạng chuẩn 2 nếu Q đạt dạng chuẩn 1 và tất cả các thuộc tính không khoá của Q đều phụ thuộc đầy đủ vào khoá.

Ví Dụ :iả sử chúng ta có một lược đồ quan hệ cho các đơn hàng trong một cửa hàng online: Lược đồ quan hệ: DON_HANG(SODH, NGAYDH, KHACHHANG, MAHH, SOLUONG)

SOLUONG là số lượng hàng hóa trong đơn hàng Và chúng ta có các phụ thuộc hàm như sau:

F = {SODH → NGAYDH, KHACHHANG; SODH, MAHH → SOLUONG} Kiểm tra 2NF:

Lược đồ này đã đạt dạng chuẩn 1 (1NF) vì không có các thuộc tính có giá trị lặp lại trong bất kỳ bộ nào.

Để kiểm tra dạng chuẩn 2, chúng ta xem xét các phụ thuộc hàm và xác định xem các thuộc tính không phải là khóa chính có phụ thuộc đầy đủ vào khóa hay không.

Trang 8

Trong F, ta có phụ thuộc hàm SODH → NGAYDH, KHACHHANG, nghĩa là NGAYDH và KHACHHANG phụ thuộc vào SODH Tuy nhiên, cả hai thuộc tính này không phụ thuộc đầy đủ vào khóa chính {SODH, MAHH}.

Vì vậy, lược đồ quan hệ DON_HANG không đạt dạng chuẩn 2 (2NF) do có phụ thuộc hàm bộ phận Để đạt 2NF, chúng ta cần cắt phụ thuộc hàm này ra khỏi khóa chính.

1.3.3 3NF

Định nghĩa 1 Một lược đồ quan hệ Q được gọi là ở dạng chuẩn 3 nếu Q ở dạng chuẩn 2 và mọi thuộc tính không khóa của Q đều không phụ thuộc bắc cầu vào bất kỳ khóa nào

Định nghĩa 2 Một lược đồ quan hệ Q đạt 3NF nếu mọi phụ thuộc hàm không hiển nhiên X→A (A là 1 thuộc tính) thỏa:

Hoặc X là một siêu khoá của Q Hoặc A là một thuộc tính khoá

Ví Dụ :Giả sử chúng ta có một lược đồ quan hệ cho việc lưu trữ thông tin về đơn hàng và sản TENHH là tên hàng hóa

SOLUONG là số lượng hàng hóa trong đơn hàng Và chúng ta có các phụ thuộc hàm như sau:

F = {SODH → NGAYDH, KHACHHANG; MAHH → TENHH} Kiểm tra 3NF:

Để kiểm tra xem lược đồ quan hệ này có đạt 3NF hay không, chúng ta cần kiểm tra xem các thuộc tính không phải là khóa có phụ thuộc bắc cầu vào khóa không.

Trang 9

Trong F, ta có phụ thuộc hàm SODH → NGAYDH, KHACHHANG, nghĩa là NGAYDH và KHACHHANG phụ thuộc vào SODH Đây không phải là phụ thuộc bắc cầu vào khóa, vì SODH không phải là khóa chính của lược đồ.

Ngoài ra, ta có phụ thuộc hàm MAHH → TENHH, trong đó TENHH là một thuộc tính không phải là khóa và phụ thuộc vào MAHH, nhưng MAHH cũng không phải là khóa chính.

Như vậy, lược đồ quan hệ DON_HANG không đạt 3NF vì có phụ thuộc bắc cầu vào các khóa không phải là khóa chính Để đạt 3NF, chúng ta cần cắt phụ thuộc hàm này ra khỏi các thuộc tính không phải là khóa.

1.3.4 BCNF

Một lược đồ quan hệ Q được gọi là ở dạng chuẩn BC nếu mọi phụ thuộc hàm không hiển nhiên của F đều có vế trái chứa khóa.

Ví Dụ : Cho quan hệ R = (ABCDGH), khóa là AB và tập phụ thuộc hàm F = {AB → C, AB → D, AB → GH} là quan hệ đạt chuẩn BCNF.

1.3.5 Chuẩn Hóa Lược Đồ CSDL

- Chuẩn hóa cơ sở dữ liệu là một quá trình thiết kế bảng trong cơ sở dữ liệu, chia các bảng lớn thành các bảng nhỏ hơn và liên kết chúng bằng các mối quan hệ Chuẩn hóa giúp giảm thiểu dư thừa dữ liệu và loại bỏ các bất thường khi cập nhật cơ sở dữ liệu.

- Có một số dạng chuẩn hóa cơ bản:

+ Dạng chuẩn 1 (1NF): Một bảng được gọi là ở dạng chuẩn 1NF nếu các giá trị của tất cả các thuộc tính đều phải là nguyên tử (đơn, không phân chia được) Nó không chứa các thuộc tính có giá trị lặp hoặc đa trị.

+ Dạng chuẩn 2 (2NF): Một quan hệ ở dạng chuẩn 2NF nếu quan hệ đó là 1NF và các thuộc tính không khóa phải phụ thuộc hàm đầy đủ vào khóá chính.

+ Dạng chuẩn 3 (3NF): Một quan hệ ở dạng chuẩn 3NF nếu quan hệ đó là 2NF và các thuộc tính không khóá phải phụ thuộc trực tiếp vào khóá chính.

+ Dạng chuẩn Boye Code (BCNF): Một quan hệ ở dạng chuẩn BCNF nếu quan hệ đó là 3NF và không có thuộc tính khóa mà phụ thuộc hàm vào thuộc tính không khóá.

Trang 10

Một ví dụ về chuẩn hóa cơ sở dữ liệu từ INF đến 3NF:

INF (First Normal Form): Giả sử chúng ta có một bảng chưa ở 1NF như sau:

Để chuyển bảng này về INF, chúng ta cần phải đảm bảo rằng mỗi ô trong bảng chỉ chứa một giá trị đơn và mỗi dòng (bản ghi) cần phải là duy nhất.

2NF (Second Normal Form):

Một quan hệ ở dạng chuẩn 2NF nếu quan hệ đó là 1NF và các thuộc tính không khóa phải phụ thuộc hàm đầy đủ vào khóa chính Ví dụ, cho quan hệ R =

(ABCD), khóá chính là AB và tập phụ thuộc hàm là F = {AB -> C, AB -> D) là quan hệ đạt chuẩn 2NF.1

3NF (Third Normal Form):

Một quan hệ ở dạng chuẩn 3NF nếu quan hệ đó là 2NF và các thuộc tính không khóa phải phụ thuộc trực tiếp vào khóa chính Ví dụ, cho quan hệ R =

(ABCDGH), khóá là AB và tập phụ thuộc hàm là F = {AB> C, AB -> D, AB -> GH} là quan hệ đạt chuẩn 3NF

1.4 Chuẩn Hóa lược Đồ Sử Dụng Thuật Toán 7.10 Trang 150 - Phân Rã Đến 3NF

- Chuẩn hóa lược đồ CSDL sử dụng thuật toán 7.10 trang 150 - Phân rã đến 3NF là một quy trình chuẩn hóa cơ sở dữ liệu để đảm bảo rằng dữ liệu được tổ chức một cách hiệu quả Các bước cơ bản trong quá trình này :

Bước 1: Xác định tất cả các phụ thuộc hàm trong lược đồ quan hệ

Trang 11

Bước 2: Xác định tất cả các khóa chính và khóa phụ T Bước 3: Xác định tất cả các thuộc tính không phụ thuộc vào khóa chính

Bước 4: Xác định tất cả các thuộc tính phụ thuộc vào khóa chính

Bước 5: Tạo các bảng mới dựa trên các thuộc tính phụ thuộc vào khóa chính

Ví Dụ :Giả sử chúng ta có một quan hệ R = (ABCD) với tập phụ thuộc hàm F = {AB -> C,

Bước 3: Xác định tất cả các thuộc tính không phụ thuộc vào khóa chính Trong trường hợp: này, chúng ta không có thuộc tính nào không phụ thuộc vào khóá chính T Bước 4: Xác định tất cả các thuộc tính phụ thuộc vào khóa chính Trong trường hợp này, chúng ta có C và D phụ thuộc vào khoa chính AB.

Bước 5: Tạo các bảng mới dựa trên các thuộc tính phụ thuộc vào khóa chính Trong trường hợp này, chúng ta tạo ra hai bảng mới: R1 = (ABC) và R2 = (ABD) với tập phụ thuộc

hàm F1 = {AB -> C} và F2 = {AB -> D}.

Bước 6: Xác định các thuộc tính không phụ thuộc vào khóa chính và tạo các bảng mới dựa trên chúng Trong trường hợp này, chúng ta không có thuộc tính nào không phụ thuộc vào khoá chính.

Bước 7: Xác định các thuộc tính còn lại và tạo các bảng mới dựa trên chúng Trong trường hợp này, chúng ta không có thuộc tính nào còn lại.

Vậy, sau quá trình chuẩn hóa, chúng ta có hai bảng mới R1 = (ABC) và R2 = (ABD) thay cho bảng ban đầu R = (ABCD).

Trang 12

Phần 2: Cơ Sở Dữ Liệu Phân Tán (Cơ Bản)

Phần 2: Cơ sở dữ liệu phân tán (Cơ bản)

(13) [Cơ sở dữ liệu phân tán] Phân tán cơ sở dữ liệu trong Microsoft SQL Server 2012 - Lược đồ phân mảnh - YouTube

Cho CSDL quản lý vật tư như sau:

1 ChiNhanh(MaCN, ChiNhanh, Diachi, SoDT)

2 Nhanvien(MaNV,Ho,Ten,Diachi, Ngaysinh, Luong, MaCN) 3 Kho(Makho, Tenkho, Diachi, MaCN)

Yêu cầu : Giả sử công ty có 2 chi nhánh: Chi nhánh 1 (CN1), chi nhánh 2 (CN2) Phân tán CSDL QLVT ra làm 3 mảnh với điều kiện :

-QLVT được đặt trên server 1: Chứa thông tin của các phiếu phát sinh thuộc CN1 -QLVT được đặt trên server 2 : Chứa thông tin của các phiếu phát sinh thuộc CN2 -QLVT được đặt trên server 3 : Chứa thông tin các nhân viên, kho của cả 2 chi nhánh

Bảng 1: ChiNhanh

CREATE TABLE ChiNhanh ( MaCN INT PRIMARY KEY, ChiNhanh VARCHAR(255), Diachi VARCHAR(255), SoDT VARCHAR(20) );

Trang 13

Bảng 2: Nhanvien

CREATE TABLE Nhanvien ( MaNV INT PRIMARY KEY,

CREATE TABLE Kho ( Makho INT PRIMARY KEY,

CREATE TABLE Vattu ( MaVT INT PRIMARY KEY, TenVT VARCHAR(255),

Trang 14

DVT VARCHAR(50) );

Bảng 5: Dathang

CREATE TABLE Dathang ( MasoDDH INT PRIMARY KEY,

PRIMARY KEY (MasoDDH, MaVT), FOREIGN KEY (MasoDDH) REFERENCES Dathang(MasoDDH), FOREIGN KEY (MaVT) REFERENCES Vattu(MaVT)

Trang 15

Bảng 7: PhieuNhap

CREATE TABLE PhieuNhap ( MaPN INT PRIMARY KEY, Ngay DATE,

MasoDDH INT, MaNV INT, Makho INT,

FOREIGN KEY (MasoDDH) REFERENCES Dathang(MasoDDH), FOREIGN KEY (MaNV) REFERENCES Nhanvien(MaNV), FOREIGN KEY (Makho) REFERENCES Kho(Makho) PRIMARY KEY (MaPN, MaVT),

FOREIGN KEY (MaPN) REFERENCES PhieuNhap(MaPN), FOREIGN KEY (MaVT) REFERENCES Vattu(MaVT) );

Bảng 9: PhieuXuat

Trang 16

CREATE TABLE PhieuXuat ( MaPX INT PRIMARY KEY, Ngay DATE,

HotenKH VARCHAR(255), MaNV INT,

Makho INT,

FOREIGN KEY (MaNV) REFERENCES Nhanvien(MaNV), FOREIGN KEY (Makho) REFERENCES Kho(Makho) PRIMARY KEY (MaPX, MaVT),

FOREIGN KEY (MaPX) REFERENCES PhieuXuat(MaPX), FOREIGN KEY (MaVT) REFERENCES Vattu(MaVT) );

Trang 17

Dữ liệu Thêm Vào để giải quyết bài toán: Chèn dữ liệu vào bảng ChiNhanh:

INSERT INTO ChiNhanh (MaCN, ChiNhanh, Diachi, SoDT) VALUES

(1, 'CN1', 'DiaChi1', '123456789'), (2, 'CN2', 'DiaChi2', '987654321'), (3, 'CN3', 'DiaChi3', '555555555');

Chèn dữ liệu vào bảng Nhanvien

INSERT INTO Nhanvien (MaNV, Ho, Ten, Diachi, Ngaysinh, Luong, MaCN) VALUES

(1, 'Ho1', 'Ten1', 'DiaChiNV1', '1990-01-01', 5000.00, 1), (2, 'Ho2', 'Ten2', 'DiaChiNV2', '1995-05-05', 6000.00, 2), (3, 'Ho3', 'Ten3', 'DiaChiNV3', '2000-10-10', 7000.00, 3);

Chèn dữ liệu vào bảng Kho

INSERT INTO Kho (Makho, Tenkho, Diachi, MaCN) VALUES

(1, 'Kho1', 'DiaChiKho1', 1), (2, 'Kho2', 'DiaChiKho2', 2),

Trang 18

(3, 'Kho3', 'DiaChiKho3', 3);

Chèn dữ liệu vào bảng Vattu

INSERT INTO Vattu (MaVT, TenVT, DVT) VALUES

(1, 'VT1', 'DVT1'), (2, 'VT2', 'DVT2'), (3, 'VT3', 'DVT3');

Chèn dữ liệu vào bảng Dathang

INSERT INTO Dathang (MasoDDH, Ngay, NhaCC, MaNV, Makho)

Chèn dữ liệu vào bảng PhieuNhap

INSERT INTO PhieuNhap (MaPN, Ngay, MasoDDH, MaNV, Makho) VALUES

(1, '2023-04-04', 1, 1, 1), (2, '2023-05-05', 2, 2, 2),

Trang 19

Chèn dữ liệu vào bảng PhieuXuat

INSERT INTO PhieuXuat (MaPX, Ngay, HotenKH, MaNV, Makho)

Trang 20

B2: Tạo new Publication:

B3: Where theo điều kiện MaCN là 3 tức là toàn bộ dữ liệu liên quantới CN3 sẽ vào CSDL mà muốn quản lý:

Trang 21

B4: Phương thức Snapshot Agent Security:

B5: Đặt tên cho publication :

Trang 22

B6: Tạo Subscription:

Trang 23

B7: Chọn Database để phân tán dữ liệu:

B8: Phương thức đăng nhập:

Trang 24

Hiển thị như thế này là thành công.

Trang 28

- Sau khi phân tán sẽ tự động sinh 1 cột là xong.Phần 3: Cấu Trúc Dữ Liệu NoSQL-MongoDB(Cơ Bản) Phần này em sẽ thực hành với bộ dữ liệu Student cô hay cho trên lớp.

Trang 29

1 Truy vấn dữ liệu với phương thức find():

a db.collection.find(query, projection)

Tìm tất cả học sinh khối “A”:

Trang 30

Hiển thị tên và điểm toán của tất cả học sinh:

Trang 31

Tìm tên “ Trần Thị Chi “ và hiện tất cả thông tin về học sinh này :

Trang 32

b Phân trang với phương thức limit() và skip()

Nếu muốn lấy 3 học sinh đầu tiên trong collection thì ta dùng limit(3):

Trang 33

Nếu ta muốn lấy 2 học sinh sau 5 học sinh đầu tiên thì vừa dùng skip(5) và limit (2):

Trang 34

c Sắp xếp dữ liệu với sort()

Sắp xếp điểm khối từ cao xuống thấp theo bảng chữ cái và sắp xếp tăng dần theo số của điểm toán :

Trang 36

2 Truy vấn tất cả dữ liệu trong collection:

3 Truy vấn dữ liệu với điều kiện:

Câu lệnh truy vấn học sinh có điểm sinh 10 và hóa 10 dùng câu lệnh này có thể phục vụ cho việc trao giấy khen lọc ra học sinh đi thi học sinh giỏi.

Trang 37

4 Truy vấn với điều kiện phức tạp:

Tìm tất cả học sinh thuộc khối "A" hoặc có điểm Toán lớn hơn 7, nhưng không thuộc khối "A1" và có điểm Anh lớn hơn hoặc bằng 8:

Trang 38

Trong truy vấn trên:

$or được sử dụng để kết hợp điều kiện học sinh thuộc khối "A" hoặc có điểm Toán lớn hơn7 $and được sử dụng để kết hợp điều kiện không thuộc khối "A1" và có điểm Anh lớn hơn hoặc bằng 8.

- Tìm tất cả học sinh thuộc khối "A" hoặc "A1" có điểm Toán lớn hơn 7 và điểm Anh lớnhơn hoặc bằng 8, nhưng không có điểm Hóa nhỏ hơn 8:

Trang 39

Trong truy vấn này, chúng ta sử dụng: $or để chọn học sinh thuộc khối "A" hoặc "A1" Các điều kiện về điểm số Toán và Anh.

$not kết hợp với $lt (nhỏ hơn) để loại bỏ các học sinh có điểm Hóa nhỏ hơn 8.

5 Truy vấn chỉ trả về một số trường cụ thể:

Trả về tên và khối học của học sinh tiện cho việc thống kê số lượng học sinh của từng khối:

Trang 40

2 Truy vấn dữ liệu: Các toán tử truy vấn (Query and projection operators)

Các toán tử truy vấn (Query operators) trong MongoDB là các toán tử dùng để xác định các điều kiện trong câu truy vấn Dưới đây là một số toán tử thường được sử dụng:

Toán tử so sánh:

$eq: So sánh bằng $ne: So sánh khác $gt: Lớn hơn

Ngày đăng: 05/04/2024, 14:36

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

Tài liệu liên quan