You are on page 1of 21

Cơ sở dữ liệu (Database)

Table, Record và Field

Nói đến cơ sở dữ liệu, ta lập tức nghĩ đến SQLServer, Access hay Oracle .v.v., những nơi
chứa rất nhiều dữ liệu để ta có thể lưu trữ hay lấy chúng ra một cách tiện lợi và nhanh
chóng. Hầu hết các chương trình ta viết đều có truy cập cơ sở dữ liệu, và ta dùng nó như
một công cụ để làm việc với rất nhiều dữ liệu trong khi tập trung vào việc lập trình phần
giao diện với người dùng (users).

Do đó ta cần có một kiến thức căn bản về kiến trúc của cơ sở dữ liệu để hiểu lý do tạo sao
ta thiết kế hay truy cập nó theo những cách nhất định.

Ta sẽ dùng Access Database biblio.mdb, nằm ở C:Program FilesMicrosoft Visual


StudioVB98biblio.mdb để minh họa các ý niệm cần biết về cơ sở dữ liệu.

Trong database nầy có 4 tables: Authors (tác giả), Publishers (nhà xuất bản), Titles (đề
mục) và Title Author.

Table Authors chứa nhiều records. Mỗi record trong table Authors chứa 3 fields: Au_ID,
Author và Year Born (năm sinh). Ta có thể trình bày Table Authors dưới dạng một
spreadsheet như sau:

Vì cùng một field của các records hiển thị trong cùng một cột của spreadsheet, nên ta cũng
nói đến một field như một column (cột). Và vì mỗi data record chiếm một row (hàng) của
spreadsheet, nên có khi ta cũng nói đến một record như một row.
Thật tình mà nói, ta không cần phải có một computer để lưu trữ hay làm việc với một table
như Authors nầy. Ta đã có thể dùng một hộp cạt, trên mỗi cạt ta ghi các chi tiết Au_ID,
Author và Year Born của một Author. Như thế mỗi tấm cạt tương đương với một record và
nguyên cái hộp là tương đương với Table Authors.

Ta sẽ sắp các cạt trong hộp theo thứ tự của số Au_ID để có thể truy cập record nhanh chóng
khi biết Au_ID. Chỉ khổ một nỗi, nếu muốn biết có bao nhiêu tác giả, trong số 300 cạt trong
hộp, già hơn 50 tuổi thì phải mất vài phút mới có thể trả lời được. Database trong computer
nhanh hơn một hệ thống bằng tay (Manual) là ở chỗ đó.

Primary Key và Index

Để tránh sự trùng hợp, thường thường có một field của record, thí dụ như Au_ID trong Table
Authors, được dành ra để chứa một trị số độc đáo (unique). Tức là trong Table Authors chỉ
có một record với field Au_ID có trị số ấy mà thôi. Ta gọi nó là Primary Key.

Không phải lúc nào ta cũng muốn truy cập một record Author dựa vào Au_ID. Nhiều khi ta
muốn dùng chính tên của Author để truy cập, do đó ta cũng cần phải sort sẵn các records
theo thứ tự alphabet. Ta cũng có thể hợp nhiều fields lại để sort các records. Thật ra, chính
các records không cần phải được dời đi để nằm đúng vị trí thứ tự. Ta chỉ cần nhớ vị trí của
nó ở đâu trong table là đủ rồi.

Cái field hay tập hợp của nhiều fields (thí dụ surname và firstname ) để dùng vào việc
sorting nầy được gọi là Index (ngón tay chỉ). Một Table có thể có một hay nhiều Index. Mỗi
Index sẽ là một table nhỏ của những pointers, chứa vị trí của các records trong Table
Authors. Nó giống như mục lục index ở cuối một cuốn sách chứa trang số để chỉ ta đến đúng
phần ta muốn tìm trong quyển sách.

Khi thiết kế một Table ta chỉ định Datatype của mỗi field để có thể kiểm tra data cho vào có
hợp lệ hay không. Các Datatypes thông dụng là Number, String (để chứa Text), Boolean
(Yes/No), Currency (để chứa trị số tiền) và Date (để chứa date/time). Datatype Number lại
gồm có nhiều loại datatypes về con số như Integer, Long (integer chiếm 32 bits), Single,
Double, .v.v.

Dưới đây là Datatypes của các fields trong record Author


Có loại Datatype đặc biệt tên là AutoNumber. Thật ra nó là Long nhưng trị số được phát sinh
tự động mỗi khi ta thêm một record mới vào Table. Ta không làm gì hơn là phải chấp nhận
con số ấy.

Relationship và Foreign Key

Bây giờ, nếu bạn đang chạy Microsoft Access để quan sát database biblio.mdb, bạn có thể
dùng Menu Command Tools | Relationships như sau để xem sự liên hệ (relationships) giữa
các tables

Access sẽ hiển thị giao thoại Relationships, trong đó mỗi table có chứa tên các fields. Mỗi
table lại có một hay hai sợi dây nối qua các tables klhác. Mỗi sợi dây là một mối liên hệ
(relationship), nó nối một field trong một table với một field có cùng tên trong table kia.
Thí dụ như giữa hai tables Publishers và Titles có mối liên hệ dựa trên field PubID (Publisher
IDentification - số lý lịch của nhà xuất bản). Hơn nữa, nếu để ý bạn sẽ thấy ở đầu dây phía
table Publishers có con số 1, còn ở đầu dây bên phía table Titles có dấu vô cực (∞). Ta gọi
mối liên hệ (1-∞ ) là one-to-many, ý nói một nhà xuất bản có thể phát hành nhiều đề mục
sách/CD.

Tương tự như vậy, trong mối liên hệ one-to-many giữa table Authors và Title Author, ta thấy
một tác giả (bên đầu có con số 1) có thể sáng tác nhiều tác phẩm được đại diện bởi các
record Title Author.

Trong khi đó giữa hai tables Titles và Title Author, ta có một mối liên hê one-to-one, tức là
tương ứng với mỗi record Title chỉ có một record Title Author. Câu hỏi đặt ra là các mối liên
hệ one-to-many có cái gì quan trọng.

Tưởng tượng khi ta làm việc với table Titles (tạm gọi là Tác phẩm), nhiều khi ta muốn biết
chi tiết của nhà xuất bản của tác phẩm ấy. Thật ra ta đã có thể chứa chi tiết của nhà xuất
bản của mỗi tác phẩm ngay trong table Titles. Tuy nhiên, làm như thế có điểm bất lợi là
records của các tác phẩm có cùng nhà xuất bản sẽ chứa những dữ liệu giống nhau. Mỗi lần
muốn sửa đổi chi tiết của một nhà xuất bản ta phải sửa chúng trong mỗi record Title thuộc
nhà xuất bản ấy. Vì muốn chứa chi tiết của mỗi nhà xuất bản ở một chỗ duy nhất, tránh sự
lập lại, nên ta đã chứa chúng trong một table riêng, tức là table Publishers.

Nếu giả sử ta bắt đầu thiết kế database với Table Titles, rồi quyết định tách các chi tiết về
nhà xuất bản để vào một table mới, tên Publishers, thì kỹ thuật ấy được gọi là
normalization. Nói một cách khác, normalization là thiết kế các tables trong database làm
sao để mỗi loại mảnh dữ kiện (không phải là Key) chỉ xuất hiện ở một chỗ.

