1. Trang chủ
  2. » Luận Văn - Báo Cáo

báo cáo đồ án môn học cơ sở dữ liệu nâng cao

37 0 0
Tài liệu đã được kiểm tra trùng lặp

Đ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

Nội dung

Kiểm tra và Tối ưu:Kiểm tra lược đồ chuẩn hóa và tối ưu hóa nếu cần thiết để đảm bảo hiệu suất tốt nhất.Chuẩn hóa lược đồ sử dụng thuật toán 7.10 trang 150 - Phân rã đến 3NFDữ liệu vào:

Trang 1

TRƯỜNG ĐẠI HỌC TÀI NGUYÊN VÀ MÔI TRƯỜNGTPHCM

KHOA HỆ THỐNG THÔNG TIN VÀ VIỄN THÁM

BÁO CÁO ĐỒ ÁN MÔN HỌCCƠ SỞ DỮ LIỆU NÂNG CAO

Lớp: 10_ĐH_CNTT6Giảng viên: ThS HÀ THANH VÂN

Sinh viên thực hiện: HOÀNG VƯƠNG QUỐC ANHMSSV: 1050080212

Trang 2

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

Trang 3

TRƯỜNG ĐẠI HỌC TÀI NGUYÊN VÀ MÔI TRƯỜNGTPHCM

KHOA HỆ THỐNG THÔNG TIN VÀ VIỄN THÁM

BÁO CÁO ĐỒ ÁN MÔN HỌCCƠ SỞ DỮ LIỆU NÂNG CAO

Lớp: 10_ĐH_CNTT6Giảng viên: ThS HÀ THANH VÂN

Sinh viên thực hiện: HOÀNG VƯƠNG QUỐC ANH

MSSV: 1050080212

Trang 4

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

NHẬN XÉT, ĐÁNH GIÁ CỦA GIẢNG VIÊN

Trang 5

PHẦN 1: CƠ SỞ DỮ LIỆU TẬP TRUNG.-Tìm phủ tối thiểu:

 Thuật toán của tìm phủ tối thiểu:Thuật toán:

Bước 1 Chuyển các phụ thuộc hàm trong F thành các phụ thuộc hàm vế

phải có 1 thuộc tính.

Bước 2 Loại bỏ các thuộc tính dư thừa bên vế trái bằng cách: với mỗi phụ

thuộc hàm f: X Y F, duyệt lần lượt các thuộc tính A bên vế trái của  f, nếu f (F - {f} {X-A Y})+ thì loại A ra khỏi f.  

Bước 3 Loại bỏ các phụ thuộc hàm dư thừa bằng cách duyệt lần lượt phụ

F={ B→C; B→D; B→C; C→D}Kết quả của bước 3 cho phủ tối thiểu:F={ B→C; C→D }

Trang 6

-> Một lược đồ quan hệ có thể có nhiều khóa.

C+ = CA ≠ U ⇒ BC là khóa của Q

-Nhận diện các dạng chuẩn:1,2,3,BCNF và chuẩn hóa lược đồ CSDL:

1 1NF (First Normal Form):

-Mỗi ô của bảng chứa một giá trị duy nhất, không có giá trị lặp lại.-Các giá trị trong mỗi cột phải là nguyên tử (atomic).

-Ví dụ: Cho lược đồ quan hệ Q(ABCD) và tập phụ thuộc hàm: F={ AB → CD; B → D; C→ A}

Q có 2 khoá là {AB} và {BC} Do D là thuộc tính không khoá, AB → D không là phụ thuộc hàm đầy đủ vì có B → D nên Q không đạt 2NF Vậy lược đồ đã cho đạt 1NF.

2 2NF (Second Normal Form):-Bảng đã ở dạng 1NF.

-Các cột không phải là khóa chính phụ thuộc vào toàn bộ khóa chính.-Ví dụ: Cho lược đồ quan hệ Q(GMVNHP) và tập phụ thuộc hàm: F={G→N; G→H; G→P; M→V; NHP→M}

Dễ thấy Q có 1 khóa là {G} Thuộc tính không khoá là M,V,N,H,P.Do các phụ thuộc hàm G → M; G → V; G → N; G → H; G → P là các phụ thuộc hàm đầy đủ, nên lược đồ quan hệ Q đạt 2NF

