Professional Documents
Culture Documents
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.
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 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.
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.
■ Từ điển dữ liệu
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.
■ 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, ...
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ô hình trong Hình 1 chính là mô hình được sử dụng rộng rãi hiện nay.
■ 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ệ.
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 #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);
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
• 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
■ Client
■ Server
■ Backend
■ Frontend
■ SQL
■ Xứ lý phân tán
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ệ