Trong mối liên hệ one-to-many giữa tables Publishers và Titles, field PubID là Primary Key
trong table Publishers. Trong table Titles, field PubID được gọi là Foreign Key, có nghĩa rằng
đây là Primary Key của một table lạ (foreign). Hay nói một cách khác, trong khi làm việc với
table Titles, lúc nào cần chi tiết một nhà xuất bản, ta sẽ lấy chìa khóa lạ (Foreign Key) dùng
làm Primary Key của Table Publishers để truy cập record ta muốn. Để ý là chính Table Titles
có Primary Key ISBN của nó.

Relational Database
Một database có nhiều tables và hổ trợ các liên hệ, nhất là one-to-many, được gọi là
Relational Database. Khi thiết kế một database, ta sẽ tìm cách sắp đặt các dữ liệu từ thế
giới thật bên ngoài vào trong các tables. Ta sẽ quyết định chọn các cột (columns/fields) nào,
chọn Primary Key, Index và thiết lập các mối liên hệ, tức là đặt các Foreign Key ở đâu.

Các lợi ích


Trong số các lợi ích của một thiết kế Relational Database có:
Sửa đổi dữ kiện, cho vào records mới hay delete (gạch bỏ) records có sẵn rất hiệu quả
(nhanh).
Truy cập dữ kiện, làm báo cáo (Reports) cũng rất hiệu quả.
Vì dữ kiện được sắp đặt thứ tự và có quy củ nên ta có thể tin cậy tính tình của database
(không có ba trợn, khi thì thế nầy, khi thì thế khác - giựt giựt).
Vì hầu hết dữ kiện nằm trong database, thay vì trong chương trình ứng dụng, nên database
tự có documentation (tài liệu cắt nghĩa).
Dễ sửa đổi chính cấu trúc của các tables.
Integrity Rules (các quy luật liêm chính)
Integrity Rules được dùng để nói về những qui luật cần phải tuân theo trong khi làm việc với
database để đảm bảo là database còn tốt. Có hai loại quy luật: luật tổng quát (General
Integrity Rules) và luật riêng cho database (Database-Specific Integrity Rules). Các luật
riêng nầy thường tùy thuộc vào các quy luật về mậu dịch (Business Rules).
General Integrity Rules
Có hai quy luật liêm chính liên hệ hoàn toàn vào database: Entity (bản thể) Integrity Rule
và Referential (chỉ đến) Integrity Rule.

Entity Integrity Rule nói rằng Primary Key không thể thiếu được, tức là không thể có trị
số NULL. Quy luật nầy xác nhận là vì mỗi Primary Key đưa đến một row độc đáo trong table,
nên dĩ nhiên nó phải có một trị số đàng hoàng.

Lưu ý là Primary Key có thể là một Composite Key, tức là tập hợp của một số keys
(columns/fields), nên nhất định không có key nào trong số các columns là NULL được.

Referential Integrity Rule nói rằng database không thể chứa một Foreign Key mà không
có Primary Key tương ứng của nó trong một table khác. Điều ấy hàm ý rằng:

Ta không thể thêm một Row vào trong một Table với trị số Foreign Key trong Row ấy không
tìm thấy trong danh sách Primary Key của table bên phía one (1) mà nó liên hệ.
Nếu có thay đổi trị số của Primary Key của một Row hay delete một Row trong table bên
phía one (1) thì ta không thể để các records trong table bên phía many (∞) chứa những
rows trở thành mồ côi (orphans).
Nói chung, có ba nhiệm ý (options) ta có thể chọn khi thay đổi trị số của Primary Key của
một Row hay delete một Row trong table bên phía one (1):
Disallow (không cho làm): Hoàn toàn không cho phép chuyện nầy xãy ra.
Cascade (ảnh hưởng dây chuyền): Nếu trị số Primary Key bị thay đổi thì trị số Foreign Key
tương ứng trong các records của table bên phía many (∞) được thay đổi theo.
Nếu Row chứa Primary Key bị deleted thì các records tương ứng trong table bên phía many
(∞) bị deleted theo.
Nullify (cho thành NULL): Nếu Row chứa Primary Key bị deleted thì trị số Foreign Key tương
ứng trong các records của table bên phía many (∞) được đổi thành NULL, để hàm ý đừng có
đi tìm thêm chi tiết ở đâu cả.
Database-Specific Integrity Rules
Những quy luật liêm chính nào khác không phải là Entity Integrity Rule hay Referential
Integrity Rule thì được gọi là Database-Specific Integrity Rules. Những quy luật nầy dựa vào
chính loại database và nhất là tùy thuộc vào các quy luật về mậu dịch (Business Rules) ta
dùng cho database, thí dụ như mỗi record về tiền lương của công nhân phải có một field Số
Thuế (Tax Number) do sở Thuế Vụ phát hành cho công dân. Lưu ý là các quy luật nầy cũng
quan trọng không kém các quy luật tổng quát về liêm chính. Nếu ta không áp dụng các
Database-Specific Integrity Rules nghiêm chỉnh thì database có thể bị hư và không còn dùng
được.

Microsoft Access Database Management System (MSAccess DBMS)


Microsoft Access Database Management System gồm có Database Engine và những công cụ
đi chung để cung cấp cho users một môi trường làm việc thân thiện với database, như
Database Design (thiết kế các tables và mối liên hệ), Data entry và báo cáo (reports). Kèm
theo với Visual Basic 6.0 khi ta mua là một copy của Database Engine của MSAccess. Tên nó
là Jet Database Engine, cái lõi của MSAccess DBMS. Các chương trình VB6 có thể truy cập
database qua Jet Database Engine.

Nếu trên computer của bạn có cài sẵn MSAccess, thì bạn có thể dùng đó để thiết kế các
tables của database hay cho data vào các tables.

Properties Required và Allow Zero Length


Khi thiết kế một table field, lưu ý property Required và nhất là property Allow Zero Length
của Text. Nếu property Required của một field là Yes thì ta không thể update (viết) một
record với field ấy có trị số NULL. Nếu một Text field có property Allow Zero Length là No thì
thì ta không thể update một record khi field ấy chứa một empty string
Hình này đã được thu nhỏ lại. Hãy click vào đây để xem hình phóng lớn. Hình gốc có kích thước 870x365 và dung lượng 15KB.

Khi ta tạo một record lần đầu, nếu không cho trị số của một field, thì field ấy có trị số là
NULL. Thường thường, Visual Basic 6.0 không thích NULL value nên ta phải thử một field với
Function IsNULL() để đảm bảo nó không có trị số NULL trước khi làm việc với nó. Nếu
IsNULL trả về trị số False thì ta có thể làm việc với field ấy. Nhớ là khi trị số NULL được dùng
trong một expression, ngay cả khi chương trình không cho Error, kết quả cũng là NULL.

Làm việc với các versions khác nhau


Nếu máy bạn đang chạy MSAccess2002 thì bạn có thể làm việc với Access database file
version 97, 2000 và 2002. Nếu cần phải convert từ version nầy qua version khác, bạn có
thể dùng Access DBMS Menu Command Tools | Database Utilities | Convert Database | To
Access 2002 File Format.... Nếu muốn giữ nguyên version, bạn có thể convert database qua
File Format 2002 để sửa đổi, rồi sau đó convert trở lại File Format cũ.

Access database file lớn lên rất nhanh, vì các records đã bị deleted vẫn còn nằm nguyên,
nên mỗi tuần bạn nên nhớ nén nó lại để bỏ hết các records đã bị deleted bằng cách dùng
Access DBMS Menu Command Tools | Database Utilities | Compact and Repair Database...
hay dùng function DBEngine.CompactDatabase trong VB6.

Dùng Query để viết SQL