3 3NF (Third Normal Form):

Trang 7

-Bảng đã ở dạng 2NF.

-Không có sự phụ thuộc chức năng giữa các cột (non-prime attributes).-Ví dụ: Cho lược đồ quan hệ Q(ABCD), với

F={ AB → C ; D → B; C → ABD }Q có 3 khóa là {AB}, {AD} và {C}.

Tất cả các thuộc tính trong Q đều là thuộc tính khóa nên theo định nghĩa 1, Q đạt 3NF Theo định nghĩa 2, tất cả các phụ thuộc hàm được cho trong F đều thỏa1 trong 2 điều kiện Vậy Q đạt 3NF

4 BCNF (Boyce-Codd Normal Form):-Bảng đã ở dạng 3NF.

-Mọi phụ thuộc chức năng là trực tiếp với khóa chính, không có phụ thuộc chức năng không cần thiết.

5 5Chuẩn hóa CSDL:

a Xác định Thực thể và Mối quan hệ:Xác định các thực thể chính và mối quan hệ giữa chúng.

b Chuyển đổi sang Bảng:

Chuyển đổi các thực thể và mối quan hệ thành bảng.c Xác định Khóa Chính:

Xác định khóa chính cho mỗi bảng.d Giải quyết Mối quan hệ Nhiều-nhiều:

Sử dụng bảng liên kết để giải quyết mối quan hệ nhiều-nhiều.e Áp dụng Quy tắc Chuẩn hóa:

Áp dụng các quy tắc chuẩn hóa (1NF, 2NF, 3NF, BCNF, 4NF) để đảm bảo tính nhất quán và giảm thiểu dữ liệu trùng lặp.

f Kiểm tra và Tối ưu:

Kiểm tra lược đồ chuẩn hóa và tối ưu hóa nếu cần thiết để đảm bảo hiệu suất tốt nhất.

Chuẩn hóa lược đồ sử dụng thuật toán 7.10 trang 150 - Phân rã đến 3NF

Dữ liệu vào: Lược đồ quan hệ Q(U) và tập phụ thuộc hàm F

Trang 8

Dữ liệu ra: Phân rã p={Q1,Q2,…Qk} đạt 3NF bảo toàn phụ thuộc hàm và bảo toàn thông tin.

Thuật toán:

Bước 1 Tìm phủ tối thiểu của F

Bước 2 Nếu có một phụ thuộc hàm nào của F mà liên quan đến tất cả các thuộc tính của Q thì kết quả ra chính là Q (Q không thể phân rã)

Bước 3 Cứ mỗi phụ thuộc hàm X → A F thì XA là một lược đồ cần tìm∈Bước 4 Nếu không có lược đồ quan hệ nào trong p chứa một khóa của Q thì hãy tạo ra thêm một lược đồ quan hệ trong p chứa các thuộc tính tạo nên một khóa của R

PHẦN 2: CƠ SỞ DỮ LIỆU PHÂN TÁN

Sau đây mình sẽ hướng dẫn các bạn cách để phân tán CSDL ở các server con- Bước 1: Tạo database rồi thêm dữ liệu, dưới đây là database QL_VATTU

mà mình đã chuẩn bị

Trang 9

- Bước 2: Tạo các server con, trước khi tạo thì hãy chạy SQL Server Agent

Sau đó bấm Connect -> Database Engine và kết nối với các server khác

Trang 10

Sau khi đã kết nối xong thì mình tiến hành phân tán, dưới đây là yêu cầu của đề bài

Ở server gốc, tìm thư mục Replication và bấm dấu +, Click chuột phải vào Local Publications -> New Publication…

Trang 11

Sau đó xuất hiện hộp thoại New Publication Wizard

- Bấm Next thì chọn Database mà mình muốn phân tán -> Next

- Ở mục Publication type ta chọn Merge publication -> Next

Trang 12

- Dựa vào yêu cầu thì ta có thể chọn hết hoặc chọn 1 số bảng để tiến hành phân tán rồi bấm Next

- Ở mục Filtered Tables thì các bạn chọn Add -> Add Filter…

- Thêm điều kiện, theo yêu cầu thì mình sẽ lấy điều kiện của Mã Chi Nhánhlà “CN1”

