You are on page 1of 9

Cơ sở dữ liệu

ThS. Lê Văn Lợi

Bài 2

Bài này nêu các kiến trúc và nguyên tắc cơ bản làm nền tảng để chúng ta hiểu bản
chất của CSDL và HQT CSDL.

1./ Kiến trúc CSDL

Theo ANSI/SPARK, kiến trúc của một CSDL gồm 3 mức như trong hình vẽ sau:

Mức ngoài:
Khuông nhìn riêng của từng
người dùng

Mức khái niệm:


Khuông nhìn tổng thể

Mức lưu trữ

Hình 1: Kiến trúc CSDL 3 lớp

Mức ngoài: tương ứng với khuông nhìn đơn lẻ của từng người dùng. Người dùng gồm
lập trình viên, người dùng thông thường và DBA.

Mức ngoài thường gắn với ngôn ngữ lập trình, ngôn ngữ định nghĩa dữ
liệu (data definition language – DDL), ngôn ngữ điều khiển dữ liệu (data
manipulation language – DML). Chúng ta sẽ trở lại DDL và DML trong
các phần tiếp theo.

Mức khái niệm: là một biểu diễn dữ liệu mang tính toàn diện của CSDL.

Tương ứng với mức này người ta thường định nghĩa lược đồ mức khái
niệm (Conceptual Schema).

Mức lưu trữ: mức gần với lưu trữ vật lý nhất.

Để nâng cao tính hiệu dụng, DBA và các lập trình viên ứng dụng có kinh
nghiệm sẽ quan tâm hơn tới mức này: định nghĩa chỉ mục, các phương
pháp lập chỉ mục. Do khuôn khổ của giáo trình, ta sẽ không đề cập đến
các kỹ thuật này.

2./ Vai trò của DBA

■ Thiết lập lược đồ mức khái niệm


■ Định nghĩa các chỉ mục, phương pháp lập chỉ mục

Bai-2.doc *** Trang 1


Cơ sở dữ liệu
ThS. Lê Văn Lợi

■ Liên kết với người dùng


■ Xác lập hệ thống bảo mật thông tin và các qui tắc toàn vẹn dữ liệu
■ Xác lập các qui trình sao lưu thông tin và phục hồi dữ liệu khi có sự cố
■ Giám sát hệ thống CSDL, độ hiệu dụng và quản lý các thay đổi của người dùng

3./ Vai trò của HQT CSDL

HQT CSDL là giao diện giữa người dùng và CSDL. HQT CSDL che các chi tiết và
chỉ để người dùng nhìn thấy dữ liệu dưới dạng logic. Một số các chức năng cần có của
HQT CSDL.

■ Định nghĩa dữ liệu

(SV ghi chép tại lớp)

■ Điều khiển dữ liệu

(SV ghi chép tại lớp)

■ Bảo mật dữ liệu và đảm bảo tính toàn vẹn

(SV ghi chép tại lớp)

■ Phục hồi dữ liệu và xử lý tranh chấp

(SV ghi chép tại lớp)

■ Từ điển dữ liệu

(SV ghi chép tại lớp)

■ Đảm bảo tính hiệu dụng

(SV ghi chép tại lớp)

Bai-2.doc *** Trang 2


Cơ sở dữ liệu
ThS. Lê Văn Lợi

4./ Kiến trúc Client/Server

Người dùng cuối

CT ứng dụng Client

HQT CSDL Server

CSDL

Hình 2: Kiến trúc Client/Server của một hệ CSDL

Toàn bộ kiến trúc trong các phần trước đương nhiên là để phục vụ cho các ứng dụng
về CSDL. Đứng về phương diện tổng thể, một hệ thống CSDL có thể được coi như
một kiến trúc gồm 2 phần: Client (mặt trước - frontend) và Server (mặt sau -
backend).

■ Server chính là HQT CSDL. Phần này hỗ trợ tất cả các phép toán lên CSDL
như trong phần trên đây đã đề cập: định nghĩa dữ liệu, điều khiển dữ liệu, bảo
mật và toàn vẹn dữ liệu.

■ Client chính là các chương trình ứng dụng kết nối với Server (HQT CSDL).
Các chương trình ứng dụng có thể được viết mới hoặc tích hợp sẵn.

Các ứng dụng có thể được chia ra thành 2 lớp:

■ Phần mềm do lập trình viên viết (phần mềm viết mới). Các lập trình viên có thể
sử dụng một số ngôn ngữ như Java, C, COBOL, VisualBasic, ... để viết các ứng
dụng có kết nối với CSDL

■ Phần mềm do chính nhà cung cấp HQT CSDL viết (phần mềm tích hợp sẵn).
Phần này chủ yếu là các công cụ để kết nối với CSDL như: Bộ xử lý ngôn ngữ
truy vấn, Tạo báo cáo, Các công cụ tiện ích, ...

Bai-2.doc *** Trang 3


Cơ sở dữ liệu
ThS. Lê Văn Lợi

5./ Xử lý phân tán

Xứ lý phân tán là gì? Nhiều máy tính nối mạng với nhau cùng xử lý một công việc.
(Xứ lý song song có thể coi như một trường hợp đặc biệt của xứ lý phân tán).

Một số biến thể của xử lý phân tán:

CT ứng dụng Máy Client

HQT CSDL Máy Server

Hình 3: CT Server và Client chạy trên hai máy khác nhau

Các máy Client

Server Máy Server

Hình 4: Một máy chủ, nhiều máy Client

Bai-2.doc *** Trang 4


Cơ sở dữ liệu
ThS. Lê Văn Lợi

Các máy Client

Server Server Các máy Server

Hình 5: Nhiều máy Server và nhiều máy Client

Mô hình trong Hình 1 chính là mô hình được sử dụng rộng rãi hiện nay.

Trong Hình 5, có hai trường hợp cần được phân biệt:

■ Trên các máy chủ, các HQT CSDL hoàn toàn độc lập với nhau (có thể cùng loại
nhưng chúng chạy các CSDL hoàn toàn khác nhau). Trường hợp này đồng nghĩa
với việc một chương trình Client có thể truy xuất nhiều CSDL trên nhiều máy.

■ Trên các máy chủ, các HQT CSDL chạy đồng bộ với nhau cùng một CSDL. Đây
có thể được coi như một cơ chế sao lưu phân tán CSDL (replication). Trường
hợp này được gọi là hệ thống CSDL phân tán.

6./ Các qui tắc của TS. Codd về HQT CSDL quan hệ

Như thế nào được gọi là một HQT CSDL quan hệ? TS. Codd đưa ra 12 qui tắc, qua
đó các HQT CSDL quan hệ phải tuân thủ. Hay nói cách khác, một HQT CSDL muốn
được gọi là HQT CSDL quan hệ khi nó thỏa mãn 12 qui tắc đã đề ra. Điểm đặc biệt là
trên thực tế chưa có HQT CSDL quan hệ nào thực hiện được đầy đủ 12 qui tắc này.
Tuy nhiên, tác giả liệt kê ra 12 qui tắc này để chúng ta cùng tham khảo và có thể coi
đó như là một cách để hiểu thêm CSDL quan hệ.

Bai-2.doc *** Trang 5


Cơ sở dữ liệu
ThS. Lê Văn Lợi

Qui tắc #1. Dữ liệu được thể hiện dưới dạng bảng

• Tập hợp các bảng tạo thành CSDL và dữ liệu được trình bày dưới dạng bảng; dữ
liệu không được trình bày bằng bất cứ phương thức nào khác.
• Một bảng (cũng đồng nghĩa với một quan hệ hoặc một thực thể) là nhóm dữ liệu
có mối quan hệ với nhau dưới dạng các dòng và các cột.
• Mỗi một dòng (cũng đồng nghĩa với một bản ghi, một tuple) mô tả một đơn vị dữ
liệu (người, vật, đối tượng nói chung) trong bảng.
• Mỗi một cột (còn gọi là trường, thuộc tính) mô tả một đặc trưng của dữ liệu trong
bảng
• Mỗi một giá trị dữ liệu là điểm dữ liệu giao nhau giữa hàng và cột
• Mỗi một giá trị là một nguyên tử - nghĩa là không có hai giá trị trở lên đối với một
điểm giao giữa hàng và cột
• Không xếp hạng bảng và không có thứ tự đối với bảng
• Mối quan hệ giữa các bảng chỉ mang tính logic, không có quan hệ vật lý.

Qui tắc #2. Dữ liệu được truy cập một cách logic