Một cách để truy cập database là dùng ngôn ngữ Structured Query Language (SQL) theo
chuẩn do ISO/IEC phát hành năm 1992, gọi tắt là SQL92. Tất cả mọi database thông dụng
đều hỗ trợ SQL, mặc dầu nhiều khi chúng còn cho thêm nhiều chức năng rất hay nhưng
không nằm trong chuẩn. Các lệnh SQL thông dụng là SELECT, UPDATE, INSERT và DELETE.
Ta có thể dùng phương tiện thiết kế Query của MSAccess để viết SQL. Sau khi thiết kế
Query bằng cách drag drop các fields, bạn có thể dùng Menu Command View | View SQL
như sau:
Tiếp theo đây là SQL statement của Query bên trên mà bạn có thể copy để paste vào trong
code VB6:

Dùng Link Table để làm việc trực tiếp với database loại khác
Ta có thể dùng một database loại khác, như DBase, trực tiếp trong VB6 như dùng một
Access database bình thường. Muốn thiết lập móc nối ấy, bạn dùng Menu Command File |
Get External Data | Link Tables... rồi chọn loại DBase và chính file của table mà bạn muốn
dùng để nhét nó vào Access database đang mở:
Database Server và một số ý niệm
Dù Jet Database Engine là một relational database rất tốt và hiệu năng, nó thuộc loại File
Based database, tức là nó thụ động, không chạy một mình nhưng phải tùy thuộc vào
chương trình dùng nó. File Based database không thích hợp với những ứng dụng có nhiều
người dùng cùng một lúc.

Trong khi đó, một Database Server như SQLServer chạy riêng để phục vụ bất cứ chương
trình khách (client) nào cần. Database Server thich hợp cho các ứng dụng có nhiều users vì
chỉ có một mình nó chịu trách nhiệm truy cập dữ liệu cho mọi clients. Nó có thể chứa nhiều
routines địa phương, gọi là Stored Procedures, để thực hiện các công tác client yêu cầu rất
hiệu năng. Database Server thường có cách đối phó hữu hiệu khi có sự cố về phần cứng như
đĩa hư hay cúp điện. Ngoài ra, Database Server có sẵn các phương tiện về an ninh và
backup. Nó cũng có thêm các chức năng để dùng cho mạng.

Ngày nay ta thâu thập dữ liệu dưới nhiều hình thức như Email, Word documents,
Speadsheet. Không nhất thiết dữ liệu luôn luôn được chứa dưới dạng table của những
records và không nhất thiết dữ liệu luôn luôn được lưu trữ trong một database đàng hoàng.
Dù vậy, chúng vẫn được xem như database dưới mắt một chương trình ứng dụng. Do đó, ta
dùng từ Data Store (Kho dữ liệu) thay thế cho database để nói đến nơi chứa dữ liệu. Và đối
với chương trình tiêu thụ dữ liệu, ta nói đến Data Source (Nguồn dữ liệu) thay vì database.

Khi lập trình bằng VB6 để truy cập database, ta nhìn databse một cách trừu tượng, tức là
dầu nó là Access, DBase, SQLServer hay Oracle ta cũng xem như nhau. Nếu có thay đổi loại
database bên dưới, cách lập trình của ta cũng không thay đổi bao nhiêu.

Trong tương lai, một XML file cũng có thể được xem như một database nho nhỏ. Nó có thể
đứng một mình hay là một table trích ra từ một database chính huy. XML là một chuẩn mà
ta có thể dùng để import/export dữ liệu với tất cả mọi loại database hỗ trợ XML. Ta có thể
trao đổi dữ liệu trên mạng Intenet dưới dạng XML. Ngoài ra, thay vì làm việc trực tiếp với
một database lớn, ta có thể trích ra vài tables từ database ấy thành một XML file. Kế đó ta
chỉ lập trình với XML file cho đến khi kết thúc sẽ hòa (merge/reconcile) XML file với database
lớn. Nếu phần lớn các chương trình áp dụng được thiết kế để làm việc cách nầy, thì trong
tương lai ta không cần một Database Server thật mạnh

CÁC CẤU HÌNH CƠ SỞ DỮ LIỆU CLIENT/SERVER

Nhìn chung mọi ứng dụng cơ sở dữ liệu đều bao gồm các phần:

- Thành phần xử lý ứng dụng (Application processing components)


- Thành phần phần mềm cơ sở dữ liệu (Database software componets)
- Bản thân cơ sở dữ liệu (The database itself)

Các mô hình về xử lý cơ sở dữ liệu khác nhau là bởi các trường hợp của 3 loại thành phần
nói trên định vị ở đâu. Bài viết này này xin giới thiệu 5 mô hình kiến trúc dựa trên cấu hình
phân tán về truy nhập dữ liệu của hệ thống máy tính Client/Server.

- Mô hình cơ sở dữ liệu tập trung (Centralized database model)


- Mô hình cơ sở dữ liệu theo kiểu file - server (File - server database model)
- Mô hình xử lý từng phần cơ sở dữ liệu (Database extract processing model)
- Mô hình cơ sở dữ liệu Client/Server (Client/Server database model)
- Mô hình cơ sở dữ liệu phân tán (Distributed database model)

1. Mô hình cơ sở dữ liệu tập trung (Centralized database model)

Trong mô hình này, các thành phần xử lý ứng dụng, phần mềm cơ sở dữ liệu và bản thân cơ
sở dữ liệu đều ở trên một bộ xử lý.

Ví dụ người dùng máy tính cá nhân có thể chạy các chương trình ứng dụng có sử dụng phần
mềm cơ sở dữ liệu Oracle để truy nhập tới cơ sở dữ liệu nằm trên đĩa cứng của máy tính cá
nhân đó. Từ khi các thành phần ứng dụng, phần mềm cơ sở dữ liệu và bản thân cơ sở dữ
liệu cùng nằm trên một máy tính thì ứng dụng đã thích hợp với mô hình tập trung.

Hầu hết công việc xử lý luồng thông tin chính được thực hiện bởi nhiều tổ chức mà vẫn phù
hợp với mô hình tập trung. Ví dụ một bộ xử lý mainframe chạy phần mềm cơ sở dữ liệu IMS
hoặc DB2 của IBM có thể cung cấp cho các trạm làm việc ở các vị trí phân tán sự truy nhập
nhanh chóng tới cơ sở dữ liệu trung tâm. Tuy nhiên trong rất nhiều hệ thống như vậy, cả 3
thành phần của ứng dụng cơ sở dữ liệu đều thực hiện trên cùng một máy mainframe do vậy
cấu hình này cũng thích hợp với mô hình tập trung.

2. Mô hình cơ sở dữ liệu theo kiểu file - server (File - server database model)
Trong mô hình cơ sở dữ liệu theo kiểu file - server các thành phần ứng dụng và phần mềm
cơ sở dữ liệu ở trên một hệ thống máy tính và các file vật lý tạo nên cơ sở dữ liệu nằm trên
hệ thống máy tính khác. Một cấu hình như vậy thường được dùng trong môi trường cục bộ,
trong đó một hoặc nhiều hệ thống máy tính đóng vai trò của server, lưu trữ các file dữ liệu
cho hệ thống máy tính khác thâm nhập tới. Trong môi trường file - server, phần mềm mạng
được thi hành và làm cho các phần mềm ứng dụng cũng như phần mềm cơ sở dữ liệu chạy
trên hệ thống của người dùng cuối coi các file hoặc cơ sở dữ liệu trên file server thực sự như
là trên máy tính của người chính họ.