Trang 13

Sau đó bấm OK và ta sẽ quay lại mục Filtered Tables, tiếp tục chọn Add > Add Join to Extend the Selected Filter… để thêm liên kết giữa các bảng

Thêm liên kết giữa các bảng sau đó nhấn OK

Trang 14

- Sau khi xong thì bấm Next, ở mục dưới đây thì các bạn bỏ chọn Schedule the Snapshot Agent to run at the following times -> Next

- Ở phần Agent Security thì các bạn chọn Security Settings sau đó hộp thoại Snapshot Agent Security xuất hiện

- Phần này các bạn lựa chọn đăng nhập

+ Có thể chọn Run under the following Windows hoặc Run under the SQL Server Agent

Trang 15

+ Ở phần Connect to the Publisher thì có thể chọn By impersonating the process account hoặc Using the following SQL Server login rồi đăng nhập ở phần Login, Password -> OK

- Sau khi xong thì ta nhấn Next

- Bước cuối cùng là đặt tên cho Publication mà mình mới tạo -> Finish

Trang 16

- Như thế này là đã thành công -> Close

- Lặp lại các bước trên với những yêu cầu còn lại và đây là kết quả

Trang 17

- Sau khi đã phân tán xong thì ta tiến hành các bước đưa dữ liệu đã phân tán vào các server con

- Click chuột phải vào dữ liệu -> New Subscriptions…- > Chọn publications vừa tạo -> Next

- Hộp thoại New Subscription Wizard sẽ xuất hiện -> tiếp tục nhấn Next

Trang 18

- Đến mục Subscribers thì ta chọn Add SQL Server Subscriber -> Chọn server con -> Connect

- Sau khi Connect xong, ở phần Subscription Database ta bấm vào dấu mũi tên hướng xuống, chọn New database…, đặt tên cho database rồi bấm OKvà tiếp tục

Trang 19

- Phần này các bạn chọn … ở Connection to Subscriber và tiến hành đăng nhập

- Đăng nhập xong thì ta bấm Next để tiếp tục

Trang 20

- Ở phần tiếp theo thì chọn Run continuously ở phần Agent Schdule và bấmFinish

PHẦN 3: CẤU TRÚC DỮ LIỆU noSQL-MongoDB (Cơ bản)Dữ liệu:

Trang 21

1, Chỉ xuất các document học sinh trong khối B

2, Xoá các học sinh có điểm Anh dưới 5

db.BT3.deleteMany({"Diem thi.Anh": {$lt: 5}})

Trang 22

3, Xoá thông tin học sinh có số id là 1

db.BT3.deleteOne({"_id": "1"})

4, Chỉ hiển thị 7 tài liệu trong database

5, Sửa khối của id "10" thành "C"

db.BT3.updateOne({"_id": "10"}, {$set: {"Khoi": "C"}})

6, Cho biết các nhóm khối và tính tổng học sinh trong khối đó

Trang 27

8, Cho biết thông tin và tính tổng điểm các học sinh, chỉ xuất các học sinh thi tổng điểm dưới 20 điểm

db.BT3.aggregate([{$addFields:{"Tong Diem":{$sum:["$Diem thi.Toan","$Diem thi.Ly","$Diem thi.Hoa","$Diem thi.Van","$Diem thi.Anh","$Diem thi.Sinh","$Diem thi.Su","$Diem thi Dia"]}}},{$match:{"Tong Diem":{$lt:20}}},])

Trang 30

9, Tìm các học sinh có tổng điểm trung bình các môn trên 6 điểm

db.BT3.aggregate([{$addFields:{"Tong Diem":{$avg:["$Diem thi.Toan","$Diem thi.Ly","$Diem thi.Hoa","$Diem thi.Van","$Diem thi.Anh","$Diem thi.Sinh","$Diem thi.Su","$Diem thi Dia"]}}},{$match:{"Tong Diem":{$gt:6}}},])

Trang 35

10, Hiển thị tất cả các học sinh có điểm Toán dưới 8 sắp xếp theo thứ tự điểm tăng dần

db.BT3.aggregate({$match:{"Diem thi.Toan":{$lt:8 }}},{$sort:{"Diem thi.Toan":1}})

Ngày đăng: 19/08/2024, 15:43