• CSDL quan hệ không tham chiếu dữ liệu bằng các vị trí vật lý. Sẽ không có khái
niệm dòng thứ năm trong một bảng.
• Mỗi một giá trị bất kỳ trong bảng luôn luôn có thể truy xuất bằng:
1. một bảng;
2. giá trị khóa hoặc giá trị duy nhất; và
3. một cột

Qui tắc #3. Giá trị Null được xử lý một cách thống nhất là “không biết”

• Null luôn luôn được hiểu là một giá trị không biết
• Null có nghĩa là không có giá trị nào được đưa vào và giá trị đó không được biết
(HQT CSDL phải có cơ chế đặc biệt để lưu)
• ‘Không biết’ không đồng nghĩa với trắng hay số không (0).
• Ví dụ, một mặt hàng nào đó chưa có giá không đồng nghĩa với việc mặt hàng đấy
là miễn phí
• Null cần được xử lý đặc biệt, nếu không sẽ dẫn đến nhầm lẫn
• Trong một biểu thức số học có các số hạng là Null thì kết quả luôn luôn là Null
(Vd., 2 + NULL = NULL)
• So sánh Null với bất cứ giá trị nào cũng luôn luôn cho kết quả Null

Qui tắc #4. CSDL quan hệ phải tự mô tả (Database is Self-Describing)

• Ngoài dữ liệu người dùng, CSDL quan hệ còn có dữ liệu về chính nó


• Có hai loại bảng trong HQT CSDL quan hệ: các bảng dữ liệu người dùng và các
bảng dữ liệu hệ thống mô tả về cấu trúc của CSDL
• Siêu dữ liệu (Metadata) là dữ liệu mô tả cấu trúc của chính CSDL đó trong đó bao
gồm định nghĩa của các đối tượng (bảng, chỉ mục, store procedure, ...) và mô tả
các quan hệ giữa các đối tượng đó.
• Tập hợp các bảng hệ thống cũng có tên gọi là Catalog hệ thống hoặc từ điển dữ
liệu.
• Bảng hệ thống cũng được truy cập như các bảng thông thường

Bai-2.doc *** Trang 6


Cơ sở dữ liệu
ThS. Lê Văn Lợi

Qui tắc #5. Chỉ một ngôn ngữ duy nhất được sử dụng để giao tiếp với HQT
CSDL

• Chỉ duy nhất một ngôn ngữ dùng để giao tiếp với HQT CSDL
• Ngôn ngữ này phải hỗ trợ các phép toán quan hệ: các phép toán thay đổi dữ liệu
(data modifications) (VD. SELECT, INSERT, UPDATE, DELETE), các phép
toán định nghĩa dữ liệu (VD. CREATE, ALTER, DROP) và các phép toán quản
trị (VD. GRANT, REVOKE, DENY, BACKUP, RESTORE)
• Structured Query Language (SQL) là chuẩn mặc nhiên của ngôn ngữ CSDL quan
hệ
• SQL không phải là ngôn ngữ thủ tục mà là ngôn ngữ khai báo; Nó cho phép người
dùng biểu diễn những gì họ muốn và HQT CSDL sẽ thực hiện các yêu cầu đó chứ
không cần mô tả là phải thực hiện những yêu cầu đó như thế nào.

Qui tắc #6. Cho phép xem dữ liệu bằng nhiều phương pháp khác nhau

• CSDL quan hệ không chỉ giới hạn việc trình diễn dữ liệu từ các bảng gốc
• Khuông nhìn gồm các bảng ảo, các bảng trừu tượng được xây dựng từ các bảng
gốc
• Khuông nhìn (View) là một phương thức quan sát dữ liệu đến một hoặc nhiều
bảng
• Khuông nhìn (View) không phải là bản sao của bảng
• Khi một View đã được tạo ra, nó được xử lý giống hệt như bảng
• Nếu ta thay đổi dữ liệu của một View, thì dữ liệu ở bảng gốc cũng bị thay đổi (tuy
nhiên, có một số qui tắc nhất định vì không phải trường nào trong một view cũng
có thể sửa đổi được)
• Views cho phép tạo ra các bảng mới theo ý muốn từ các bảng gốc
• VÍ DỤ: Bằng cách tạo ra một view, chúng ta có thể che các dữ liệu nhạy cảm đối
với một lớp đối tượng người dùng
• Views cho phép ta tạo ra các bảng phức tạp theo các qui tắc tác nghiệp từ các
bảng gốc đơn giản bằng toán tử JOIN