Mô hình file server rất giống với mô hình tập trung. Các file cơ sở dữ liệu nằm trên máy khác
với các thành phần ứng dụng và phần mềm cơ sở dữ liệu; tuy nhiên các thành phần ứng
dụng và phần mềm cơ sở dữ liệu có thể có cùng thiết kế để vận hành một môi trường tập
trung. Thực chất phần mềm mạng đã làm cho phần mềm ứng dụng và phần mềm cơ sở dữ
liệu tưởng rằng chúng đang truy nhập cơ sở dữ liệu trong môi trường cục bộ. Một môi
trường như vậy có thể phức tạp hơn mô hình tập trung bởi vì phần mềm mạng có thể phải
thực hiện cơ chế đồng thời cho phép nhiều người dùng cuối có thể truy nhập vào cùng cơ sở
dữ liệu.

3. Mô hình xử lý từng phần cơ sở dữ liệu (Database extract processing model)

Một mô hình khác trong đó một cơ sở dữ liệu ở xa có thể được truy nhập bởi phần mềm cơ
sở dữ liệu, được gọi là xử lý dữ liệu từng phần

Với mô hình này, người sử dụng có thể tại một máy tính cá nhân kết nối với hệ thống máy
tính ở xa nơi có dữ liệu mong muốn. Người sử dụng sau đó có thể tác động trực tiếp đến
phần mềm chạy trên máy ở xa và tạo yêu cầu để lấy dữ liệu từ cơ sở dữ liệu đó. Người sử
dụng cũng có thể chuyển dữ liệu từ máy tính ở xa về chính máy tính của mình và vào đĩa
cứng và có thể thực hiện việc sao chép bằng phần mềm cơ sở dữ liệu trên máy cá nhân.

Với cách tiếp cận này, người sử dụng phải biết chắc chắn là dữ liệu nằm ở đâu và làm như
thế nào để truy nhập và lấy dữ liệu từ một máy tính ở xa. Phần mềm ứng dụng đi kèm cần
phải có trên cả hai hệ thống máy tính để kiểm soát sự truy nhập dữ liệu và chuyển dữ liệu
giữa hai hệ thống. Tuy nhiên, phần mềm cơ sở dữ liệu chạy trên hai máy không cần biết
rằng việc xử lý cơ sở dữ liệu từ xa đang diễn ra vì người sử dụng tác động tới chúng một
cách độc lập.

4. Mô hình cơ sở dữ liệu Client/Server (Client/Server database model)

Trong mô hình cơ sở dữ liệu Client/Server, cơ sở dữ liệu nằm trên một máy khác với các máy
có thành phần xử lý ứng dụng. Nhưng phần mềm cơ sở dữ liệu được tách ra giữa hệ thống
Client chạy các chương trình ứng dụng và hệ thống Server lưu trữ cơ sở dữ liệu.

Trong mô hình này, các thành phần xử lý ứng dụng trên hệ thống Client đưa ra yêu cầu cho
phần mềm cơ sở dữ liệu trên máy client, phần mềm này sẽ kết nối với phần mềm cơ sở dữ
liệu chạy trên Server. Phần mềm cơ sở dữ liệu trên Server sẽ truy nhập vào cơ sở dữ liệu và
gửi trả kết quả cho máy Client.

Mới nhìn, mô hình cơ sở dữ liệu Client/Server có vẻ giống như mô hình file - server, tuy
nhiên mô hình Client/Server có rất nhiều thuận lợi hơn mô hình file - server. Với mô hình file
- server, thông tin gắn với sự truy nhập cơ sở dữ liệu vật lý phải chạy trên toàn mạng. Một
giao tác yêu cầu nhiều sự truy nhập dữ liệu có thể gây ra tắc nghẽn lưu lượng truyền trên
mạng.
Giả sử một người dùng cuối tạo ra một vấn tin để lấy dữ liệu tổng số, yêu cầu đòi hỏi lấy dữ
liệu từ 1000 bản ghi, với cách tiếp cận file - server nội dung của tất cả 1000 bản ghi phải
đưa lên mạng, vì phần mềm cơ sở dữ liệu chạy trên máy của người sử dụng phải truy nhập
từng bản ghi để thoả mãn yêu cầu của người sử dụng. Với cách tiếp cận cơ sở dữ liệu
Client/Server, chỉ có lời vấn tin khởi động ban đầu và kết quả cuối cùng cần đưa lên mạng,
phần mềm cơ sở dữ liệu chạy trên máy lưu giữ cơ sở dữ liệu sẽ truy nhập các bản ghi cần
thiết, xử lý chúng và gọi các thủ tục cần thiết để đưa ra kết quả cuối cùng.

Front-end software

Trong mô hình cơ sở dữ liệu Client/Server, thường nói đến các phần mềm front-end software
và back-end software. Front-end software được chạy trên một máy tính cá nhân hoặc một
workstation và đáp ứng các yêu cầu đơn lẻ riêng biệt, phần mềm này đóng vai trò của Client
trong ứng dụng cơ sở dữ liệu Client/Server và thực hiện các chức năng hướng tới nhu cầu
của người dùng cuối cùng, phần mềm Front-end software thường được chia thành các loại
sau:

- End user database software: Phần mềm cơ sở dữ liệu này có thể được thực hiện bởi người
sử dụng cuối trên chính hệ thống của họ để truy nhập các cơ sở dữ liệu cục bộ nhỏ cũng như
kết nối với các cơ sở dữ liệu lớn hơn trên cơ sở dữ liệu Server.
- Simple query and reporting software: Phần mềm này được thiết kế để cung cấp các công
cụ dễ dùng hơn trong việc lấy dữ liệu từ cơ sở dữ liệu và tạo các báo cáo đơn giản từ dữ liệu
đã có.
- Data analysis software: Phần mềm này cung cấp các hàm về tìm kiếm, khôi phục, chúng
có thể cung cấp các phân tích phức tạp cho người dùng.
- Application development tools: Các công cụ này cung cấp các khả năng về ngôn ngữ mà
các nhân viên hệ thống thông tin chuyên nghiệp sử dụng để xây dựng các ứng dụng cơ sở
dữ liệu của họ. Các công cụ ở đây bao gồm các công cụ về thông dịch, biên dịch đơn đến
các công cụ CASE (Computer Aided Software Engineering), chúng tự động tất cả các bước
trong quá trình phát triển ứng dụng và sinh ra chương trình cho các ứng dụng cơ sở dữ liệu.
- Database administration Tools: Các công cụ này cho phép người quản trị cơ sở dữ liệu sử
dụng máy tính cá nhân hoặc trạm làm việc để thực hiện việc quản trị cơ sở dữ liệu như định
nghĩa các cơ sở dữ liệu, thực hiện lưu trữ hay phục hồi.

Back-end software

Phần mềm này bao gồm phần mềm cơ sở dữ liệu Client/Server và phần mềm mạng chạy
trên máy đóng vai trò là Server cơ sở dữ liệu.

5. Distributed database model (Mô hình cơ sở dữ liệu phân tán)

Cả hai mô hình File - Server và Client/Server đều giả định là dữ liệu nằm trên một bộ xử lý
và chương trình ứng dụng truy nhập dữ liệu nằm trên một bộ xử lý khác, còn mô hình cơ sở
dữ liệu phân tán lại giả định bản thân cơ sở dữ liệu có ở trên nhiều máy khác nhau.

SQL - CÔNG CỤ QUẢN LÝ CSDL ĐIỂN HÌNH

