Upload
others
View
7
Download
0
Embed Size (px)
Citation preview
ỦY BAN NHÂN DÂN THÀNH PHỐ HỒ CHÍ MINH
TRƯỜNG CAO ĐẲNG KINH TẾ KỸ THUẬT
THÀNH PHỐ HỒ CHÍ MINH
GIÁO TRÌNH
MÔN HỌC: CƠ SỞ DỮ LIỆU NÂNG CAO
NGHỀ: HỆ THỐNG THÔNG TIN
TRÌNH ĐỘ: CAO ĐẲNG
Tháng 9, năm 2020
ỦY BAN NHÂN DÂN THÀNH PHỐ HỒ CHÍ MINH
TRƯỜNG CAO ĐẲNG KINH TẾ KỸ THUẬT
THÀNH PHỐ HỒ CHÍ MINH
GIÁO TRÌNH
MÔN HỌC: CƠ SỞ DỮ LIỆU NÂNG CAO
NGHỀ: HỆ THỐNG THÔNG TIN
TRÌNH ĐỘ: CAO ĐẲNG
THÔNG TIN CHỦ NHIỆM ĐỀ TÀI
Họ tên: Nguyễn Thị Kim Nga
Học vị: Cử nhân
Đơn vị: Khoa Công Nghệ Thông Tin
Email: [email protected]
TRƯỞNG KHOA TỔ TRƯỞNG
BỘ MÔN
CHỦ NHIỆM
ĐỀ TÀI
HIỆU TRƯỞNG
DUYỆT
Tháng 9, năm 2020
TUYÊN BỐ BẢN QUYỀN
Tài liệu này thuộc loại sách giáo trình nên các nguồn thông tin có thể được phép
dùng nguyên bản hoặc trích dùng cho các mục đích về đào tạo và tham khảo.
Mọi mục đích khác mang tính lệch lạc hoặc sử dụng với mục đích kinh doanh
thiếu lành mạnh sẽ bị nghiêm cấm.
KHOA CÔNG NGHỆ THÔNG TIN 1
LỜI GIỚI THIỆU
Giáo trình “Cơ sở dữ liệu nâng cao” được biên soạn theo chương trình khung ngành học
Hệ thống thông tin đã được Bộ lao động Thương binh và Xã hội ban hành.
Trong những năm qua, dạy nghề đã có những bước tiến vượt bậc cả về số lượng và chất
lượng, nhằm thực hiện nhiệm vụ đào tạo nguồn nhân lực kỹ thuật trực tiếp đáp ứng nhu
cầu xã hội. Cùng với sự phát triển của khoa học công nghệ trên thế giới, lĩnh vực công
nghệ thông tin nói chung và ngành hệ thống thông tin ở Việt Nam nói riêng đã có những
bước phát triển đáng kể.
Chương trình khung quốc gia nghề hệ thống thông tin đã được xây dựng trên cơ sở phân
tích nghề, phần kỹ thuật nghề được kết cấu theo các môn học, mô đun. Để tạo điều kiện
thuận lợi cho các cơ sở dạy nghề trong quá trình thực hiện, việc biên soạn giáo trình kỹ
thuật nghề theo theo các môn học, môđun đào tạo nghề là cấp thiết hiện nay.
Môn học cơ sở dữ liệu nâng cao là môn học đào tạo nghề được biên soạn theo hình thức
tích hợp lý thuyết và thực hành. Trong quá trình thực hiện, chủ biên đã tham khảo nhiều
tài liệu về cơ sở dữ liệu trong và ngoài nước, kết hợp với kinh nghiệm trong thực tế.
Mặc dầu có rất nhiều cố gắng, nhưng không tránh khỏi những khiếm khuyết, rất mong
nhận được sự đóng góp ý kiến của độc giả để giáo trình được hoàn thiện hơn.
Xin chân thành cảm ơn!
Thành Phố Hồ Chí Minh, ngày 18 tháng 9 năm 2020
Biên soạn
Nguyễn Thị Kim Nga
KHOA CÔNG NGHỆ THÔNG TIN 2
MỤC LỤC
LỜI GIỚI THIỆU ................................................................................................................ 1
GIÁO TRÌNH MÔN HỌC .................................................................................................. 3
CHƯƠNG 1: MỞ ĐÂU ....................................................................................................... 4
1.1 Các khái niệm cơ sở ............................................................................................................................. 4
1.2 Phân loại cơ sở dữ liệu ........................................................................................................................ 4
1.3 Mô hình hóa dữ liệu ............................................................................................................................. 5
1.4 Hệ quản trị cơ sở dữ liệu .................................................................................................................... 5
CHƯƠNG 2: TỐI ƯU HÓA TRUY VẤN .......................................................................... 9
2.1 Giới thiệu .................................................................................................................................................. 9
2.2 Quá trình thực hiện một câu truy vấn ........................................................................................... 9
2.3 Cây đại số quan hệ .............................................................................................................................. 10
2.4 Quá trình tối ưu .................................................................................................................................... 15
2.5 Thuật toán tối ưu ................................................................................................................................. 15
CHƯƠNG 3: QUẢN TRỊ NGƯỜI DÙNG ....................................................................... 17
3.1 Giới thiệu ................................................................................................................................................ 17
3.2 Tạo tài khoản và người sử dụng ................................................................................................... 18
3.3 Tạo nhóm người dùng ....................................................................................................................... 22
3.4 Phân quyền người dùng trên role ................................................................................................. 23
3.5 Hủy quyền truy cập user .................................................................................................................. 24
CHƯƠNG 4: HỆ CƠ SỞ DỮ LIỆU PHÂN TÁN ............................................................ 26
4.1 Dẫn nhập về kiến trúc client/server và giải pháp cho kiến trúc client/server ........... 26
4.2 Kiến trúc phân tán ............................................................................................................................... 28
4.3 Tổng quan về cơ sở dữ liệu phân tán .......................................................................................... 28
4.4 Thiết kế cơ sở dữ liệu phân tán ..................................................................................................... 31
4.5 Phân mảnh dữ liệu .............................................................................................................................. 32
4.6 Nhân bản dữ liệu ................................................................................................................................. 33
4.7 Cài đặt ...................................................................................................................................................... 34
TÀI LIỆU THAM KHẢO ................................................................................................. 71
MỤC LỤC HÌNH .............................................................................................................. 72
KHOA CÔNG NGHỆ THÔNG TIN 3
GIÁO TRÌNH MÔN HỌC
Tên môn học: CƠ SỞ DỮ LIỆU NÂNG CAO
Mã môn học: MH3101305
I. Vị trí, tính chất của môn học:
- Vị trí: Là môn học chuyên ngành, bố trí sau khi học xong môn học hệ quản trị cơ sở dữ
liệu, học kỳ 4.
- Tính chất: môn lý thuyết, môn học bắt buộc.
II. Mục tiêu môn học:
- Về kiến thức:
+ Trình bày được các khái niệm cơ bản về cơ sở dữ liệu
+ Trình bày được khái niệm quy trình thực hiện tối ưu hóa truy vấn
+ Trình bày được các khái niệm phân quyền, quản trị người dùng
+ Trình bày được khái niệm về cơ sở dữ liệu phân tán, hệ cơ sở dữ liệu phân tán
+ Phân biệt được cơ sở dữ liệu phân tán và cơ sở dữ liệu tập trung
+ Nhận biết các tính chất và đặc điểm của hệ cơ sở dữ liệu phân tán
+ Trình bày được các phương pháp 4phân mảnh dữ liệu, nhân bản dữ liệu, biến đổi truy
vấn toàn cục thành các truy vấn mảnh
-Về kỹ năng:
+ Mô hình hóa cơ sở dữ liệu
+ Biết tối ưu hóa các truy vấn trong cơ sở dữ liệu theo quan hệ 2 ngôi
+ Biết tạo user, gán vào role và login vào hệ thống
+ Biết tạo nhóm để phân quyền và quản trị người dùng trên cơ sở dữ liệu
+ Thiết kế được sơ đồ cơ sơ dữ liệu phân tán
+ Xây dựng truy vấn cơ sơ dữ liệu phân tán
+ Biến đổi truy vấn trong cơ sơ dữ liệu phân tán
- Về năng lực tự chủ và trách nhiệm:
+ Nhận thức được tầm quan trọng của việc xây dựng cơ sở dữ liệu trong phát triển hệ
thống thông tin
+ Rèn luyện khả năng tự học, tư duy sáng tạo.
Chương 1: Mở đầu
KHOA CÔNG NGHỆ THÔNG TIN 4
CHƯƠNG 1: MỞ ĐÂU
Giới thiệu:
Trong Chương 1 sẽ trình bày các khái niệm cơ bản về cơ sở dữ liệu, các mô hình
lược đồ dữ liệu, công dụng của hệ quản trị cơ sở dữ liệu, cuối cùng là phân loại và so
sánh các hệ quản trị cơ sở dữ liệu phổ biến hiện nay
Mục tiêu:
Trình bày được các khái niệm cơ bản về cơ sở dữ liệu
Trình bày được các mô hình lược đồ dữ liệu
Mô tả công dụng của hệ quản trị cơ sở dữ liệu
Phân loại và so sánh các hệ quản trị cơ sở dữ liệu phổ biến
Nội dung chính:
1.1 Các khái niệm cơ sở
1.1.1 Cơ sở dữ liệu
Một cơ sở dữ liệu (database) là một tập hợp có cấu trúc các dữ liệu tác nghiệp
được lưu trữ lại và được các hệ ứng dụng cụ thể sử dụng.
Ví dụ: ứng dụng quản lý kho hàng, hệ thống đặt chỗ máy bay, quản lý nguồn nhân lực
1.1.2 Hệ cơ sở dữ liệu
Hệ cơ sở dữ liệu (database system) là một hệ thống bao gồm 4 thành phần
- Cơ sở dữ liệu hợp nhất:
Cơ sở dữ liệu của hệ có hai tính chất tối thiểu hóa dư thừa và được chia sẻ.
- Những người sử dụng:
Bất kỳ một người nào có nhu cầu truy nhập vào cơ sở dữ liệu, bao gồm người sử
dụng cuối, người viết chương trình ứng dụng và người điều khiển toàn bộ hệ thống hay
còn gọi là người quản trị cơ sở dữ liệu.
- Phần mềm quản trị cơ sở dữ liệu
- Phần cứng:
Bao gồm các thiết bị nhớ thứ cấp được sử dụng để lưu trữ cơ sở dữ liệu
1.2 Phân loại cơ sở dữ liệu
- Cơ sở dữ liệu hướng đối tượng:
Tích hợp khái niệm đối tượng vào hệ quản trị cơ sở dữ liệu như: lớp, kế thừa…
- Cơ sở dữ liệu suy diễn:
Tăng khả năng suy diễn cho hệ quản trị cơ sở dữ liệu
- Cơ sở dữ liệu multimedia:
Chương 1: Mở đầu
KHOA CÔNG NGHỆ THÔNG TIN 5
Tích hợp vào hệ quản trị cơ sở dữ liệu khả năng quản lý văn bản, ảnh, âm thanh,
vidéo…
- Cơ sở dữ liệu phân tán:
Cho phép truy vấn và cập nhật dữ liệu từ các sites phân tán (địa lý)
1.3 Mô hình hóa dữ liệu
Khó tích hợp kiểu dữ liệu mới
Mô hình đơn giản: phân cấp của các liên kết chặt có thể bị bẻ gãy
Không phân biệt giữa các khái niệm khác nhau trong khi mô hình hóa: chỉ có khái
niệm quan hệ
Không mô hình hóa xử lý thông tin
1.4 Hệ quản trị cơ sở dữ liệu
Hệ quản trị cơ sở dữ liệu (database management system) viết tắt DBMS là một hệ
thống phần mềm cho phép tạo lập cơ sở dữ liệu và điều khiển mọi truy nhập đối với cơ sở
dữ liệu đó. Gồm 4 loại:
- Hệ quản trị cơ sở dữ liệu phân cấp:
Mô hình phân cấp được đưa ra vào những năm 1960, trong mô hình này dữ liệu
được tổ chức thành cấu trúc cây, các nút (node) là tập hợp các thực thể, các cành là các
mối quan hệ giữa hai nút theo mối quan hệ nhất định, cứng nhắc.
Là mô hình dữ liệu trong đó các bản ghi được sắp xếp theo cấ trúc top-down
(tree).
Một con chỉ có một cha , chỉ có một đường truy nhập tới dữ liệu đó trước.
Tập dữ liệu được tổ chức theo cấ u trúc của mô hình dữ liệu phân cấp gọi là cơ sở
dữ liệu phân cấp
Ví dụ:
Hinh 1.1 Mô hinh phân cấp quản lý nhân sự của một công ty
- Hệ quản trị cơ sở dữ liệu mạng:
Phòng ban
Dự án
Người thân Kỹ năng
Nhân viên
Thiết bị
Chương 1: Mở đầu
KHOA CÔNG NGHỆ THÔNG TIN 6
Mô hình mạng được đưa vào cuối những năm 1960. Trong mô hình này dữ liệu
được tổ chức thành một đồ thị có hướng, trong đó các đỉnh là các thực thể, các cung là
quan hệ giữa hai đỉnh, một kiểu bản ghi có thể liên kết với nhiều kiểu bản ghi khác.
Một con có thể có nhều cha, có nhiều đường truy nhập dẫn đến một dữ liệu cho
trước tập dữ liệu được tổ chức theo cấu trúc mô hình dữ liệu mạng gọi là cơ sở dữ liệu
mạng
Ví dụ:
Hinh 1.2 Mô hinh mạng quản lý nhân sự của một công ty
- Hệ quản trị cơ sở dữ liệu quan hệ:
Mô hình này được E.F Codd đưa vào đầu những năm 1970, mô hình này dựa trên
lý thuyết tập hợp và đại số quan hệ. Vì tính chất chặt chẽ của toán học về lý thuyết tập
hợp nên mô hình này đã mô tả dữ liệu một cách rõ ràng, mềm dẻo và là mô hình thông
dụng nhất hiện nay. Hầu hết các hệ quản trị cơ sở dữ liệu đều tổ chức dữ liệu theo mô
hình dữ liệu quan hệ. Trong đó dữ liệu được tổ chức dưới dạng bảng các phép toán thao
tác trên dữ liệu dựa trên lý thuyết tập hợp của toán học. Tập dữ liệu được tổ chức theo
cấu trúc của mô hình dữ liệu quan hệ gọi là cơ sở dữ liệu quan hệ.
Ví dụ:
Row
Table
Column
Hinh 1.3 Mô hinh quan hệ mô tả dữ liệu bảng
Record (bảng ghi)
Field (trường)
Tuple (bộ)
Attribute (thuộc tính)
Relation
Phòng ban
Dự án
Người thân
Nhân viên
Thiết bị
Chương 1: Mở đầu
KHOA CÔNG NGHỆ THÔNG TIN 7
- Hệ quản trị cơ sở dữ liệu nâng cao:
Là mô hình dữ liệu trong đó các thuộc tính dữ liệu và các phương thức thao tác
trên các thuộc tính đó đều được đóng gói trong các cấu trúc gọi là đối tượng
Tập dữ liệu được tổ chức theo cấu trúc của mô hình dữ liệu hướng đối tượng gọi
là cơ sở dữ liệu hướng đối tượng
Ví dụ:
Hinh 1.4 Mô hinh đối tượng quản lý nhân sự của một công ty
Phòng ban
Nhân viên
Thiết bị
Hiển thị
Nhân viên
Nhân viên
Họ tên
Phòng ban
Ngày vào làm
Tính thâm niên
Thiết bị
Tên thiết bị
Phòng ban
Hiển thị ds
Sử dụng TB
NV làm
theo giờ
Số giờ LV
Tính lương
NV làm theo
hợp đồng
Lượng lắm
cổ phần
Tính lương
Chương 1: Mở đầu
KHOA CÔNG NGHỆ THÔNG TIN 8
CÂU HỎI LÝ THUYẾT
Câu hỏi 1: Cơ sở dữ liệu là gì? Một hệ cơ sở dữ liệu gồm những thành phần gì?
Câu hỏi 2: Mô hình hóa dữ liệu là gì? Cho ví dụ một mô hình của cơ sở dữ liệu?
Câu hỏi 3: Trình bày tiêu chuẩn hóa hệ quản trị cơ sở dữ liệu bằng tiếp cận dựa vào các
thành phần
Chương 2: Tối ưu hóa truy vấn
KHOA CÔNG NGHỆ THÔNG TIN 9
CHƯƠNG 2: TỐI ƯU HÓA TRUY VẤN
Giới thiệu:
Trong Chương 2 sẽ trình bày được các phương pháp tối ưu hóa truy vấn. Sinh
viên biết cách tối ưu hóa truy vấn trong hệ quản trị cơ sở dữ liệu
Mục tiêu:
Trình bày được các phương pháp tối ưu hóa truy vấn
Tối ưu hóa truy vấn trong hệ quản trị cơ sở dữ liệu
Nội dung chính:
2.1 Giới thiệu
2.1.1 Truy vấn
Truy vấn (query) là một biểu thức được biểu diễn bằng một ngôn ngữ
thích hợp và dùng để xác định một phần dữ liệu được chứa trong cơ sở dữ liệu.
Một truy vấn có thể được dùng để xác định ngữ nghĩa của một ứng dụng,
hoặc nó có thể được dùng để xác định công việc can được thực hiện bởi một ứng dụng
nhằm để truy xuất cơ sở dữ liệu.
2.1.2 Tối ưu hóa truy vấn
Tối ưu hóa truy vấn còn được gọi là tối ưu hóa vấn tin là tiến trình lựa chọn kế
họach thực thi câu vấn tin một cách hiệu quả nhất.
Tối ưu hóa truy vấn giúp tốn ít tài nguyên nhất và hồi đáp nhanh nhất.
2.2 Quá trinh thực hiện một câu truy vấn
Quá trình thực hiện một câu truy vấn/ vấn tin gồm 5 bước:
- Bước 1: Kiểm tra ngữ pháp (syntax checking)
Trong bước này, hệ quản trị cơ sở dữ liệu (database management system) viết
tắt là DBMS sẽ kiểm tra ngữ pháp của truy vấn ban đầu (SQL query). Nếu truy vấn bị
sai ngữ pháp thì DBMS sẽ thông báo truy vấn bị sai ngữ pháp và truy vấn này sẽ
không được thực hiện. Nếu truy vấn đúng ngữ pháp (syntactically correct SQL query)
thì DBMS sẽ tiếp tục thực hiện bước 2.
- Bước 2: Kiểm tra sự hợp lệ (validation)
Trong bước này, DBMS sẽ thực hiện các công việc:
+ Kiểm tra sự tồn tại của các đối tượng dữ liệu (các cột, các biến, các bảng, …) của
truy vấn trong cơ sở dữ liệu.
+ Kiểm tra sự hợp lệ về kiểu dữ liệu của các đối tượng dữ liệu (các cột, các biến, vv…)
trong truy vấn.
Chương 2: Tối ưu hóa truy vấn
KHOA CÔNG NGHỆ THÔNG TIN 10
- Bước 3: Đưa về dạng biểu diễn trong đại số quan hệ
Truy vấn ban đầu được biến đổi thành một biểu thức đại số quan hệ hay còn gọi
là truy vấn đại số quan hệ (relational algebra query)
- Bước 4: Tối ưu hóa biểu thức đại số quan hệ (relational algebra optimization)
Trong bước này DBMS sử dụng các phép biến đổi tương đương của đại số quan
hệ để biến đổi biểu thức đại số quan hệ có được ở bước 3 thành một biểu thức đại số
quan hệ tương đương (theo nghĩa chúng có cùng một kết quả) nhưng biểu thức sau sẽ
hiệu quả hơn: loại bỏ các phép toán không cần thiết và giảm vùng nhớ trung gian. Cuối
bước này, DBMS tạo ra một truy vấn đại số quan hệ đã được tối ưu hoá (optimized
relational algebra query).
- Bước 5: Sinh mã (code genesite)
Viết ra ngôn ngữ chủ của hệ quản trị cơ sở dữ liệu
Ví dụ: Thuật toán cài đặt 3 hàm gồm:
Hàm Projection (x, q, r) -> trả phép chiếu
Hàm Selection (e, q, k) -> trả phép chọn
Hàm Join (s, r, t) -> trả phép nối
2.3 Cây đại số quan hệ
2.3.1 Đại số quan hệ là gi?
Đại số quan hệ (relational algebra) là một bộ các toán tử và quy tắc được sử
dụng để thao tác trên các quan hệ và kết quả trả về là một quan hệ mới. Sau khi Edgar
F. Codd đưa ra mô hình dữ liệu quan hệ vào năm 1970, đại số quan hệ được xem là
nền tảng cho các ngôn ngữ truy vấn dữ liệu nói chung và SQL nói riêng. SQL cung
cấp cú pháp đơn giản nhưng mạnh mẽ, giúp người dùng có được các kết quả mong
muốn mà không cần nêu rõ cách thức để đạt được điều đó như thế nào. Tuy nhiên, với
những vấn đề và yêu cầu mang tính phức tạp, việc viết một câu truy vấn chính xác và
hiệu quả đòi hỏi phải có hiểu biết về cấu trúc dữ liệu và cách thức hoạt động của ngôn
ngữ truy vấn. Vì vậy nắm vững các kiến thức về đại số quan hệ sẽ là nền tảng để việc
tìm hiểu về SQL trở nên dễ dàng hơn.
Các phép toán trong đại số quan hệ có thể được chia thành ba loại: Phép toán
tập hợp, phép chọn và các phép toán mở rộng.
2.3.1.1 Phép toán tập hợp
Bao gồm: Phép hội (set union), phép giao (set intersection), phép hiệu (set
defference) và phép tích (castesian product)
- Phép hội (set union)
Chương 2: Tối ưu hóa truy vấn
KHOA CÔNG NGHỆ THÔNG TIN 11
Hội hai quan hệ sẽ được một quan hệ mới có các bộ chỉ thuộc một quan hệ.
Các bộ trùng nhau sẽ bị loại đi.
Phép hội được biểu diễn qua biểu thức sau:
R ∪ S = { t │t € R ∨ t € S } Với R và S là 2 quan hệ khả hợp
- Phép giao (set intersection)
Một quan hệ mới chỉ bao gồm các bộ đồng thời thuộc hai qua hệ ban đầu.
Phép giao được biểu diễn qua biểu thức sau:
R ∩ S = { t │t € R ∧ t € S } Với R và S là 2 quan hệ khả giao
- Phép hiệu (set defference)
Phép hiệu trong đại số quan hệ có nét tương đồng với phép hiệu đại số thông
thường.
Phép hiệu của R và S sẽ cho kết quả là một quan hệ bao gồm các bộ chỉ thuộc R
mà không thuộc S nghĩa là quan hệ kết quả chỉ có một bộ duy nhất.
R - S = { t │t € R ∧ t ∉ S } Với R và S là 2 quan hệ khả hiệu
- Phép tích (castesian product)
Một quan hệ mới có số bộ bằng tích số giữa số bộ.
Đây là điều khác biệt giữa phép tích và các phép hội, phép giao và phép hiệu.
Phép tích sẽ làm phát sinh tổ hợp cả về “hai chiều”, điều đó làm nảy sinh
trường hợp tồn tại những bộ trong quan hệ kết quả không mang nhiều ý nghĩa. Do đó
phép tích thường đi kèm với một điều kiện nào đó để loại trừ đi những kết quả không
mong muốn.
R х S = {(a1,..., am, b1,...,bn│(a1,..., am) € R ∧ (b1,...,bn) € S}
2.3.1.2 Phép chọn/cắt ngang (select)
Phép chọn được sử dụng để chọn một tập hợp các bộ thoả mãn điều kiện chọn
từ một quan hệ. Ta có thể xem phép chọn như một bộ lọc, nó chỉ giữ lại các bộ thoả
mãn điều kiện đặt ra.
Phép chọn được ký hiệu là: σ< điều kiện chọn>( R). Trong đó:
+ σ: là ký hiêu phép chọn
+ <Điều kiện chọn>: là một biểu thức lôgic được chỉ ra trên các thuộc tính
của R. Một điều kiện chọn có dạng: <tên thuộc tính> <phép so sánh> <giá trị
hằng>. Trong đó:
<tên thuộc tính>: là tên của một thuộc tính trong R
Chương 2: Tối ưu hóa truy vấn
KHOA CÔNG NGHỆ THÔNG TIN 12
<phép so sánh>: là một trong các phép toán so sánh {<, <=, =,
>=, >, ≠}
<giá trị hằng>: là một giá trị hằng từ miền giá trị của thuộc tính.
Các hạng mục có thể được nối với nhau bằng các phép toán lô gic
AND, OR, NOT để tạo ra một điều kiện chọn chung
+ R: là một biểu thức đại số quan hệ.
Kết quả của một biểu thức đại số quan hệ là một quan hệ. Quan hệ kết quả của
phép chọn có cùng thuộc tính như R.
Ví dụ: Chọn các bộ NHÂNVIÊN thuộc về đơn vị có mã số là 4 hoặc các bộ
NHÂNVIÊN có lương lớn hơn 3000 ta viết như sau:
σ< Mãsố = 4>( NHÂNVIÊN)
σ< Lương > 3000>( NHÂNVIÊN)
Phép chọn là phép toán một ngôi, nghĩa là nó được áp dụng cho một quan hệ.
Hơn nữa, phép chọn được áp dụng cho từng bộ một cách độc lập, vì vậy, các điều kiện
chọn không thể liên quan đến nhiều bộ. Quan hệ kết quả của phép chọn có cấp giống
như cấp của R. Số các bộ trong quan hệ kết quả luôn luôn nhỏ hơn hoặc bằng số các
bộ trong R.
Phép chọn là một phép toán có tính chất giao hoán, nghĩa là:
σ < Điều kiện 1> (σ< Điều kiện 2>( R)) = σ< Điều kiện 2> (σ< Điều kiện 1>( R))
Hơn nữa ta có thể kết hợp một loạt các phép chọn thành một phép chọn đơn
giản bằng cách sử dụng phép toán AND.
Ví dụ:
σ< Điều kiện 1> (σ< Điều kiện 2>( R)) = σ< Điều kiện 2>AND< Điều kiện 1>( R)
2.3.1.3 Phép chiếu/cắt dọc (project)
Phép chiếu là phép toán chọn một số cột của bảng. Phép chiếu dùng để chiếu
lên các thuộc tính đó.
Phép chiếu được ký hiệu là: π<danh sách các thuộc tính>( R). Trong đó:
+ π: là ký hiệu dùng để biểu diễn phép chiếu
+ <danh sách các thuộc tính>: là một danh sách con các thuộc tính của
quan hệ R.
+ R: là một biểu thức đại số quan hệ.
Kết quả của phép chiếu là một quan hệ chỉ có các thuộc tính nằm trong <danh
sách các thuộc tính> và có cùng thứ tự như thứ tự của chúng có trong danh sách. Phép
Chương 2: Tối ưu hóa truy vấn
KHOA CÔNG NGHỆ THÔNG TIN 13
chiếu loại bỏ mọi bộ trùng lặp, kết quả của phép chiếu là một tập hợp các bộ và là một
quan hệ đúng đắn.
Phép chiếu không có tính giao hoán, nghĩa là:
π< danh sách1>(π< danh sách2> ( R)) = π< danh sách 1> ( R)
Ví dụ: Chiếu kết quả là một quan hệ NHÂNVIÊN có các thuộc tính MãsốNV, Họđệm,
Tên, địa chỉ, Lương ta viết như sau:
π < MãsốNV, Họđệm,Tên, địa chỉ,Lương>(NHÂNVIÊN)
2.3.1.4 Phép nối (join)
Phép nối được dùng để kết hợp các bộ có liên hệ với nhau từ hai quan hệ thành
một bộ. Phép toán này rất quan trọng đối với cơ sở dữ liệu quan hệ có nhiều bảng bởi
vì nó cho phép ta xử lý các mối liên kết giữa các quan hệ. Dạng tổng quát của phép nối
trên hai quan hệ R (A1, A2,…,An) và S (B1,B2,…, Bm)
Phép nối được ký hiệu là: ⋈ (R)< Điều kiện nối> (S). Trong đó:
+ R, S: là một quan hệ
+ <Điều kiện nối> chỉ ra trên các thuộc tính của hai quan hệ R và S. Một
điều kiện nối tổng quát có dạng: <điều kiện> AND <điều kiện> AND … AND <điều
kiện>. Trong đó:
<điều kiện> có dạng Ai θ Bj, Ai là một thuộc tính của R, Bj là
một thuộc tính của S, Ai và Bj có cùng miền và θ là một trong
các dấu phép toán so sánh {<, <=, =, >=, >, ≠}.
Kết quả của phép nối là một quan hệ Q (A1,A2,…,An, B1,B2,…,Bm) có n+m
thuộc tính. Mỗi bộ của Q là một sự kết nối giữa một bộ của R và một bộ của S khi
chúng thoả mãn điều kiện nối.
Ví dụ: Q = R ⋈ S A θ B
2.3.2 Cây đại số quan hệ
Được sử dụng để biểu diễn một biểu thức đại số quan hệ
Các quan hệ tham gia vào biểu thức là các Node lá
Các phép toán quan hệ là các node của cây và sắp xếp theo thứ tự thực hiện của
chúng
Node gốc là phép chiếu để có kết quả cuối cùng
Ví dụ: Cho các quan hệ sau:
SINHVIEN (MSSV, HOTEN, NAMSINH, PHAI, DIACHI, MSLOP)
Chương 2: Tối ưu hóa truy vấn
KHOA CÔNG NGHỆ THÔNG TIN 14
LOP (MSLOP, TENLOP)
MONHOC (MSMH, TENMH)
HOC (MSSV, MSMH, DIEM)
Trong đó :
SINHVIEN: chứa thông tin về sinh viên gồm: mã sinh viên (MSSV), họ tên
(HOTEN), năm sinh (NAMSINH), phái (PHAI), địa chỉ (DIACHI), thuộc lớp
(MSLOP). Khóa là MSSV.
LOP: chứa thông tin về lớp học gồm: mã lớp (MSLOP), tên lớp (TENLOP. Khóa là
MSLOP.
MONHOC: chứa thông tin về môn học gồm: mã môn học (MSMH), tên môn học
(TENMH).
HOC: chứa thông tin về sinh viên (MSSV) học môn học (MSMH) có điểm thi cuối Kỳ
(DIEM). Khóa là MSSV và MSMH
Yêu cầu: Lấy ra danh sách những sinh viên của lớp L001 đã học môn cơ sở dữ liệu có
điểm >8
- Bước 2: Giải yêu cầu bằng câu lệnh SQL
Select HOC.MSSV, HOTEN, DIEM
From HOC, SINHVIEN, MONHOC
Where HOC.MSSV = SINHVIEN.MSSVAnd HOC.MSMH = MONHOC.MSMH
And TENMH = ‘cơ sở dữ liệu’And DIEM>8 And MSLOP = ‘L001’
- Bước 3: Giải yêu cầu bằng cây đại số quan hệ
Π (σ TENMH = ‘cơ sở dữ liệu’ ((HOC ⋈ SINHVIEN ⋈ MONHOC)) AND MSLOP = ‘L001’ AND DIEM>8
MSSV, HOTEN, DIEM
- Bước 4: Tối ưu hóa
Π MSSV, HOTEN, DIEM -> PHÉP CHIẾU CUỐI CÙNG
σ TENMH = ‘cơ sở dữ liệu’ AND MSLOP = ‘L001’ AND DIEM > 8
⋈
⋈
Hinh 2.1 Tối ưu hóa câu truy vấn bằng cây đại số quan hệ
(Diễn giải: HOC, SINHVIEN là 2 node lá kết với nhau)
SINH
VIEN HOC
MON
HOC
Chương 2: Tối ưu hóa truy vấn
KHOA CÔNG NGHỆ THÔNG TIN 15
2.4 Quá trinh tối ưu
Quá trình tối ưu gồm 2 cách thực hiện:
- Cách 1: Chiến lược tối ưu
Nhằm đạt được tốc độ nhanh, bộ nhớ chiếm dụng ít.
- Cách 2: Chiến thuật tối ưu
Thực hiện các phép toán 1 ngôi trước khi còn có thể sao đó mới thực hiện các
phép toán 2 ngôi (tách gọn quan hệ tham gia vào 2 ngôi thành hàng dọc chỉ giữ lại
những quan hệ cần và hàng ngang cũng vậy hoặc đẩy các phép chọn khi còn có thể,
đẩy các phép chiếu lấy tập hiệu các quan hệ)
Ví dụ
Π MSSV, HOTEN, DIEM -> PHÉP CHIẾU CUỐI CÙNG
⋈
⋈ σ TENMH = ‘cơ sở dữ liệu’
Π
σ DIEM > 8 σ MSLOP = ‘L001’
Hinh 2.2 Tối ưu hóa câu truy vấn theo thuật toán 2 ngôi
2.5 Thuật toán tối ưu
Từ Select, from, where ban đầu
Xây dựng cây đại số quan hệ đầu tiên
SQL dựa vào từ khóa Select, From, Where
Sao đó đẩy các phép chọn xuống
Sao đó đẩy các phép chiếu xuống đến khi không đẩy được nữa thì được cây này
là cây tối ưu.
Kết luận: Từ đại số quan hệ viết được cây, từ cây viết lại đại số quan hệ được vì
nó là mối quan hệ 2 chiều
SINH
VIEN HOC
MON
HOC
Chương 2: Tối ưu hóa truy vấn
KHOA CÔNG NGHỆ THÔNG TIN 16
CÂU HỎI LÝ THUYẾT
Câu hỏi 1: Trình bày 5 bước liên tiếp của tầng phân rã vấn tin
Câu hỏi 2: Trình bày các chiến lược tìm kiếm
BÀI TẬP THỰC HÀNH
Bài tập 1: Cho các quan hệ sau:
EMP (ENO, ENAME, TITLE)
PROJ (PNO, PNAME, BUDGET)
PAY (TITLE, SAL)
ASG (ENO, PNO, DUR, RESP)
Xét câu vấn tin như sau:
SELECT ENAME, RESP
FROM EMP, ASG, PROJ
WHERE EMP.ENO = ASG.ENO
AND PNAME = “CAD/CAM”
AND DUR>=36
AND TITLE = “PROGRAMMER”
Yêu cầu: Hãy vẽ đồ thị vấn tin và chỉ ra chổ sai của vấn tin này
Bài tập 2: Cho các quan hệ sau:
EMP (ENO, ENAME, TITLE)
PROJ (PNO, PNAME, BUDGET)
PAY (TITLE, SAL)
ASG (ENO, PNO, DUR, RESP)
Giả sử EMP và ASG được phân mảnh thành
EMPH1 = ENO <= “E3” (EMP)
EMPH2 = σ “E3” < ENO <= “E6” (EMP)
EMPH3 = σ ENO > “E6” (EMP)
ASGH1 = σ ENO <= “E3” (ASG)
ASGH2 = σ ENO > “E3” (ASG)
Xét câu vấn tin nối
SELECT * FROM EMP, ASG
WHERE EMP.ENO = ASG.ENO
Yêu cầu: Hãy vẽ cây vấn tin gốc và cây vấn tin rút gọn
Chương 3: Quản trị người dùng
KHOA CÔNG NGHỆ THÔNG TIN 17
CHƯƠNG 3: QUẢN TRỊ NGƯỜI DÙNG
Giới thiệu:
Trình bày được các khái niệm phân quyền, quản trị người dùng. Sinh viên biết
cách tạo được user và nhóm. Đồng thời quản trị được người dùng như: phân quyền sử
dụng và hủy quyền truy cập trên user.
Mục tiêu:
Trình bày được các khái niệm phân quyền, quản trị người dùng
Tạo được user, nhóm
Quản trị người dùng: phân quyền sử dụng và hủy quyền truy cập trên user
Nội dung chính:
3.1 Giới thiệu
3.1.1 Phân quyền là gì?
Phân quyền (permission) là tạo một tài khoản và giới hạn tài khoản đó. Các loại
quyền:
+ Insert: quyền thêm hoặc chèn dữ liệu bảng (table)
+ Update: quyền cập nhật dữ liệu bảng (table)
+ Select: quyền xem dữ liệu bảng (table)
+ Delete: quyền xóa dữ liệu bảng (table)
+ References: quyền tạo ràng buộc tham chiếu bảng (table)
+ Alter: quyền thay đổi định nghĩa bảng
+ All: không trao tất cả quyền trên bảng mà trao các quyền theo chuẩn Ansi-92,
gồm Select, Insert, Update, Delete và References
Ví dụ: Giả sử ta có database QuanLySinhVien, và muốn phân quyền Select, Insert,
Update, Delete trên bảng nhanvien cho người dùng tên là user1
3.1.2 Quản trị người dùng
Quản trị người dùng (administration of users) là giải pháp cho phép các quản trị
viên thiết lập quyền hạn cho người dùng hoặc nhóm người dùng khai thác cơ sở dữ
liệu.
Người dùng hoặc nhóm người dùng sau khi được cấp quyền, có thể đăng nhập
vào hệ thống và thực hiện các quyền hạn mà mình được cấp.
Quản trị người dùng giúp phân quyền người dùng trên cơ sở dữ liệu.
Chương 3: Quản trị người dùng
KHOA CÔNG NGHỆ THÔNG TIN 18
Ví dụ:
User A User B
Đối tượng được cấp (Table, View....)
Quyền được cấp (Insert, Update,
Select, Delete Delete
Hinh 3.1 Phân quyền trên cơ sở dữ liệu
3.2 Tạo tài khoản và người sử dụng
3.2.1 Tạo tài khoản
Mục đích việc tạo tài khoản (login) là để kết nối vào cơ sở dữ liệu (database).
Có 2 bước tạo tài khoản người dùng
- Bước 1: Click chuột phải vào login và chọn new login
Hinh 3.2 Tạo tài khoản SQL Server
- Bước 2: Khai báo tên đăng nhập và click chọn SQL server authentication
QLBH QLSV
Database
Quyền khai thác
Chương 3: Quản trị người dùng
KHOA CÔNG NGHỆ THÔNG TIN 19
Hinh 3.3 Khai báo tạo tài khoản SQL server
3.2.2 Tạo người sử dụng (user)
Trong 1 server có nhiều user, tên user có thể trùng nhau
Trong 1 database có nhiều user, tên user không được trùng nhau
Trong 1 server có nhiều login, tên login khồng được trùng nhau, 1 login chỉ
thuộc 1 user
Có 2 bước tạo user:
- Bước 1: Mở rộng sercurity trên database, click chuột phải vào users và chọn new
users
Chương 3: Quản trị người dùng
KHOA CÔNG NGHỆ THÔNG TIN 20
Hinh 3.4 Tạo người sử dụng
- Bước 2: Khai báo tên sử dụng và click chọn SQL server authentication
Hinh 3.5 Khai báo tạo người sử dụng
3.2.3 Cấp quyền cho người dùng
- Bước 1: Click chuột phải lên bảng (table) hoặc cơ sở dữ liệu (database),
chọn Properties
Chương 3: Quản trị người dùng
KHOA CÔNG NGHỆ THÔNG TIN 21
Hinh 3.6 Cấp quyền cho người dùng
Hinh 3.7 Cấp quyền cho người dùng
- Bước 2: Thiết lập quyền
Chương 3: Quản trị người dùng
KHOA CÔNG NGHỆ THÔNG TIN 22
Hinh 3.8 Thiết lập quyền
3.3 Tạo nhóm người dùng
3.3.1 Khái quát
Nhóm (role) trong SQL server bao gồm một hoặc nhiều user, điều này cũng
tương tự như trong công ty hoặc tổ chức mỗi phòng ban có một hoặc nhiều nhân viên.
Như vậy thay vì chúng ta cấp quyền cho từng user, người quản trị có thể cấp
quyền theo nhóm. Và những user thuộc nhóm quyền nào sẽ có tất cả quyền của nhóm
đó. Do đó, khi người quản trị thực hiện thêm bớt quyền sẽ dễ dàng hơn.
3.3.2 Các bước thực hiện
STT Công dụng Cú pháp
Bước 1 Tạo nhóm Create Role ‘Tên_Nhóm’ hoặc
Sp_AddRole ‘Tên_Nhóm’
Chương 3: Quản trị người dùng
KHOA CÔNG NGHỆ THÔNG TIN 23
Bước 2 Cấp quyền cho nhóm Grant Quyền On Bảng To ‘Tên_Nhóm’
Bước 3 Thêm user vào nhóm Sp_AddRoleMember ‘Tên_Nhóm’,
‘Tên_User’
Ví dụ: Cấp quyền cho nhóm tên Nhanvien có quyền xem dữ liệu trên cơ sở dữ liệu
QuanLyBanHang, trong nhóm này có một user là NV1 ta thực hiện như sau:
Bước 1 Tạo nhóm Create role Nhanvien
Bước 2 Cấp quyền cho nhóm Grant select to Nhanvien
Bước 3 Tạo login tên NV1, mật
khẩu Abc123
Create Login NV1 With Password = ‘Abc123’
Bước 4 Tạo user NV1 sử dụng
login NV1
Create User NV1 For Login NV1
Bước 5 Thêm user NV1 vào
nhóm Nhanvien
Sp_addRoleMember ‘Nhanvien’, ‘NV1’
3.4 Phân quyền người dùng trên role
3.4.1 Mối quan hệ giữa user và role
User nằm trong role cho nên cần phải xóa user trước khi xóa role nhưng cần
kiểm tra xem user có được ánh xạ đến database nào khác ngoài database mặc định ứng
với user lúc được tạo hay không, nếu có thì ta cũng cần phải hủy việc ánh xạ này đi
sau đó nếu cần mới xóa được các login
3.4.2 Áp đặt các quyền cho role
Chức năng Cú pháp
Quyền truy cập đến
database
Exec sp_grantdbaccess ‘tên user’, ‘tên login’
Quyền trên role Grant Select, Update, Insert, Delete on ‘tên Table’ to ‘tên
Role’
Quyền gán các user vào
các role
Exec sp_addrolemember ‘tên Role’ , ‘tên User’
Chương 3: Quản trị người dùng
KHOA CÔNG NGHỆ THÔNG TIN 24
3.5. Hủy quyền truy cập user
STT Công dụng Cú pháp
Bước 1 Khai báo các quyền
cần hủy
Revoke (Deny), Select, Insert, Update, Delete,
References, Alter, All on ‘tên Table’ to ‘tên
Role’
Bước 2 Cho thực thi thủ tục để
hủy quyền
Exec HuyQuyen Select, Insert, Update, Delete,
References, Alter, All ’Tên Role’
Ví dụ: Thu hồi quyền Delete trên bảng nhanvien của người dùng user1, ta thực hiện
như sau:
Revoke Delete on nhanvien to user1
Chương 3: Quản trị người dùng
KHOA CÔNG NGHỆ THÔNG TIN 25
CÂU HỎI LÝ THUYẾT
Câu hỏi 1: Trình bày các loại quyền trong phân quyền
Câu hỏi 2: Hãy nêu các bước thực hiện tạo nhóm người dùng
BÀI TẬP THỰC HÀNH
Bài tập 1:
Giả sử đã có cơ sở dữ liệu QL_VATTU.Sử dụng cơ sở dữ liệu trên thực hiện
các yêu cầu sau:
a) Yêu cầu 1: Tạo user
User1 = Congty; Pass = 123
User2 = Chinhanh; Pass = 456
Sau đó gán quyền truy cập để đăng nhập vào hệ thống
b) Yêu cầu 2: Phân quyền
Nhóm 1: Role tên User. Cho phép cập nhật dữ liệu, không được tạo tài khoản
mới cho hệ thống
Nhóm 2: Role tên Congty. Cho phép xem dữ liệu trên bất kỳ chi nhánh nào
Nhóm 3: Role tên Chinhanh. Cho phép toàn quyền thao tác dữ liệu thuộc chi
nhánh đó
Bài tập 2:
Giả sử trường có cơ sở dữ liệu THI_TN. Sử dụng cơ sở dữ liệu trên thực hiện
các yêu cầu sau:
a) Yêu cầu 1: Tạo user
User1 = Congty; Pass = 123
User2 = Chinhanh; Pass = 456
Sau đó gán quyền truy để đăng nhập vào hệ thống
b) Yêu cầu 2: Phân quyền
Nhóm 1: Role tên Truong. Cho phép xem dữ liệu trên bất kỳ cơ sở nào
Nhóm 2: Role tên Coso_X. Cho phép toàn quyền thao tác dữ liệu thuộc cơ sở
đó
Nhóm 3: Role tên Giangvien. Cho phép cập nhật đề thi
Nhóm 4: Role tên Sinh viên. Cho phép dự thi
Chương 4: Hệ cơ sở dữ liệu phân tán
KHOA CÔNG NGHỆ THÔNG TIN 26
CHƯƠNG 4: HỆ CƠ SỞ DỮ LIỆU PHÂN TÁN
Giới thiệu:
Trình bày được khái niệm về cơ sở dữ liệu phân tán, hệ cơ sở dữ liệu phân tán.
Phân biệt được sự khác nhau giữa cơ sở dữ liệu phân tán và cơ sở dữ liệu tập trung.
Nhận biết các tính chất và đặc điểm của hệ cơ sở dữ liệu phân tán. Ngoài ra, sinh viên
còn trình bày được các phương pháp phân mảnh dữ liệu, nhân bản dữ liệu, biến đổi
truy vấn toàn cục thành các truy vấn mảnh
Mục tiêu:
Trình bày được khái niệm về cơ sở dữ liệu phân tán, hệ cơ sở dữ liệu phân tán
Phân biệt được cơ sở dữ liệu phân tán và cơ sở dữ liệu tập trung
Nhận biết các tính chất và đặc điểm của hệ cơ sở dữ liệu phân tán
Trình bày được các phương pháp phân mảnh dữ liệu, nhân bản dữ liệu, biến đổi
truy vấn toàn cục thành các truy vấn mảnh
Nội dung chính:
4.1 Dẫn nhập về kiến trúc client/server và giải pháp cho kiến trúc client/server
4.1.1 Dẫn nhập về kiến trúc client/server
4.1.1.1 Các khái niệm:
Client: là những ứng dụng chạy trên các máy tính sử dụng các dịch vụ hoặc tài
nguyên mà server có cung cấp. Phụ thuộc vào server về mặt tài nguyên: tập tin, thiết bị
và các xử lý.
Server: là máy chủ hay còn gọi là máy phục vụ. Các máy tính xử lý mạnh phục
vụ cho việc quản lý các tài nguyên: ổ đĩa (file server), máy in (printer server), quản lý
đường truyền mạng (network server) hoặc thực hiện các tính toán back-end khác.
Ngoài ra còn lưu trữ và bảo vệ dữ liệu, xử lý những yêu cầu được gửi đến từ máy
khách
Kiến trúc client/server: là kiến trúc tính toán trong đó các xử lý và dữ liệu được
phân bố trên các máy chủ (server) và máy khách /trạm (client) một cách hợp lý nhằm
khai thác tối đa khả năng của hệ thống và tăng tính bảo mật của dữ liệu trên server.
Kiến trúc mạng làm việc mà trong đó mỗi máy tính hoặc xử lý trên mạng đóng vai trò
như là một máy client hoặc server. Mỗi client hoặc server kết nối vào mạng làm việc
có thể được gọi là một node
4.1.1.2 Các loại kiến trúc client/server
Kiến trúc 1 lớp: client tạo giao diện người dùng, server tính toán chức năng và
quản lý truy cập dữ liệu
Chương 4: Hệ cơ sở dữ liệu phân tán
KHOA CÔNG NGHỆ THÔNG TIN 27
Kiến trúc 2 lớp: client tạo giao diện người dùng và tính toán chức năng, server
thực hiện việc truy cập dữ liệu. Kiến trúc 2 lớp phù hợp ở những môi trường nhỏ
Kiến trúc 3: client tạo giao diện người dùng và tính toán chức năng (1), server
tính toán chức năng (2) và quản lý truy cập dữ liệu. Đây là kiến trúc tối ưu nhất
Các bước thực hiện:
STT Chức năng
Bước 1 Tạo giao diện (presentation)
Bước 2 Tính toán chức năng (application processing)
Bước 3 Truy cập dữ liệu (data management)
Ví dụ 1: client tạo giao diện, server tính toán chức năng và truy cập dữ liệu
Server Server
Client
Hinh 4.1 Kiến trúc 1 Client/Server
Ví dụ 2: Client tạo giao diện và tính toán chức năng, Server truy cập dữ liệu
Client Server
Client
Hinh 4.2 Kiến trúc 2 Client/Server
Ví dụ 3: client tạo giao diện và tính toán chức năng (1), server tính toán chức năng (2)
và truy cập dữ liệu. Client Client Server
Client
Hinh 4.3 Kiến trúc 3 Client/Server
Tính
toán
chức
năng
Giao diện Truy
cập dữ
liệu
Tính
toán
chức
năng
Giao diện Truy
cập dữ
liệu
Tính
toán
chức
năng (1)
Giao diện Truy
cập dữ
liệu
Tính
toán
chức
năng (2)
Chương 4: Hệ cơ sở dữ liệu phân tán
KHOA CÔNG NGHỆ THÔNG TIN 28
4.1.2 Giải pháp cho kiến trúc client/server
STT Hệ điều hành Hệ quản trị CSDL Công cụ phát triển
Giải pháp Microsoft Window Server SQL Server Visual Studio
Giải pháp Oracle Windows/Linux/Unix Oracle Server Developer 2000
4.2 Kiến trúc phân tán
Phân tán (distributed) là dữ liệu được phân tán trên các site của mạng mục đích
để các dữ liệu phân tán được hợp nhất lại với nhau
Tại sao cần phân tán dữ liệu: mục đích là để đáp ứng với tổ chức phân tán của
các công ty, mục tiêu là đưa dữ liệu đến càng gần người dùng càng tốt.
Kiến trúc phân tán là một tập hợp client/server được kết nối với nhau nhằm chia
sẻ dữ liệu. Một người dùng nối vào hệ thống thì xem như làm việc với một
client/server duy nhất.
4.3 Tổng quan về cơ sở dữ liệu phân tán
4.3.1 Cơ sở dữ liệu phân tán
Cơ sở dữ liệu phân tán (distributed database) là một tập hợp các cơ sở dữ liệu
có quan hệ với nhau về mặt logic và được phân bố trên một mạng máy tính. Để tạo
một cơ sở dữ liệu phân tán các file không chỉ có quan hệ với nhau về mặt logic mà còn
cần có một cấu trúc giao diện chung giữa chúng để các file có thể truy cập lẫn nhau.
Ví dụ:
Xét một ngân hàng có ba chi nhánh nằm ở ba nơi khác nhau. Tại mỗi chi
nhánh, một hệ thống máy tính điều khiển các trạm thu hay rút tiền và quản lý cơ sở dữ
liệu về tài khoản. Mỗi hệ thống này với cơ sở dữ liệu tài khoản cục bộ tạo thành một
site của cơ sở dữ liệu phân tán. Các hệ thống máy tính này được kết nối bởi một mạng
truyền thông.
Với những hoạt động thông thường, các yêu cầu từ các trạm chỉ cần truy xuất
đến cơ sở dữ liệu tại chi nhánh của chúng. Vì thế ứng dụng này được gọi là ứng dụng
cục bộ.
Về mặt kỹ thuật, chúng ta thấy cần có các ứng dụng mà truy xuất dữ liệu đang
đặt ở nhiều nhánh. Các ứng dụng này được gọi là ứng dụng toàn cục hay ứng dụng
phân tán.
Một ứng dụng toàn cục thông thường trong ví dụ trên là việc chuyển tiền từ một
tài khoản này đến tài khoản khác. Ứng dụng này yêu cầu cập nhật cơ sở dữ liệu ở cả
hai nhánh.
Chương 4: Hệ cơ sở dữ liệu phân tán
KHOA CÔNG NGHỆ THÔNG TIN 29
Hơn nữa ứng dụng toàn cục giúp cho người sử dụng không phân biệt được dữ
liệu đó cục bộ hay từ xa. Đó là tính trong suốt dữ liệu trong cơ sở dữ liệu phân tán. Và
đương nhiên khi ứng dụng toàn cục truy cập dữ liệu cục bộ sẽ nhanh hơn ứng dụng từ
xa điều này nói lên sự nhân bản dữ liệu ở các nơi cũng làm tăng tốc độ xử lý chương
trình.
Ưu điểm
Cho phép quản lý dữ liệu với nhiều mức trong suốt
Tăng độ tin cậy và khả năng sẵn sàng
Cải thiện hiệu năng
Dễ dàng mở rộng
Nhược điểm
Độ phức tạp thiết kế và cài đặt hệ thống tăng
Hệ thống phần cứng cũng phức tạp hơn
Các phần mềm hệ thống đảm bảo quản trị, duy trì kết nối, trao
đổi dữ liệu trên mạng
Bảo mật khó khăn
4.3.2 Hệ cơ sở dữ liệu phân tán
Hệ cơ sở dữ liệu phân tán (distributed database system) là hệ thống phần mềm
cho phép quản trị cơ sở dữ liệu phân tán và làm cho sự phân tán đó là trong suốt đối
với người sử dụng. Hệ cơ sở dữ liệu phân tán không đơn thuần bao gồm nhiều file dữ
liệu được tổ chức lưu trữ riêng lẻ trên các thiết bị nhớ của mạng máy tính.
- Kiến trúc hệ cơ sở dữ liệu phân tán:
+ Lược đồ toàn cục:
Định nghĩa tất cả dữ liệu được chứa trong cơ sở dữ liệu phân tán như
trong cơ sở dữ liệu tập trung.
Lược đồ toàn cục bao gồm thông tin về các thực thể, tập các phụ thuộc
hàm và mối quan hệ giữa các thực thể .
Lược đồ toàn cục được định nghĩa chính xác như định nghĩa lược đồ cở
sở dữ liệu tập trung.
+ Lược đồ phân mảnh:
Là ánh xạ giữa quan hệ toàn cục và các phân mảnh. Ánh xạ này là mối
quan hệ một-nhiều.
Chương 4: Hệ cơ sở dữ liệu phân tán
KHOA CÔNG NGHỆ THÔNG TIN 30
Các mảnh được chỉ ra bằng tên của quan hệ toàn cục với một chỉ số (chỉ
số phân mảnh)
Các mảnh có thể được cài đặt tại một hay nhiều vị trí khác nhau trên
mạng
+ Lược đồ cấp phát
Chứa thông tin các mảnh được chứa trên những site nào (các mảnh được
chứa ở một hay nhiều site trên mạng).
Các mảnh là các phần logic của một quan hệ tổng thể được định vị vật lý
trên một hay nhiều trạm.
Tất cả các mảnh được liên kết với cùng một quan hệ tổng thể R và được
định vị tại cùng một trạm j cấu thành ảnh vật lý quan hệ tổng thể R tại
trạm j. Do đó ta có thể ánh xạ một-một giữa một ảnh vật lý và một cặp
(quan hệ tổng thể, site). Các ảnh vật lý có thể chỉ ra bằng tên của một
quan hệ tổng thể và một chỉ mục trạm.
+ Lược đồ ánh xạ cục bộ
Ở mức thấp hơn, cần ánh xạ các ảnh vật lý đến các đối tượng được thao
tác bởi các hệ quản trị cơ sở dữ liệu cục bộ. Ánh xạ này được gọi là lược
đồ ánh xạ cục bộ và nó phụ thuộc vào kiểu của hệ quản trị cơ sở dữ liệu
cục bộ; vì thế trong hệ thống không đồng nhất, có nhiều kiểu ánh xạ cục
bộ tại các vị trí khác nhau.
Thực hiện ánh xạ các ảnh vật lý đến các đối tượng được thao tác bởi hệ
quản trị cơ sở dữ liệu địa phương (tất cả các mảnh của một quan hệ tổng
thể trên cùng một trạm tạo ra ảnh vật lý)
Ánh xạ này được gọi là ánh xạ cục bộ, nó phụ thuộc vào kiểu của
DBMS.
4.3.3 Hệ quản trị cơ sở dữ liệu phân tán
Hệ quản trị cơ sở dữ liệu phân tán (distributed database management system) là
hỗ trợ việc tạo và duy trì cơ sở dữ liệu phân tán. Các hệ quản trị cơ sở dữ liệu phân tán
hiện nay được phát triển bởi các nhà sản xuất các hệ quản trị cơ sở dữ liệu tập trung.
Chúng chứa các thành phần bổ sung mở rộng các khả năng của các hệ quản trị cơ sở
dữ liệu tập trung như hỗ trợ sự truyền thông và sự cộng tác giữa các hệ quản trị cơ sở
dữ liệu trên các địa điểm khác nhau qua mạng máy tính.
- Các thành phần cơ bản:
+ Mỗi trạm (site) cài đặt các thành phần hệ thống sau:
+ Thành phần quản trị cơ sở dữ liệu (database management - DM)
Chương 4: Hệ cơ sở dữ liệu phân tán
KHOA CÔNG NGHỆ THÔNG TIN 31
+ Thành phần truyền dữ liệu (data communication - DC)
+ Từ điển dữ liệu (data dictionary - DD): thông tin về sự phân tán dữ liệu
trên mạng
+ Thành phần cơ sở dữ liệu phân tán (distributed database – DDB)
- Các dịch vụ hệ quản trị cơ sở dữ liệu phân tán:
+ Dịch vụ truy xuất cơ sở dữ liệu từ xa: tính chất này là một tính chất
quan trọng nhất và được cung cấp bởi tất cả các hệ thống có thành phần cơ sở
dữ liệu phân tán.
+ Mức độ trong suốt của sự phân tán: tính chất này được hỗ trợ bởi các
hệ thống khác nhau vì đó là sự cân bằng các yếu tố để đạt được sự kết hợp tốt
nhất giữa sự trong suốt phân tán và hiệu suất.
+ Hỗ trợ việc quản trị và điều khiển cơ sở dữ liệu: tính chất này bao gồm
các công cụ để giám sát cơ sở dữ liệu, lấy thông tin về việc sử dụng cơ sở dữ
liệu, cung cấp một cái nhìn toàn cục về các file dữ liệu lưu trữ trên các vị trí
khác nhau.
+ Hỗ trợ cho việc điều khiển đồng thời và phục hồi các giao tác phân tán
- Kiến trúc hệ quản trị cơ sở dữ liệu phân tán:
+ Hệ khách/chủ (client/server)
+ Các hệ cơ sở dữ liệu phân tán ngang hàng
+ Các phức hệ cơ sở dữ liệu
4.4 Thiết kế cơ sở dữ liệu phân tán
- Thiết kế từ trên xuống (top/down):
+ Thiết kế lược đồ toàn cục (global schema) cho server ảo
+ Thiết kế lược đồ phân rã (decay schema) thành các lược đồ cục bộ cho
từng server
+ Phân tích các yêu cầu nhằm định nghĩa môi trường hệ thống
+ Thu thập các yêu cầu về dữ liệu và nhu cầu xử lý của các trạm có sử
dụng cơ sở dữ liệu
- Thiết kế từ dưới lên (bottom/up):
+ Dựa trên các hệ client/server có sẵn (lược đồ cục bộ) sẽ tích hợp thành
một lược đồ tổng thể.
+ Chọn một mô hình dữ liệu chung để mô tả lược đồ tổng thể
+ Chuyển mỗi lược đồ địa phương theo mô hình dữ liệu chung đã chọn
+ Tích hợp các lược đồ địa phương vào lược đồ tổng thể
Chương 4: Hệ cơ sở dữ liệu phân tán
KHOA CÔNG NGHỆ THÔNG TIN 32
4.5 Phân mảnh dữ liệu
Phân mảnh dữ liệu (data fragmentation) là phân dữ liệu thành những mảnh nhỏ
hơn để chia sẻ dữ liệu, bảo đảm tính đồng nhất dữ liệu. Có 2 loại là phân mảnh ngang
và phân mảnh dọc
4.5.1 Phân mảnh ngang
Phân mảnh ngang (horizontal fragmentation) một quan hệ tổng thể n - bộ R là
tách R thành các quan hệ con n - bộ R1, R2, …, Rk sao cho quan hệ R có thể được
khôi phục lại từ các quan hệ con này bằng phép hợp: R = R1 U R2 U ... U Rk. Có 2
loại gồm: phân mảnh ngang nguyên thủy và phân mảnh ngang dẫn xuất
Lưu ý: Có phân mảnh nguyên thủy mới có phân mảnh dẫn xuất tương ứng.
- Cú pháp: r’ = σ E (r) (bằng r chọn theo điều kiện E)
- Các tính chất của phân mảnh ngang:
+ Tính đầy đủ: r (R) được phân thành N mảnh ngang r1, r2…ri thì
r = Un i=1 ri (i đi từ 1 -> N) (r = phép hội ri)
+ Tính tách biệt: Cho trước quan hệ r (R) được phân thành n mảnh, nếu
thỏa mãn 2 tính đầy đủ và tách biệt thì gọi là phân mảnh ngang bảo tòan thông
tin
∩ r i = Ø
Ví dụ:
Cho quan hệ R = {A1, A2……An}, r là 1 quan hệ trên (R) một phân mảnh
ngang nguyên thủy của r chính là mảnh
Một quan hệ S có trên N – 1 với r sẽ hình thành phân mảnh ngang dẫn xuất
S’= S r’
4.5.1.1 Phân mảnh ngang nguyên thủy
Phân mảnh ngang nguyên thủy (horizontal fragmentation) của một quan hệ
được thực hiện dựa trên các vị từ được định nghĩa trên quan hệ đó
Các quan hệ được chia theo chiều ngang
Là một mảnh dữ liệu được hình thành từ một phép chọn (σ) trên một quan hệ
Ví dụ:
KHACHHANG (MSKH, TENKH, DIACHI, DIENTHOAI, THANHPHO)
Giả sử có mảnh: KHACHHANG - TPHCM = σ (KHACHHANG)
THANHPHO = ‘HCM’
Kết luận: KHACHHANG - TPHCM là một phân mảnh ngang nguyên thủy
Chương 4: Hệ cơ sở dữ liệu phân tán
KHOA CÔNG NGHỆ THÔNG TIN 33
4.5.1.2 Phân mảnh ngang dẫn xuất
Phân mảnh ngang dẫn xuất (derived horizontal fragmentation) của một quan hệ
được thực hiện dựa trên các vị từ được định nghĩa trên quan hệ khác. Như vậy, trong
phân mảnh ngang tập các vị từ đóng một vai trò quan trọng.
Có mối quan hệ 1-N, là phép kết nữa giữa quan hệ với N và quan hệ với 1 đã
được phân mảnh ngang
Diễn giải: phép kết nữa là xác định các bộ kết được
Ví dụ:
GIAODICH (SOGD, NGAY, LOAIGD, HOTEN, MAKH)
Nhận xét: Đây là mối quan hệ (1-N)
GIAODICH - TPHCM = GIAODICH KHACHHANG - TPHCM
4.5.2 Phân mảnh dọc
Phân mảnh dọc (vertical fragmentation) một quan hệ tổng thể n - bộ R là tách R
thành các quan hệ con R1, R2, ..., Rk sao cho quan hệ R có thể được khôi phục lại từ
các quan hệ con này bằng phép nối: R = R1 R2..., Rk
Các quan hệ được chia theo chiều dọc.
Là một mảnh dữ liệu hình thành từ một phép chiếu (Π ) một quan hệ xuống tập
thuộc tính X.
Ví dụ:
GIAODICH (SOGD, NGAY, LOAI, SOTIEN, MSKH)
GIAODICH 1 = Π SOGD, NGAY, SOTIEN, MSKH (GIAODICH)
GIAODICH 2 = Π SOGD, LOAI (GIAODICH)
- Tính chất của phân mảnh dọc: một quan hệ r thành m mảnh r1, r2…rm thỏa
tính chất đầy đủ và tách biệt (chấp nhận việc trùng khóa chính) thì r = ri (i chạy từ
0 đến 1) (r bằng phép kết ri)
4.6. Nhân bản dữ liệu
Nhân bản dữ liệu (replication) là đưa dữ liệu đến gần người sử dụng một mảnh
dữ liệu có thể được nhân thành nhiều bảng và được đặt ở nhiều Server khác nhau. Vấn
đề là phải đồng bộ dữ liệu (data synchronization) được các bảng với nhau. Có 3 cách
đồng bộ dữ liệu là: đồng bộ giao dịch, đồng bộ hỗn hợp, đồng bộ hóa ảnh chụp.
- Cách 1: đồng bộ giao dịch (transactional synchronization): là loại đồng bộ bắt
đầu với một bản chụp của các đối tượng cơ sở dữ liệu cũng như dữ liệu, sau đó những
thay đổi dữ liệu tiếp theo chỉ được cập nhật một chiều từ Publisher đến Subscriber.
Chương 4: Hệ cơ sở dữ liệu phân tán
KHOA CÔNG NGHỆ THÔNG TIN 34
- Cách 2: đồng bộ hỗn hợp (merge synchronization): tương tự như
Transactional replication, thường bắt đầu với một bản chụp của các đối tượng cơ sở dữ
liệu và dữ liệu, sau đó những thay đổi dữ liệu tiếp theo được cập nhật hai chiều từ
Publisher đến Subscriber và ngược lại.
- Cách 3: đồng bộ hóa ảnh chụp (snapshot synchronization): giúp sao chép dữ
liệu tại một thời điểm và không theo dõi các bản cập nhật dữ liệu tiếp theo. Khi đồng
bộ hóa xảy ra, toàn bộ ảnh chụp được tạo ra và gửi đến các Subscriber một lần duy
nhất.
4.7 Cài đặt
4.7.1 Giới thiệu về SQL server
Microsoft SQL server là một hệ quản trị cơ sở dữ liệu quan hệ (relational
database management system- RDBMS) do Microsoft phát triển. SQL server là một
hệ quản trị cơ sở dữ liệu quan hệ mạng máy tính hoạt động theo mô hình khách chủ
cho phép đồng thời cùng lúc có nhiều người dùng truy xuất đến dữ liệu, quản lý việc
truy nhập hợp lệ và các quyền hạn của từng người dùng trên mạng.
- SQL có các phiên bản và tính năng của từng phiên bản như sau:
+ Enterprise: bản cao cấp nhất với đầy đủ tính năng.
+ Standard: ít tính năng hơn enterprise, sử dụng khi không cần dùng tới
các tính năng nâng cao.
+ Workgroup: phù hợp cho các công ty lớn với nhiều văn phòng làm
việc từ xa. Web - thiết kế riêng cho các ứng dụng web.
+ Developer: tương tự như enterprise nhưng chỉ cấp quyền cho một
người dùng duy nhất để phát triển, thử nghiệm, demo. Có thể dễ dàng nâng cấp
lên bản enterprise mà không cần cài lại.
+ Express: bản này chỉ dùng ở mức độ đơn giản, tối đa 1 CPU và bộ nhớ
1GB, kích thước tối đa của cơ sở dữ liệu là 10GB.
+ Compact: nhúng miễn phí vào các môi trường phát triển ứng dụng
web. Kích thước tối đa của cơ sở dữ liệu là 4GB.
+ Datacenter: thay đổi lớn trên SQL server 2008 R2 chính là bản
datacenter edition. Không giới hạn bộ nhớ và hỗ trợ hơn 25 bản cài.
+ Business Intelligence - Business Intelligence Edition: phiên bản này có
các tính năng của bản standard và hỗ trợ một số tính năng nâng cao về BI như
power view và power pivot nhưng không hỗ trợ những tính năng nâng cao về
mức độ sẵn sàng như always on availability groups…
+ Enterprise Evaluation - bản SQL Server Evaluation Edition: là lựa
chọn tuyệt vời để dùng được mọi tính năng và có được bản cài miễn phí của
Chương 4: Hệ cơ sở dữ liệu phân tán
KHOA CÔNG NGHỆ THÔNG TIN 35
SQL server để học tập và phát triển. Phiên bản này có thời gian hết hạn là 6
tháng từ ngày cài đặt.
- Ví dụ: SQL Server 2008 R2, SQL Server 2012, SQL Server 2014, SQL
Server 2016
4.7.2 Hướng dẫn cài đặt
Yêu cầu phần cứng
CPU: Tối thiểu 2GHZ
RAM: 4GB
Đĩa cứng: tối thiểu 6GB còn trống
Yêu cầu phần mềm Microsoft SQL Server Evaluation: vì có hỗ trợ dịch vụ
SQL server agent là dịch vụ phân tán cơ sở dữ liệu
Cách cài đặt Lần lượt cài đặt chạy 3 lần file sa, chia ra 3 Server con với
tên là: server 1, server 2, server 3 hoặc tên tùy chọn khác
4.7.3 Hướng dẫn phân tán cơ sở dữ liệu trên SQL Server
STT Mục đích
Bước 1: Chuẩn bị Để chứa các dữ liệu trao đổi trong quá trình update dữ liệu
từ các phân mảnh (server con) về cơ sở dữ liệu gốc (server
gốc), và từ cơ sở dữ liệu gốc (server gốc) đến các phân
mảnh (server con). Trong bước này hệ thống sẽ tự động
tạo database tên là distribution: chứa những dữ liệu mà
khi cấu hình SQL server chứa phân mảnh và chứa database
hệ thống để hổ trợ quá trình phân tán cơ sở dữ liệu
Bước 2: Cấu hình
(configure) server
gốc
Cấu hình sơ sở dữ liệu phân tán
Bước 3: Tạo
publication
Chứa lược đồ phân mảnh.
Lược đồ phân mảnh là thể hiện mối quan hệ dữ liệu giữa
các table khi chúng ta phân tán dữ liệu
Mở dịch vụ SQL server agent nhằm đồng bộ hóa dữ liệu
các server với nhau thì mới phân tán được dữ liệu
Bước 4: Tạo
subcription
Chỉ định server nào sẽ chứa publication nghĩa là chứa dữ
liệu phân tán
Chương 4: Hệ cơ sở dữ liệu phân tán
KHOA CÔNG NGHỆ THÔNG TIN 36
4.7.4 Minh họa phân tán cơ sở dữ liệu Quản lý vật tư
- Bước 1: Chuẩn bị:
Tạo 1 thư mục (folder) trong ổ đĩa D tên là ReplData. Thư mục này là 1
snapshot folder, nhiệm vụ là chia sẻ (shared) folder trong windows, cho phép các users
được quyền read/write. Right click trên folder REPLDATA, chọn properties, chọn tab
sharing – share
Hinh 4.4 Tạo thư mục ReplData
Hinh 4.5 Chia sẻ ReplData
Chương 4: Hệ cơ sở dữ liệu phân tán
KHOA CÔNG NGHỆ THÔNG TIN 37
Chọn vào dấu tick chọn everyone, sau đó click add, và chọn quyền read/write
như trong hình. Cuối cùng, click nút lệnh share
Hinh 4.6 Add người dùng và chọn quyền
Hinh 4.7 Share replData thành công
- Bước 2: Configure serve gốc
Click phải chuột vào thư mục replication và chọn configure distribution, sau đó
chọn next
Chương 4: Hệ cơ sở dữ liệu phân tán
KHOA CÔNG NGHỆ THÔNG TIN 38
Hinh 4.8 Tạo cấu hinh distribution
Tiếp tục copy đường dẫn ở bước 1snapshot folder vào/ next như hình
Hinh 4.9 Copy đường dẫn napshot
Chương 4: Hệ cơ sở dữ liệu phân tán
KHOA CÔNG NGHỆ THÔNG TIN 39
Tạo tự động database distribution như hình
Hinh 4.10 Tạo database tên distribution
Tiếp tục next để cấu hình
Hinh 4.11 Thiết lập cấu hinh tiếp distribution
Chương 4: Hệ cơ sở dữ liệu phân tán
KHOA CÔNG NGHỆ THÔNG TIN 40
Tiếp tục cấu hình distribution cho đến khi success
Hinh 4.12 Cấu hinh distribution thành công
Vào database hệ thống tiến hành kiểm tra xem có distribution không
Hinh 4.13 Cấu hinh distribution thành công
Chương 4: Hệ cơ sở dữ liệu phân tán
KHOA CÔNG NGHỆ THÔNG TIN 41
Trường hợp muốn cấu hình lại ta click phải chuột replication và chọn disable
publising and distribution (hủy cấu hình củ và cấu hình mới lại)
Hinh 4.14 Cấu hinh distribution thành công
-Bước 3: Tạo publications
Mở rộng thư mục replication và click phải chuột vào thư mục local publications
và chọn click new publication.
Chương 4: Hệ cơ sở dữ liệu phân tán
KHOA CÔNG NGHỆ THÔNG TIN 42
Hinh 4.155 Cấu hinh distribution thành công
Chọn database muốn làm lược đồ phân mảnh là quanlyvattu và tiếp tục next
Hinh 4.166 Chọn database để publication
Tiếp tục next, và chọn merge pubication như hình
Chương 4: Hệ cơ sở dữ liệu phân tán
KHOA CÔNG NGHỆ THÔNG TIN 43
Hinh 4.17 Chọn loại thiết kế publication
Chọn phiên bản thiết kế lược đồ phân mảnh, tiếp tục chọn next
Hinh 4.18 Chọn phiên bản thiết kế publication
Bước kế tiếp ta chọn dữ liệu phân tán, có 4 loại dữ liệu phân tán là table, view,
udf, store procedure. Ở ví dụ này ta phân tán dữ liệu table
Chương 4: Hệ cơ sở dữ liệu phân tán
KHOA CÔNG NGHỆ THÔNG TIN 44
Hinh 7 Chọn phân tán dữ liệu table
Chọn Add Filter, chọn CHINHANH và đưa điều kiện phân tán vào
Hinh 8.20 Tạo lược đồ phân tán các table
Chương 4: Hệ cơ sở dữ liệu phân tán
KHOA CÔNG NGHỆ THÔNG TIN 45
Hinh 9 Phân tán dữ liệu table CHI NHANH
Click OK, để thoát ra ngoài.
Sau đó, ta chọn CHINHANH, chọn Add, Add Join to Extend the Selected Filter
để chọn NHANVIEN là quan hệ dẫn xuất theo CHINHANH như hình sau:
Hinh 4.22 Phân tán table phân mảnh ngang dẫn xuất
Chương 4: Hệ cơ sở dữ liệu phân tán
KHOA CÔNG NGHỆ THÔNG TIN 46
Hinh 4.23 Phân tán dữ liệu table NHANVIEN
Hinh 4.24 Kết quả phân tán dữ liệu table NHANVIEN
Chương 4: Hệ cơ sở dữ liệu phân tán
KHOA CÔNG NGHỆ THÔNG TIN 47
Tương tự, ta tạo phân mảnh ngang KHO
Hinh 4.25 Phân tán dữ liệu table KHO
Click OK để qua bước kế, và tiếp tục phân tán dữ liệu các table PHATSINH,
CT_PHATSINH theo KHO
Hinh 10 Phân tán dữ liệu table PHATSINH
Chương 4: Hệ cơ sở dữ liệu phân tán
KHOA CÔNG NGHỆ THÔNG TIN 48
Tiếp tục phân tán dữ liệu CT_PHATSINH theo PHATSINH
Hinh 11 Phân tán dữ liệu table CT_PHATSINH
Ta được lược đồ phân mảnh cơ sở dữ liệu QUANLYVATTU
Hinh 128 Lược đồ phân mảnh cơ sờ dữ liệu QUANLYVATTU
Chương 4: Hệ cơ sở dữ liệu phân tán
KHOA CÔNG NGHỆ THÔNG TIN 49
Next/ tạo snapshot agent lưu trữ dữ liệu phân tán
Hinh 13 Tạo napshot agent lưu trữ
Cấu hình hệ thống bảo mật snapshot agent, login: sa, pass: 123456
Hinh 1430 Khai báo tài khoản server gốc
Chương 4: Hệ cơ sở dữ liệu phân tán
KHOA CÔNG NGHỆ THÔNG TIN 50
OK, tiếp tục ta được như hình sau:
Hinh 15 Tiếp tục tạo publication
Tiếp tục cấu hình và đặt tên lược đồ phân mảnh cho các chi nhánh
Hinh 16 Đặt tên cho publication
Chương 4: Hệ cơ sở dữ liệu phân tán
KHOA CÔNG NGHỆ THÔNG TIN 51
Kiểm tra vào local publication/ click phải chuột
QUANLYVATTU|_CN1/properties/ chọn filter row/ kiểm tra và xem lại lược đồ phân
mảnh đã tạo
Hinh 17 Kiểm tra lại publication đã tạo
Hinh 18 Xem lại thiết kế publication
Chương 4: Hệ cơ sở dữ liệu phân tán
KHOA CÔNG NGHỆ THÔNG TIN 52
Click phải chuột chọn view snapshot agent status để xem trạng thái của snapshot
agent
+ Start: Cho snapshot agent hoạt động
+ Monitor: mở window theo dõi quá trình đồng bộ dữ liệu.
Hinh 19 Trạng thái hoạt động snapshot agent
- Bước 4: Tạo subscription:
Click phải chuột trên 1 publication, chọn new subscriptions. Ở đây, ta đã có 1
publication là QUANLYVATTU_CN1
Hinh 4.36 Tạo 1 subscription
Chương 4: Hệ cơ sở dữ liệu phân tán
KHOA CÔNG NGHỆ THÔNG TIN 53
Chọn next/ Chọn publication cần đưa về server con
Hinh 20 Pubication tạo subscription
Hinh 21 Thiết lập cấu hinh tạo 1 subscription
Chương 4: Hệ cơ sở dữ liệu phân tán
KHOA CÔNG NGHỆ THÔNG TIN 54
Click chọn nút lệnh Add SQL Server Subcriber để chỉ định 1 server làm nơi
chứa cơ sở dữ liệu phân tán. Sau đó, ta chỉ định tiếp 1 cơ sở dữ liệu làm nơi chứa các
article (nên là 1 cơ sở dữ liệu mới)
Hinh 22 Chỉ định server chứa publication
Hinh 4.40 Server CNKLZCW4RWBTZ\NGA1 chứa publication
Chương 4: Hệ cơ sở dữ liệu phân tán
KHOA CÔNG NGHỆ THÔNG TIN 55
Hinh 4.41 Chỉ định database chứa pulication sau khi phân tán
Hinh 4.42 Database QUANLYVATTU sau khi phân tán
Tiếp tục next ta được như hình sau:
Chương 4: Hệ cơ sở dữ liệu phân tán
KHOA CÔNG NGHỆ THÔNG TIN 56
Hinh 4.4323 Dữ liệu server gốc được đẩy phân tán sang server con
Hinh 4.44 Cấu hinh từ server gốc sang server con
Bấm vào biểu tượng ta tiếp tục như hình sau:
Chương 4: Hệ cơ sở dữ liệu phân tán
KHOA CÔNG NGHỆ THÔNG TIN 57
Hinh 4.45 Khai báo tài khoản server gốc sang server con
Tiếp tục Next/ Chọn run continuously để đồng bộ hóa dữ liệu (các thao tác như
thêm, xóa , sửa…) từ server gốc đến server con
Hinh 4.46 Đồng bộ hóa dữ liệu server gốc sang server con
Chương 4: Hệ cơ sở dữ liệu phân tán
KHOA CÔNG NGHỆ THÔNG TIN 58
Hinh 4.47 Đồng bộ hóa dữ liệu Immediately
Hinh 4.48 Đồng bộ hóa dữ liệu server
Chương 4: Hệ cơ sở dữ liệu phân tán
KHOA CÔNG NGHỆ THÔNG TIN 59
Hinh 4.49 Cấu hinh tạo 1 subscription
Hinh 24 Kết quả 1 subscription
Chương 4: Hệ cơ sở dữ liệu phân tán
KHOA CÔNG NGHỆ THÔNG TIN 60
Hinh 4.51 Kiểm tra database server con
Tương tự ở server con NGA 2 cũng thực hiện tạo 1 subcrition các bước như ở
server con NGA 1
4.7.5 Link Server
Link server là phương thức kết nối từ SQL server này đến database của các
server khác qua tập lệnh DML. Nó giúp việc truy vấn hoặc cập nhật dữ liệu từ một
server ở xa ngay trên SQL server của máy mình rất thuận tiện.
- Các loại server:
STT Công dụng Ví dụ
Local server Cài máy nào thì chạy máy đó Laptop, máy tính điện tử
Remote server Điều khiển từ xa giữa 2 máy Chương trình Teamview
Chương 4: Hệ cơ sở dữ liệu phân tán
KHOA CÔNG NGHỆ THÔNG TIN 61
Link sever Truy xuất dữ liệu, thao tác dữ liệu
Cú pháp: sp_addlinkedserver @server =
’LINK2’, @srvproduct=’’, @provider =
’SQLOLEDB’, @datasrc=’QUANLYVATTU’
Sao chép dữ liệu từ một
database trong server
local vào 1 database trong
một server ở xa
4.7.5.1 Minh họa tạo 1 Link Server
Giả sử tạo 1 Link Server từ server NGA1 đến server NGA2.
- Bước 1: tạo 1 remote log in (tên HTKN) ở server NGA2
Tại server NGA2 ta mở rộng security, click phải chuột login/chọn new login
Hinh 4.52 Tạo log in HTKN
Qua tab server role chọn quyền public
Chương 4: Hệ cơ sở dữ liệu phân tán
KHOA CÔNG NGHỆ THÔNG TIN 62
Hinh 4.53 Tạo log in HTKN
OK, và tiếp tục thiết lập quyền trong tab user mapping như hình bên dưới:
Hinh 4.54 Tạo log in HTKN
OK, và tiếp tục thiết lập quyền trong tab status như hình bên dưới:
Chương 4: Hệ cơ sở dữ liệu phân tán
KHOA CÔNG NGHỆ THÔNG TIN 63
Hinh 25 Thiết lập quyền trong status
OK, và quay trở lại server NGA 2 kiểm tra trong log in xem đã có user HTKN
Hinh 26 Thiết lập quyền trong status
Chương 4: Hệ cơ sở dữ liệu phân tán
KHOA CÔNG NGHỆ THÔNG TIN 64
- Bước 2: Tạo 1 Link server (tên LINK) từ server NGA1 đến server NGA2
Tại server NGA1, vào server objects, click chuột phải chọn linked servers/ new
linked servers/ đặt tên là LINK và copy đường dẫn ở server NGA2 như hình:
Hinh 4.57 Tạo 1 Link server
Qua tab security, ta chọn be made using this security context, và khai báo
remote login tên là: HTKN, pass: 123456 như hình sau:
Hinh 4.58 Thiết lập khai báo HTKN trong security
Chương 4: Hệ cơ sở dữ liệu phân tán
KHOA CÔNG NGHỆ THÔNG TIN 65
OK, qua tab server options, thiết lập giá trị true, false như hình bên dưới:
Hinh 4.5927 Thiết lập khai báo HTKN trong security
Quay trở lại server NGA1 kiểm tra lần nữa xem thiết lập thành công LINK
server chưa, như hình sau:
Hinh 4.60 Thiết lập khai báo HTKN trong security
Chương 4: Hệ cơ sở dữ liệu phân tán
KHOA CÔNG NGHỆ THÔNG TIN 66
Tương tự để tạo LINK server từ server NGA2 qua server NGA 1, cũng thực
hiện 2 bước như minh họa.
4.7.5.2 Truy xuất dữ liệu trong Link Server
Cú pháp: SELECT * FROM LINK.DB.dbo.Table
Trong đó:
+ LINK: tên link server đã tạo
+ DB: tên database cần truy xuất
+ Data Base Objects: đối tượng cơ sở dữ liệu.
+ Table: tên table cần truy xuất
Ví dụ: Truy xuất dữ liệu từ Server NGA1 qua Server NGA2
+ Tại Server NGA1, ta tạo 1 new query, thực hiện câu truy vấn như sau:
Select * from LINK.QUANLYVATTU.dbo.NHANVIEN
+ Execute, ta có kết quả như sau:
Hinh 4.61 LINK truy xuất dữ liệu
4.7.5.3 Store procedure
Store procedure là tập hợp 1 dãy lệnh của SQL chứa trong SQL Server dưới
một tên nào đó và được xử lý như một đơn vị và được lưu trữ trên Database Server.
Khi một câu lệnh gọi chạy stored procedure lần đầu tiên thì SQL Server sẽ chạy nó và
lưu trữ vào bộ nhớ đệm, gọi là plan cache, những lần tiếp theo SQL Server sẽ sử dụng
lại plan cache nên sẽ cho tốc độ xử lý tối ưu
Stored procedure rất tiện lợi cho người quản trị database (DBA), nó giúp DBA
tạo ra những nhóm câu lệnh và gửi đến một bô phận khác mà họ sẽ không cần quan
tâm đến nội dung bên trong stored procedure có gì, họ chỉ quan tâm đến tham số đầu
vào và đầu ra
Ngoài ra, Store procedure còn hỗ trợ tính trong suốt phân tán. Điều kiện để
trong suốt dữ liệu trong phân tán thì tên server phải giống nhau.
- Cú pháp:
CREATE {PROCEDURE | PROC} [schema_name] procedure_name
[ @parameter [type_schema_name.] datatype
Chương 4: Hệ cơ sở dữ liệu phân tán
KHOA CÔNG NGHỆ THÔNG TIN 67
[VARYING] [ = default] [ OUT | OUTPUT | READONLY]
, @parameter [type_schema_name.] datatype
[VARYING] [ = default] [ OUT | OUTPUT | READONLY]
[WITH {ENCRYPTION | RECOMPILE | EXECUTE AS Clause}]
[ FOR REPLICATION]
AS
BEGIN
[declaration_section]
executable_section
END;
- Trong đó:
+ schema_name: Tên schema (lược đồ) sở hữu procedure.
+ procedure_name: Tên gán cho procedure
+ @parameter: Một hay nhiều tham số được truyền vào hàm.
+ type_schema_name: Kiểu dữ liệu của schema (nếu có).
+ Datatype: Kiểu dữ liệu cho @parameter.
+ Default: Giá trị mặc định gán cho @parameter.
+ OUT/OUTPUT: @parameter là một tham số đầu ra
+ READONLY: @parameter không thể bị procedure ghi đè lên.
+ ENCRYPTION: Mã nguồn (source) của procedure sẽ không được lưu
trữ dưới dạng text trong hệ thống.
+ RECOMPILE: Truy vấn sẽ không được lưu ở bộ nhớ đệm (cache) cho
thủ tục này.
+ EXECUTE AS clause: Xác định ngữ cảnh bảo mật để thực thi thủ tục.
+FOR REPLICATION: Procedure đã lưu sẽ chỉ được thực thi trong quá
trình replication (nhân bản).
- Cách tạo Store procedure trong SQL:
Vào server gốc/ chọn vào database cần thực hiện / programmability/
store procedures /new store procedurescrecrecre
Chương 4: Hệ cơ sở dữ liệu phân tán
KHOA CÔNG NGHỆ THÔNG TIN 68
Hình 4.6.2 Cách tạo 1 Store Procedure
Ví dụ: Viết 1 Store Procedure tên DS_LOP sao cho khi chạy Store Procedure này
trên 1 Server bất kỳ, nó đều hiển danh sách lớp của trường.
CREATE PROCEDURE SP_DSLOP
AS
SELECT MALOP, TENLOP FROM DBO.LOP
UNION
SELECT MALOP, TENLOP FROM LINK1.QLDSV.DBO.LOP
Chương 4: Hệ cơ sở dữ liệu phân tán
KHOA CÔNG NGHỆ THÔNG TIN 69
CÂU HỎI LÝ THUYẾT
Câu hỏi 1: Định nghĩa phân mảnh ngang nguyên thủy, các mảnh nguyên thủy có cần
thêm trường khóa không?
Câu hỏi 2: Cho lược đồ phổ quát :
R (a, b): b có giá trị nguyên trong đoạn [1,5]
S (a, c): c có giá trị nguyên trong đoạn [1,3]
Ri = b=i (R)
Sij = c=j (S) Ri
Cho biết tổng số phân mảnh?
Câu hỏi 3: Trình bày quá trình chuyển câu truy vấn toàn cục thành câu truy vấn dựa
trên các phân mảnh?
Câu hỏi 4: Liệt kê tên nhân viên, chuyên môn và vai trò của họ khi tham gia Công
trình có mã là ‘P1218’. Biết rằng Công trình này do một công ty ở vùng Biển đảo phụ
trách.
a) Viết câu lệnh SQL dưới dạng lược đồ toàn cục.
b) Chuyển câu SQL ở câu a thành cây truy vân dưới dạng đại số quan hệ.
c) Chuyển cây truy vấn ở câu b dưới dạng cây truy vấn phân mảnh tối giản.
d) Hãy thiết kế phân mảnh dọc hỗn hợp tương ứng với các phân mảnh ởcâu c
BÀI TẬP THỰC HÀNH
Bài tập 1:
Giả sử đã có cơ sở dữ liệu QL_VATTU trong Serer mặc định. Giả sử công ty
có 2 chi nhánh: chi nhánh 1 (CN1) và chi nhánh 2 (CN2) .
a) Yêu cầu 1: Phân tán cơ sở dữ liệu QL_VATTU ra làm 2 mảnh với điều kiện
sau:
QL_VATTU được đặt trên Server 1: chứa thông tin của các vật tư thuộcchi
nhánh 1
QL_VATTU được đặt trên Server 2: chứa thông tin của các vật tư thuộcchi
nhánh 2
b) Yêu cầu 2: Viết 1 Store Procedure để in ra các phiếu xuất do nhân viên có
mã số @MANV đã lập trong ngày @ngay
c) Yêu cầu 3: Viết 1 Store Procedure để xóa các phiếu nhập do nhân viên có mã
số @MANV đã lập trong ngày @ngay
Chương 4: Hệ cơ sở dữ liệu phân tán
KHOA CÔNG NGHỆ THÔNG TIN 70
d) Yêu cầu 4: Hãy cho biết cách tạo Link Server như thế nào để đảm bảo tính
“trong suốt” khi gọi 1 View trong cơ sở dữ liệu phân tán.
e) Yêu cầu 5: Sử dụng Link server in ra danh sách các vật tư của chi nhánh 1
đang đặt ở Server 2
Bài tập 2:
Giả sử đã có cơ sở dữ liệu QL_SINHVIEN trong Serer mặc định. Giả sử trường
có 2 khoa chính: công nghệ thông tin (CNTT) và viễn thông (VT)
a) Yêu cầu 1: Phân tán cơ sở dữ liệu QL_SINHVIEN ra làm 2 mảnh với điều
kiện sau:
QL_SINHVIEN được đặt trên Server 1: chứa thông tin của các sinh viên thuộc
khoa công nghệ thông tin
QL_SINHVIEN được đặt trên Server 2: chứa thông tin của các sinh viên thuộc
khoa viễn thông
Biết rằng 1 sinh viên chỉ có thể thuộc 1 khoa
b) Yêu cầu 2: Viết 1 Store Procedure tên DS_LOP sao cho khi chạy Store
Procedure này trên 1 Server bất kỳ, nó đều hiển danh sách lớp của trường.
c) Yêu cầu 3: Hãy in ra tên lớp và tên khoa, ho, ten của 1 sinh viên có mã số là
@X (Store Procedure có tên sp_TimSV)
d) Yêu cầu 4: Viết 1 Store Procedure cho phép sửa họ của 1 sinh viên là @X,
biết rằng ta chưa rõ sinh viên này thuộc khoa nào
e) Yêu cầu 5: Viết 1 Store Procedure để xóa 1 sinh viên có mã số @X
f) Yêu cầu 6: Hãy cho biết cách tạo Link Server như thế nào để đảm bảo tính
“trong suốt” khi gọi 1 Stored Procedure trong cơ sở dữ liệu phân tán.
g) Yêu cầu7: Sử dụng Link server in ra danh sách lớp của khoa viễn thông đang
đặt ở Server 1
KHOA CÔNG NGHỆ THÔNG TIN 71
TÀI LIỆU THAM KHẢO
1. Đỗ Thị Minh Phụng, Giáo trình hệ quản trị CSDL SQL Server, Đại học Quốc gia
TP.HCM, 2005.
2. Lê Văn Phùng, Cơ Sở Dữ Liệu Quan Hệ Và Công Nghệ Phân Tích Thiết Kế, Thông
Tin Truyền Thông, 2010
3. Nguyễn Kim Anh, Nguyên Lý Của Các Hệ Cơ Sở Dữ Liệu, Đại Học Quốc Gia, 2009
4. Phạm Thế Quế, Giáo trình cơ sở dữ liệu phân tán, Thông Tin Truyền Thông, 2010
KHOA CÔNG NGHỆ THÔNG TIN 72
MỤC LỤC HÌNH
Hình 1.1 Mô hình phân cấp quản lý nhân sự của một công ty ............................................ 5
Hình 1.2 Mô hình mạng quản lý nhân sự của một công ty ................................................. 6
Hình 1.3 Mô hình quan hệ mô tả dữ liệu bảng .................................................................... 6
Hình 1.4 Mô hình đối tượng quản lý nhân sự của một công ............................................... 7
Hình 2.1 Tối ưu hóa câu truy vấn bằng cây đại số quan hệ ............................................ 144
Hình 2.2 Tối ưu hóa câu truy vấn theo thuật toán 2 ngôi .............................................. 1515
Hình 3.1 Phân quyền trên cơ sở dữ liệu ............................................................................ 18
Hình 3.2 Tạo tài khoản SQL Server .................................................................................. 18
Hình 3.3 Khai báo tạo tài khoản SQL server .................................................................... 19
Hình 3.4 Tạo người sử dụng .............................................................................................. 20
Hình 3.5 Khai báo tạo người sử dụng................................................................................ 20
Hình 3.6 Cấp quyền cho người dùng ............................................................................... 211
Hình 3.7 Cấp quyền cho người dùng ............................................................................... 211
Hình 3.8 Thiết lập quyền ................................................................................................. 222
Hình 4.1 Kiến trúc 1 Client/Server .................................................................................... 27
Hình 4.2 Kiến trúc 2 Client/Server .................................................................................... 27
Hình 4.3 Kiến trúc 3 Client/Server .................................................................................... 27
Hình 4.4 Tạo thư mục ReplData ........................................................................................ 36
Hình 4.5 Chia sẻ ReplData ................................................................................................ 36
Hình 4.6 Add người dùng và chọn quyền ......................................................................... 37
Hình 4.7 Share replData thành công.................................................................................. 37
Hình 4.8 Tạo cấu hình distribution .................................................................................... 38
Hình 4.9 Copy đường dẫn napshot .................................................................................... 38
Hình 4.10 Tạo database tên distribution ............................................................................ 39
Hình 4.11 Thiết lập cấu hình tiếp distribution ................................................................... 39
Hình 4.12 Cấu hình distribution thành công ..................................................................... 40
Hình 4.13 Cấu hình distribution thành công ..................................................................... 40
Hình 4.14 Cấu hình distribution thành công ..................................................................... 41
Hình 4.15 Cấu hình distribution thành công ..................................................................... 42
Hình 4.16 Chọn database để publication ........................................................................... 42
KHOA CÔNG NGHỆ THÔNG TIN 73
Hình 4.17 Chọn loại thiết kế publication........................................................................... 43
Hình 4.18 Chọn phiên bản thiết kế publication ................................................................. 43
Hình 4.19 Chọn phân tán dữ liệu table .............................................................................. 44
Hình 4.20 Tạo lược đồ phân tán các table ......................................................................... 44
Hình 4.21 Phân tán dữ liệu table CHI NHANH ................................................................ 45
Hình 4.22 Phân tán table phân mảnh ngang dẫn xuất ....................................................... 45
Hình 4.23 Phân tán dữ liệu table NHANVIEN ................................................................. 46
Hình 4.24 Kết quả phân tán dữ liệu table NHANVIEN .................................................... 46
Hình 4.25 Phân tán dữ liệu table KHO .............................................................................. 47
Hình 4.26 Phân tán dữ liệu table PHATSINH .................................................................. 47
Hình 4.27 Phân tán dữ liệu table CT_PHATSINH ........................................................... 48
Hình 4.28 Lược đồ phân mảnh cơ sờ dữ liệu QUANLYVATTU ..................................... 48
Hình 4.29 Tạo napshot agent lưu trữ ................................................................................. 49
Hình 4.30 Khai báo tài khoản server gốc ...................................................................... 4499
Hình 4.31 Tiếp tục tạo publication .................................................................................... 50
Hình 4.32 Đặt tên cho publication ..................................................................................... 50
Hình 4.33 Kiểm tra lại publication đã tạo ......................................................................... 51
Hình 4.34 Xem lại thiết kế publication ............................................................................. 51
Hình 4.35 Trạng thái hoạt động snapshot agent ................................................................ 52
Hình 4.36 Tạo 1 subscription ............................................................................................ 52
Hình 4.37 Pubication tạo subscription............................................................................... 53
Hình 4.38 Thiết lập cấu hình tạo 1 subscription ................................................................ 53
Hình 4.39 Chỉ định server chứa publication .................................................................. 5544
Hình 4.40 Server CNKLZCW4RWBTZ\NGA1 chứa publication ................................... 54
Hình 4.41 Chỉ định database chứa pulication sau khi phân tán .................................... 5555
Hình 4.42 Database QUANLYVATTU sau khi phân tán ................................................. 55
Hình 4.43 Dữ liệu server gốc được đẩy phân tán sang server con .................................... 56
Hình 4.44 Cấu hình từ server gốc sang server con ............................................................ 56
Hình 4.45 Khai báo tài khoản server gốc sang server con ................................................ 57
Hình 4.46 Đồng bộ hóa dữ liệu server gốc sang server con .............................................. 57
Hình 4.47 Đồng bộ hóa dữ liệu Immediately .................................................................... 58
Hình 4.48 Đồng bộ hóa dữ liệu server .............................................................................. 58
KHOA CÔNG NGHỆ THÔNG TIN 74
Hình 4.49 Cấu hình tạo 1 subscription .............................................................................. 59
Hình 4.50 Kết quả 1 subscription ...................................................................................... 59
Hình 4.51 Kiểm tra database server con ............................................................................ 60
Hình 4.52 Tạo log in HTKN .............................................................................................. 61
Hình 4.53 Tạo log in HTKN .............................................................................................. 62
Hình 4.54 Tạo log in HTKN .............................................................................................. 62
Hình 4.55 Thiết lập quyền trong status ............................................................................. 63
Hình 4.56 Thiết lập quyền trong status ............................................................................ 63
Hình 4.57 Tạo 1 Link server .............................................................................................. 64
Hình 4.58 Thiết lập khai báo HTKN trong security .......................................................... 64
Hình 4.59 Thiết lập khai báo HTKN trong security .......................................................... 65
Hình 4.60 Thiết lập khai báo HTKN trong security .......................................................... 65
Hình 4.61 LINK truy xuất dữ liệu .................................................................................... 66
Hình 4.62 Cách tạo 1 Store Procedure ............................................................................. 68