Qui tắc #7. Hỗ trợ các phép toán quan hệ và các phép toán tập hợp

• Các dòng trong bảng được xử lý như là các tập hợp đối với các toán tử điều khiển
dữ liệu (SELECT, INSERT, UPDATE, DELETE)
• CSDL quan hệ phải hỗ trợ các toán tử của đại số quan hệ (selection, projection; &
join ) và toán tử tập hợp (union, intersection, division, và difference)
• Các toán tử tập hợp và các toán tử đại số quan hệ sẽ tạo ra các bảng mới

Qui tắc #8. Tính độc lập với dữ liệu lưu dạng vật lý (Physical Data Independence)

• Các ứng dụng có truy cập CSDL quan hệ sẽ không bị ảnh hưởng gì khi cấu trúc
bên trong của CSDL thay đổi. Người dùng chỉ biết đến các bảng, không cần quan
tâm đến việc các bảng đấy được tổ chức như thế nào trên đĩa.
• Các ứng dụng chỉ cần định nghĩa dữ liệu dưới dạng logic (kiểu dữ liệu và độ dài);
chúng không cần biết đến việc lưu dữ liệu như thế nào (data type and length);

Bai-2.doc *** Trang 7


Cơ sở dữ liệu
ThS. Lê Văn Lợi

Qui tắc #9. Tính độc lập dữ liệu logic (Logical Data Independence)

• Tính độc lập dữ liệu là quan hệ giữa các bảng có thể thay đổi mà không làm ảnh
hưởng đến chương trình ứng dụng sử dụng các bảng đó.
• Lược đồ CSDL, cấu trúc của các bảng có thể thay đổi mà không làm thay đổi ứng
dụng

Qui tắc #10. Tính toàn vẹn dữ liệu cần được đảm bảo trong một HQT CSDL
quan hệ

• Để được gọi là một HQT CSDL quan hệ, hệ đó phải đảm bảo tính toàn vẹn dữ
liệu. Nói cách khác đảm bảo tình toàn vẹn dữ liệu là trách nhiệm của HQT CSDL,
không phải là trách nhiệm của chương trình ứng dụng
• Toàn vẹn dữ liệu là tính thống nhất và tính chính xác của dữ liệu. Nói cách khác
CSDL không có dữ liệu “rác”.
• Có 3 dạng toàn vẹn dữ liệu: toàn vẹn thực thể, toàn vẹn miền và toàn vẹn tham
chiếu
• Trong CSDL, tính toàn vẹn có thể được thực hiện bằng các qui trình thủ tục hoặc
các qui trình khai báo
• Tính toàn vẹn thực hiện theo thủ tục thực chất là viết các chương trình để đảm bảo
các ràng buộc

Qui tắc #11. Hỗ trợ xử lý phân tán (Supports Distributed Operations)

• Dữ liệu trong CSDL quan hệ có thể lưu tập trung hoặc phân tán
• Người dùng có thể liên kết dữ liệu từ các bảng đặt trên các máy chủ khác nhau
(gọi là truy vấn phân tán) hoặc đặt từ các CSDL khác nhau (gọi là truy vấn hỗn
hợp)
• Tính toàn vẹn dữ liệu cần luôn luôn được đảm bảo dù cho dữ liệu gồm nhiều bản
sao và phân tán nhiều nơi

Qui tắc #12. Tính toàn vẹn dữ liệu không thể bị phá vỡ

• Ngoài các phép toán cơ bản đã nêu, HQT CSDL phải đảm bảo là không có con
đường nào khác có thể phá vỡ tính toàn vẹn dữ liệu.
• HQT CSDL phải đảm bảo là không thể dùng ngôn ngữ máy để có thể phá vỡ được
tính toàn vẹn dữ liệu

7./ Bài tập

Bài tập 2.1 - Giải thích các thuật ngữ:

■ Client
■ Server
■ Backend
■ Frontend
■ SQL
■ Xứ lý phân tán

Bai-2.doc *** Trang 8


Cơ sở dữ liệu
ThS. Lê Văn Lợi

Bài tập 2.2 - Nêu lợi ích của xử lý phân tán

Bài tập 2.3 - Giải thích vai trò của DBA

Bài tập 2.4 - Giải thích vai trò của HQT CSDL

Bài tập 2.5 - Nêu đặc trưng cơ bản của CSDL mô hình quan hệ

Bai-2.doc *** Trang 9

You might also like