SQL là một công cụ quản lý dữ liệu được sử dụng phổ biến ở nhiều lĩnh vực. Nếu bạn không
có nhiều thời gian để nghiên cứu sâu về tin học mà lại có nhiều dữ liệu cần phải được phân
tích, xử lý, thì hãy dùng SQL vì SQL đơn giản nhưng rất hiệu quả. Hầu hết tất cả các ngôn
ngữ lập trình cấp cao đều có hỗ trợ SQL. Có thể kể ra như MS Visual Basic, MS Access, MS
Visual Foxpro, DBase, DB2, Paradox, Oracle....

Đầu tiên SQL được sử dụng trong các ngôn ngữ quản lý CSDL và chạy trên máy đơn lẻ. Do
sự phát triển nhanh chóng của nhu cầu xây dựng những CSDL lớn theo mô hình khách/chủ
(Client/Server), nhiều phần mềm sử dụng ngôn ngữ SQL đã ra đời mà điển hình là MS SQL
Server, Oracle, Sybase... Trong mô hình khách/chủ, toàn bộ CSDL được tập trung lưu trữ
trên máy chủ (Server), mọi thao tác xử lý dữ liệu được thực hiện trên máy chủ bằng các
lệnh SQL. Máy trạm (Client) chỉ dùng để cập nhật dữ liệu cho máy chủ hoặc lấy thông tin từ
máy chủ.

Trên lĩnh vực đang phát triển hiện nay là Internet, ngôn ngữ SQL lại càng đóng vai trò quan
trọng hơn. Nó được sử dụng để nhanh chóng tạo ra các trang Web động (Dynamic Web
Page). Trang Web động thường có nội dung được lấy ra từ CSDL. SQL có thể được sử dụng
như một chất keo kết dính giữa CSDLvà trang Web. Khi người dùng yêu cầu, SQL sẽ thực
hiện việc truy cập thông tin trong CSDL trên máy chủ và hiển thị kết quả trên trang Web. Và
SQL cũng là công cụ để cập nhật thông tin cho CSDLđó.

Vậy SQL là gì mà lại có vai trò quan trọng đến như vậy? Trước hết SQL là viết tắt của cụm
từ Structure Query Language, tạm dịch là ngôn ngữ truy vấn có cấu trúc. Có nghĩa là SQL
chỉ làm việc với những dữ liệu có cấu trúc dạng bảng (table) như của Foxpro, DBase, Access
... Nếu bạn chỉ làm việc với các tệp dữ liệu dạng văn bản như của Winword, hay các ảnh,
âm thanh ... thì bạn không thể ứng dụng SQL được.

Đối tượng của SQL là các bảng dữ liệu và các bảng này bao gồm nhiều cột và hàng. Cột
được gọi là trường và hàng là bản ghi của bảng. Cột với tên gọi và kiểu dữ liệu xác định tạo
nên cấu trúc của bảng. Khi bảng được tổ chức có hệ thống cho một mục đích, công việc nào
đó ta có một CSDL. Trong công việc hàng ngày thường gặp rất nhiều loại bảng khác nhau
như bảng danh sách nhân viên, danh sách phòng ban, bảng lương, bảng quyết toán... Khi
bảng này được lưu thành CSDL thì có thể dùng SQL để phân tích, xử lý thông tin trong đó.
Kết quả thực hiện của SQL thường là một bảng mới. Ví dụ ta yêu cầu SQL lấy ra từ bảng
Danh sách nhân viên những nhân viên có nhà ở Hà Nội thì SQL sẽ trả về một bảng mới chỉ
chứa các nhân viên có nhà ở Hà Nội. SQL còn được dùng để cập nhật thông tin cho các
CSDL đã có. Ví dụ như cần phải xoá tất cả các phiếu xuất kho hai năm trước đây chẳng hạn.
Bạn có thể mở bảng dữ liệu Phiếu xuất kho ra và tìm kiếm rồi xoá từng phiếu một cách thủ
công, vừa mất thì giờ vừa có khả năng nhầm lẫn hoặc bỏ sót. Khi đó bạn nên dùng SQL với
thời gian thực hiện chỉ tính bằng giây và đảm bảo không có sự nhầm lẫn hay bỏ sót nào cả.
Trong những trường hợp như vậy kết quả câu lệnh SQL không phải là bảng mới mà chính là
bảng đã được bổ sung cập nhật dữ liệu theo yêu cầu. SQL luôn luôn thao tác trên các bảng.
SQL dùng để phân tích, tổng hợp số liệu từ các bảng đã có sẵn, tạo nên các dạng bảng mới,
sửa đổi cấu trúc, dữ liệu của các bảng đã có. Sau khi thực hiện một hay một chuỗi các lệnh
SQL là có thể có đủ số liệu để tạo ra báo cáo theo yêu cầu công việc. Vì mục tiêu của các
chương trình quản lý CSDL là quản lý dữ liệu được lưu trữ trong các bảng nên SQL được
dùng rất thường xuyên trong mọi công việc.

Một trong những lý do khiến SQL ngày càng phổ biến hơn là SQL rất dễ sử dụng. Bạn không
nhất thiết phải là chuyên gia tin học, cũng không cần phải biết lập trình mà vẫn có thể ứng
dụng SQL để xử lý công việc của mình. Thực hiện được điều đó là nhờ có các công cụ trực
quan giúp tạo ra các câu lệnh SQL một cách dễ dàng, hiệu quả, đó là các Query (câu hỏi
truy vấn) trong các phần mềm có sử dụng SQL. Mỗi Query là một câu lệnh SQL được xây
dựng hoàn chỉnh và ghi lại để có thể mang ra sử dụng bất cứ lúc nào. Sản phẩm của một
Query là một bảng mới thì bảng này lại có thể được sử dụng trong các Query khác. Cứ như
vậy ta có thể có một chuỗi các Query trước khi đi đến kết quả cuối cùng. Các Query này
được thiết kế đặc biệt để thể hiện các câu hỏi của bạn về dữ liệu đã lưu trữ và khi chạy nó
sẽ trả về kết quả theo yêu cầu của bạn. Sử dụng Query rất dễ dàng và ít có khả năng mắc
lỗi, thậm chí bạn chỉ cần dùng chuột để tạo ra một câu lệnh SQL hoàn chỉnh. Yêu cầu duy
nhất để sử dụng Query là bạn phải nắm vững cấu trúc CSDL của mình.

Khi thiết kế Query bạn chỉ cần dùng chuột chọn các bảng dữ liệu cần thiết đưa vào Query rồi
chọn các trường sẽ đưa ra, sau đó ghi Query lại với một tên nào đó. Và thế là bạn có thể sử
dụng nó ngay lập tức hoặc dùng nó để xây dựng các Query khác.

Chúng ta sẽ cùng xây dựng một lệnh SQL bằng Query để có thể hiểu rõ hơn công dụng của
nó. Giả sử bạn đã có hai bảng dữ liệu là Nhân viên và Hoá đơn trong MS Access. Bảng Nhân
viên chứa danh sách các nhân viên trong công ty còn bảng Hoá đơn lưu lại tất cả các hoá
đơn đã sử dụng khi bán hàng. Trường Mã nhân viên dùng để kết nối giữa hai bảng. Yêu cầu
là đưa ra báo cáo số tiền bán hàng của từng nhân viên. Ta sẽ xây dựng một Query để thực
hiện yêu cầu trên.

Tạo Query gồm bảng Hoá đơn và bảng Nhân viên kết hợp lại để có được tổng số tiền bán
hàng theo từng tên nhân viên. Sau khi chọn New Query, hộp thoại chọn bảng sẽ hiện ra và
ta chọn hai bảng cần thiết bằng cách nháy đúp lên tên từng bảng hoặc nhấn phím Add sau
khi đã chọn bảng.

Chọn bảng xong ta chọn các trường cần thiết đưa ra kết quả bằng cách nháy đúp chuột lên
tên trường đó. Các trường được chọn sẽ xuất hiện trong bảng lưới phía dưới. Cụ thể ở đây ta
nháy đúp lên trường Tên nhân viên và Thành tiền. Do cần có tổng số tiền bán hàng của
từng nhân viên nên ta phải đánh dấu Totals từ menu View rồi chọn Group by cho Tên nhân
viên và Sum cho Thành tiền và kết quả như trên hình.

Như vậy là bạn đã hoàn thành việc thiết kế một Query và có thể xem câu lệnh SQL đã được
tự động tạo ra bằng cách chọn SQL trong menu View rồi đặt tên Query với một tên tuỳ ý.

Sau đó, khi muốn xem kết quả câu lệnh SQL đã có, bạn chỉ cần cho chạy Query vừa tạo ra
bằng cách nháy đúp lên nó hoặc bấm lên nút Open. Kết quả hiển thị ra màn hình là tổng
hợp những dữ liệu mới nhất trong hai bảng dữ liệu nguồn tại thời điểm chạy Query.

Sau khi sử dụng thành thạo SQL bạn đã có trong tay một công cụ mạnh để xây dựng
chương trình. Khi phải học sử dụng một ngôn ngữ mới nào đó thì bạn không phải học lại từ
đầu cách sử dụng SQL trong ngôn ngữ đó. Phần cốt lõi của SQL là giống nhau trong mọi
ngôn ngữ. Bạn chỉ cần học cách áp dụng SQL trong từng trường hợp cụ thể của ngôn ngữ đó
cùng những điểm cải tiến bổ sung mà thôi.

SQL có khả năng đáp ứng hầu hết các yêu cầu đối với việc cập nhật, phân tích dữ liệu từ các
bảng. Sau đây chúng ta sẽ điểm qua một số công dụng chính của SQL.

- Chọn lọc một số cột nhất định trong bảng dữ liệu:Thường ta không sử dụng tất cả
các thông tin của bảng cùng một lúc. Có thể dùng SQL để tách ra chỉ những cột cần thiết
mà thôi.

- Lọc các bản ghi theo những tiêu chuẩn khác nhau:như tách riêng các hoá đơn của
một khách hàng nào đó, hay in danh sách nhân viên chỉ của một vài phòng ban...

- Sắp xếp các bản ghi theo những tiêu chuẩn khác nhau:Mỗi loại báo cáo thường có
yêu cầu sắp xếp các bản ghi theo những cột khác nhau để tiện cho việc theo dõi. Có báo cáo
thống kê sắp xếp theo khách hàng, báo cáo khác lại sắp xếp theo mặt hàng được bán, mặc
dù tất cả thông tin nằm trong cùng một bảng Bán hàng. Ta có thể thực hiện sắp xếp theo
một hoặc nhiều cột khác nhau bằng SQL.

-Cập nhật, xoá các bản ghi trên toàn bảng theo những điều kiện khác nhau:ví dụ
như khi cần xoá toàn bộ các hoá đơn đã phát hành cách đây 5 năm...

- Kết hợp hai hay nhiều bảng theo chiều ngang:Trong CSDL, mỗi bảng lưu trữ thông tin
về một đối tượng và các bảng liên hệ với nhau qua các trường khoá. Dùng SQL để thực hiện
việc kết hợp các bảng này với nhau thông qua các trường khoá như ở ví dụ trên để có được
bảng kết quả theo yêu cầu.

- Nối hai hay nhiều bảng theo chiều dọc:khi dữ liệu rất lớn hoặc phân tán ở nhiều nơi ta
có thể phải quản lý nhiều bảng theo cùng một mẫu, như mỗi bảng cho một quý, tháng hoặc
một công ty. Khi cần tổng hợp dữ liệu của cả năm hoặc của cả tổng công ty ta có thể dùng
SQL để nối các bảng lại với nhau.

- Tạo bảng mới, thay đổi cấu trúc bảng đã có:Phục vụ cho việc lập trình.

- Thực hiện các phép tính toán thống kê theo từng nhóm:tổng, trung bình, max,
min... Đây là chức năng thường xuyên được sử dụng để tổng hợp thông tin trước khi in báo
cáo như tính tổng số lượng của từng mặt hàng, số hàng đã bán cho từng khách hàng...

- Kết nối với dữ liệu trên máy chủ (Server):Khi kho dữ liệu được tập trung trên máy chủ
trong MS SQL Server hay Oracle ... ta phải dùng lệnh SQL để trực tiếp thâm nhập vào cơ sở
dữ liệu.

- Kết hợp các trang Web với CSDL bằng lệnh SQL.
Có thể phân ra hai loại câu lệnh SQL, một loại tổng hợp dữ liệu sang bảng mới (bảng mới có
thể chỉ tồn tại trong bộ nhớ hoặc được ghi ra đĩa) và một loại chỉ cập nhật dữ liệu, cấu trúc
của các bảng đã có. Bảng mới được tạo ra từ câu lệnh SQL có thể được sử dụng ở mọi nơi
trong chương trình có yêu cầu dữ liệu dạng bảng, đặc biệt dùng cho báo cáo (report), danh
sách (list), đối tượng lưới (grid) ...

Tất cả các chức năng của SQL đều có thể được thực hiện bằng các công cụ khác của các
phần mềm có sử dụng SQL. Tuy nhiên dùng SQL có nhiều ưu điểm lớn so với các cách khác
như là:

- Câu lệnh đơn giản, dễ nhớ, dễ sử dụng và rất ngắn gọn.


- Tốc độ rất cao do được tối ưu hoá với những công nghệ mới.
- Khả năng thực hiện những yêu cầu phức tạp của công việc...

Nếu đã thành thạo lập trình xử lý các công việc, bạn nên tiết kiệm thời gian và sức lực bằng
cách sử dụng SQL.
Câu lệnh SQL ngắn gọn và đơn giản hơn thì khả năng mắc lỗi ít hơn và tốc độ vận hành
nhanh hơn. Trong các ngôn ngữ như Visual Foxpro hay Access bạn được cung cấp công cụ
trực quan để tạo ra Query - câu lệnh SQL được ghi lại độc lập. Sử dụng các công cụ tạo
Query bạn có thể không cần phải nắm vững cú pháp câu lệnh SQL mà vẫn tạo được các
Query phức tạp. Sau khi tạo xong câu lệnh, SQL sẽ được tự động sinh ra và bạn có thể sao
chép dùng vào nhiều việc khác.

Có thể bạn đang tự hỏi nếu SQL đúng là vạn năng như vậy sao không dùng một mình SQL
để xử lý dữ liệu mà vẫn còn phải dùng các công cụ lập trình khác. Tuy SQL có nhiều khả
năng nhưng trong một số trường hợp cụ thể vẫn phải dùng kết hợp với những công cụ lập
trình khác để có được hiệu quả tối đa. Ví dụ như khi bạn cần phải làm việc với từng bản ghi
chứ không phải trên phạm vi toàn bảng, khi bạn đang làm việc với một bản ghi nào đó và
muốn chuyển sang làm việc với một bản ghi ở sau nó, hoặc bạn muốn có được các thông tin
về cấu trúc một bảng (tên cột, kiểu dữ liệu, có khả năng cập nhật không...).

Khả năng của SQL là rất lớn nên nó có phạm vi ứng dụng rộng trong việc quản lý CSDL
bằng máy tính.

Cơ Sở Dữ Liệu Trong máy Tính

CSDL trong máy tính được tổ chức như thế nào? CSDL bao gồm những khái niệm gì

Máy tính đã trở nên thông dụng trong mỗi cơ quan, gia đình. Máy tính chỉ thật sự có ý nghĩa
khi mà nó thay con người quản lý, lưu trữ và xử lý một lượng thông tin lớn mà con người
không thể kiểm soát nổi. Bạn là người có nhiều bạn bè và quen biết rộng, và bạn không
muốn quên ngày sinh của những người thân cũng như số điện thoại của những người quen.
Bạn sử dụng một cuốn sổ nhỏ để ghi lại họ tên, địa chỉ, số điện thoại và ngày sinh của từng
người. Cuốn sổ này rất tiện lợi vì bạn có thể tra bất cứ thứ gì mà bạn ghi lại trong sổ. Như
vậy, bạn đã có một cơ sở dữ liệu đơn giản chứa đựng các thông tin cần thiết về mọi người.

Tuy nhiên, khi số người lên đến hàng trăm hoặc hơn, bạn sẽ thấy ghi sổ cũng còn bất tiện:
bạn không thể tìm nhanh chóng số điện thoại của một người nếu bạn ghi chép tuần tự người
này tiếp sau người kia mà không sắp xếp theo một trật tự nhất định nào đó. Còn nếu có sắp
xếp, ví dụ theo thứ tự ABC của tên ở mỗi trang, bạn sẽ thấy một số trang có rất nhiều và
lấn sang trang của chữ khác, còn một số lại rất ít. Hơn nữa, bạn lại cần ghi cả địa chỉ cơ
quan của những người đó. Trong số đó có vài người làm cùng một nơi và bạn không muốn
ghi lại.

Đây có lẽ là thời điểm thích hợp để máy tính cho thấy tác dụng của nó. Bạn sẽ cần phải sử
dụng một chương trình máy tính (ứng dụng) chuyên biệt có sẵn để nhập tất cả dữ liệu này
vào máy tính và nó sẽ quản lý thông tin giúp bạn.

Bạn có thể chia các thông tin ra thành hai phần, các thông tin về cá nhân và các thông tin
về cơ quan công tác. Nó sẽ tương tự như hai bảng 1và 2. Như vậy, bạn đã có một cơ sở dữ
liệu (database) chứa thông tin về những người quen. Cơ sở dữ liệu này gồm hai bảng
(table): người quen và cơ quan công tác.

Cơ sở dữ liệu (database): kho thông tin về một chủ đề, được tổ chức hợp lý để dễ dàng
quản lý và truy tìm. Bất kỳ kho thông tin nào đáp ứng được yêu cầu này đều có thể coi là
một cơ sở dữ liệu (CSDL). Như trên đây, bạn có hai cơ sở dữ liệu: CSDL người quen ghi
trong sổ và CSDL trên máy tính. Thông thường, những thông tin trong CSDL được chia
thành nhiều mẫu tin có cấu trúc tương đối giống nhau, ví dụ như đây là một mẫu tin:

- Họ tên: Nguyễn Thanh Hà


- Ngày sinh: 28/5/1970
- Điện thoại: 8242948
- Địa chỉ: 1B Chương Dương, Hà Nội
- Tên cơ quan: Ngân Hàng Đầu Tư và Phát Triển Việt Nam

Bảng (table):Là một thành phần cơ bản trong chương trình quản trị cơ sở dữ liệu quan hệ.
Bảng được hình thành khi sắp xếp các thông tin có liên quan với nhau theo hàng và cột. Các
hàng tương ứng với các bản ghi (record) dữ liệu và các cột tương ứng với trường dữ liệu.
Các bạn hãy xem bảng Người quen. Các hàng là người, mỗi hàng tương ứng với một người.
Các cột là trường (hay lĩnh vực) của thông tin. Ta có các cột Họ tên, Ngày sinh, Điện thoại,
Địa chỉ, Tên cơ quan.

Bản ghi (record): trong chương trình quản trị cơ sở dữ liệu, đây là một đơn vị hoàn chỉnh
nhỏ nhất của dữ liệu, được lưu trữ trong những trường hợp dữ liệu đã được đặt tên. Trong
một cơ sở dữ liệu dạng bảng, bản ghi dữ liệu đồng nghĩa với hàng (row). Bản ghi chứa tất cả
các thông tin có liên quan với mẫu tin mà cơ sở dữ liệu đang theo dõi. Ví dụ, trong cơ sở dữ
liệu về Người quen, bản ghi sẽ liệt kê tên người quen, số điện thoại, ngày sinh, địa chỉ và
tên cơ quan. Hầu hết các chương trình đều hiển thị các bản ghi dữ liệu theo hai cách: theo
các mẫu nhập dữ liệu và theo các bảng dữ liệu. Các bản ghi dữ liệu được hiển thị dưới dạng
các hàng ngang và mỗi trường dữ liệu là một cột.

Trường dữ liệu (field): trong chương trình quản trị cơ sở dữ liệu, đây là không gian dành
cho một mẫu thông tin trong bản ghi dữ liệu. Trong chương trình quản trị CSDL dạng bảng
với dữ liệu được tổ chức theo hàng và cột, thì trường dữ liệu tương ứng với các cột. Như ở
bảng Cơ quan, ta có các trường Tên cơ quan, Địa chỉ, Thành phố, Số điện thoại, Lĩnh vực
hoạt động.

Quản lý cơ sở dữ liệu quan hệ: là một cách quản lý cơ sở dữ liệu, trong đó dữ liệu được
lưu trữ trong các bảng dữ liệu hai chiều gồm các cột và các hàng, có thể liên quan với nhau
nếu các bảng đó có một cột hoặc một trường chung nhau.

Chương trình quản trị cơ sở dữ liệu: một chương trình ứng dụng trên máy tính cung cấp
các công cụ để truy tìm, sửa chữa, xóa và chèn thêm dữ liệu. Các chương trình này cũng có
thể dùng để thành lập một cơ sở dữ liệu và tạo ra các báo cáo, thống kê. Các chương trình
quản trị cơ sở dữ liệu liên quan khá thông dụng hiện nay tại Việt Nam là Foxpro, Access cho
ứng dụng nhỏ, DB 2, MS SQL và Oracle cho ứng dụng vừa và lớn.

Bạn sử dụng tên cơ quan để liên kết giữa hai bảng Người Quen và Cơ Quan. Đôi lúc, bạn
nhận thấy rằng tên cơ quan không phải là duy nhất. Rất có thể hai công ty FPT, một công ty
hoạt động trong lĩnh vực xử lý thực phẩm và một công ty hoạt động trong lĩnh vực tin học. ở
đây ta có khái niệm khóa (key).

Một khóa chính (primary key) là một giá trị dùng để phân biệt bản ghi này với bản ghi khác.
Giá trị của khóa chính trong mỗi bản ghi là duy nhất trong cả bảng (table). Có thể xem số
chứng minh nhân dân như một khóa chính và không người nào giống người nào.

Ngoài khóa chính ra còn có khóa ngoài (foreign key). Khóa ngoài là giá trị dùng để liên kết
giữa các bảng và thiết lập mối quan hệ giữa các bản ghi trong các bảng khác nhau. Giả sử
trong ví dụ, ta đặt ra mã số cơ quan và mã số cơ quan này duy nhất đối với mỗi cơ quan,
bảng của ta sẽ như bảng 3.

Trong bảng Cơ quan, Mã số cơ quan là khóa chính. Còn trong bảng Người quen, Mã số cơ
quan là khóa ngoài và dùng để xác định cơ quan người đó làm việc.

Thông thường, để xử lý dữ liệu trong CSDL quan hệ, người ta thường sử dụng một công cụ
là Ngôn ngữ truy vấn có cấu trúc (Structured Query Language - SQL) để thực hiện các công
việc như tìm kiếm thông tin, cập nhật thông tin mới, xóa bỏ thông tin cũ...

Ví dụ: để chọn ra từ bảng Người quen những người làm việc tại cơ quan có mã số 001 (tức
Bộ Giao Thông Vận Tải) ta sử dụng câu lệnh như sau:

SLECT*FROM Nguoi_quen WHERE


Ma_so_co_quan = 001

Kết quả trả về như bảng 5.

Ngôn ngữ SQL là một bộ phận không thể thiếu của các chương trình quản trị cơ sở dữ liệu
quan hệ.

Đến đây có lẽ bạn đã mệt với nhiều khái niệm về cơ sở dữ liệu. Tuy nhiên chúng rất có ích.
Nếu đi sâu nghiên cứu và thực hành hơn nữa, bạn sẽ còn tìm thấy nhiều điều lý thú và hữu
dụng. Cơ sở dữ liệu là một lĩnh vực rất quan trọng của công nghệ thông tin mà nếu thiếu nó,
nhiều vấn đề đặt ra sẽ khó mà giải quyết được.

Một số chức năng của CSDL(Dựa theo giáo trình của Thầy Phạm Hữu Khang.)

Mục đích sử dụng CSDL bao gồm các chức năng lưu trữ (storage ), truy cập (accessibity), tổ
chức (organization) và xử lý (manipulation)

Storage:Lưu trữ dữ liệu trên đĩa và có thể chuyển đổi dữ liệu từ CSDL này sang CSDL khác,
trong thực tế có nhiều loại CSDL đang sử dụng.
Nếu bạn ứng dụng cho mô hình nhỏ bạn có thể chọn CSDL nhỏ như Excel, Access, MySQL,
PosrgraSQL...
Nếu bạn ứng của bạn lớn thì bạn có thể chọn Oracle, SQL Server, DB2...

Accessibity:Truy cập dữ liệu phụ thuộc vào mục đích sử dụng và yêu cầu của người dụng,
ở mức độ mang tính cục bộ, truy cập dữ liệu ngay trong chính CSDL với nhau nhẳm xử lý dữ
liệu bên trong của chính nó, nhưng do mục đích yêu cầu của người dùng vượt ra ngoài
CSDL, bạn cũng cần có các phương thức cập nhật dữ liệu giữa các CSDL với nhau như:
Access với SQL Server, hay SQL Server với Oracle...

Organization: Khi đề cập đến tổ chức CSDL, chúng phụ thuộc vào mô hình cơ sở dữ liệu,
điều này có nghĩa rằng tổ chức CSDL phụ thuộc vào đặc điểm riêng của từng ứng dụng.
Tuy nhiên khi tổ chức CSDL bạn cần tuân theo một số tiêu chuẩn của hệ thống cơ sở dữ liệu,
nhằm tăng tính tối ưu khi truy cập và xử lý.

Manipulation :Trong nhiều trường hợp bạn cần tính toán và truy vấn dữ liệu với các mục
đích khác nhau, bạn cần phải sử dụng các truy vấn cùng các phép toán, phát biểu của CSDL
để kết xuất ra kết quả theo yêu cầu của mình.
Một số câu lệnh MSsql
Tạo CSDL và bảng với CREATE

Tạo một CSDL

CREATE DATABASE tên_CSDL

Tạo một bảng trong một CSDL

CREATE TABLE tên_bảng


(
tên_cột_1 kiểu_dữ_liệu,
tên_cột_2 kiểu_dữ_liệu,
.......
)

Ví dụ
Tạo một bảng tên Person có bốn cột: LastName, FirstName, Address, Age:
CREATE TABLE Person
(
LastName varchar,
FirstName varchar,
Address varchar,
Age int
)
Tạo bảng và đặt kích thước tối đa của các cột:
CREATE TABLE Person
(
LastName varchar(30),
FirstName varchar,
Address varchar,
Age int(3)
)
Kiểu dữ liệu sẽ qui định loại dữ liệu nào được phép lưu trữ trong cột. Sau đây là các kiểu dữ
liệu thường dùng nhất trong SQL:

integer(n)
int(n)
smallint(n)
tinyint(n)
(Chỉ lưu trữ dữ liệu là số nguyên. Số lượng tối đa các chữ số được qui định bởi n.)

decimal(n,d)
numeric(n,d)
(Lưu trữ số thập nhân. Số lượng tối đa các chữ số được qui định bởi n. Số lượng tối đa các
chữ số sau dấu phảy thập phân được qui định bởi d.)

char(n) (Lưu trữ n ký tự.)

varchar(n) (Lưu trữ tối đa n ký tự.)

date(yyyymmdd) (Lưu trữ ngày tháng (dạng năm-tháng-ngày))

Tạo chỉ mục


Chỉ mục được tạo ra nhằm để các dòng trong bảng được truy xuất nhanh và hiệu quả hơn.
Chỉ mục có thể được tạo trên một hoặc nhiều cột của bảng, và mỗi chỉ mục được đặt một
tên. Người dùng không thấy được các chỉ mục này, chúng chỉ được dùng để tăng tốc cho
CSDL.

Lưu ý: Sau khi bảng đã được tạo chỉ mục thì việc cập nhật thay thêm dòng mới vào bảng sẽ
mất nhiều thời gian hơn là đối với bảng không có chỉ mục. Lý do là vì khi cập nhật bảng, các
chỉ mục đồng thời cũng phải được cập nhật theo. Vì thế, ta chỉ nên tạo chỉ mục cho các cột
thường xuyên dùng trong các tác vụ tìm kiếm.

Chỉ mục đơn nhất (Unique Index)

Chỉ mục đơn nhất sẽ bắt buộc hai dòng bất kỳ của bảng sẽ không được phép mang cùng giá
trị ở cột được tạo chỉ mục.

Cú pháp:

CREATE UNIQUE INDEX tên_chỉ_mục


ON tên_bảng (tên_cột)

Chỉ mục đơn (Simple Index)

Khi không dùng từ khoá UNIQUE trong câu lệnh tạo chỉ mục, các giá trị trùng nhau trong cột
sẽ được phép.

Cú pháp:

CREATE INDEX tên_chỉ_mục


ON tên_bảng (tên_cột)

Ví dụ

Tạo một chỉ mục đơn có tên là PersonIndex trên cột LastName của bảng Person:

CREATE INDEX PersonIndex


ON Person (LastName)

Nếu bạn muốn tạo chỉ mục sắp xếp giảm dần, bạn sử dụng thêm từ dành riêng DESC:

CREATE INDEX PersonIndex


ON Person (LastName DESC)

Nếu bạn muốn tạo chỉ mục trên nhiều cột:

CREATE INDEX PersonIndex


ON Person (LastName, Firstname)

Xoá chỉ mục

Bạn có thể xoá chỉ mục đã tạo bằng lệnh DROP.

DROP INDEX tên_bảng.tên_chỉ_mục


Xoá CSDL hoặc bảng

Để xoá một CSDL (các bảng trong CSDL cũng đồng thời được xoá):

DROP DATABASE tên_CSDL

Để xoá một bảng (toàn bộ cấu trúc, dữ liệu và chỉ mục của bảng sẽ được xoá):

DROP TABLE tên_bảng

You might also like