ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
Đặng Hữu Dũng
PHƯƠNG PHÁP THỰC TIỄN
THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ
KHOÁ LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY
Ngành: Các hệ thống thông tin
HÀ NỘI - 2009
ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
Đặng Hữu Dũng
PHƯƠNG PHÁP THỰC TIỄN
THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ
KHOÁ LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY
Ngành: Các hệ thống thông tin
Cán bộ hướng dẫn: TS. Nguyễn Tuệ
HÀ NỘI - 2009
MỞ ĐẦU
Ngày nay cơ sở dữ liệu đã đƣợc ứng dụng rộng rãi trong công việc quản lý, giúp
cho các cơ quan, tổ chức nâng cao hiệu quả hoạt động của hệ thống.
Để có một cơ sở dữ liệu tốt, cần có phƣơng pháp xây dựng tốt. Có hai phƣơng
pháp chính để xây dựng một cơ sở dữ liệu quan hệ: phƣơng pháp lý thuyết và phƣơng
pháp thực tiễn.
Phƣơng pháp lý thuyết dựa trên lý thuyết phụ thuộc hàm và đại số quan hệ, xuất
phát từ một quan hệ phổ quát và một tập phụ thuộc hàm cho trƣớc, dựa trên các phụ
thuộc hàm để xác định khoá và dạng chuẩn của quan hệ, từ đó áp dụng các phƣơng
pháp tách để tách quan hệ ban đầu thành một tập quan hệ ở dạng chuẩn BCNF.
Phƣơng pháp thực tiễn xuất phát bằng việc nghiên cứu thực tiễn và xây dựng mô
hình mức quan niệm (mô hình E – R). Từ mô hình E-R, áp dụng thuật toán chuyển
đổi, mô hình đƣợc chuyển đổi thành lƣợc đồ CSDL quan hệ.
Trong khoá luận này chúng tôi chọn nghiên cứu và phát triển cơ sở dữ liệu theo
phƣơng pháp thực tiễn.
Khoá luận bao gồm 2 chƣơng:
Chƣơng 1: Tìm hiểu phƣơng pháp thực tiễn xây dựng cơ sở dữ liệu quan hệ.
Trong chƣơng này chúng tôi trình bày tổng quan về cơ sở dữ liệu quan hệ, các bƣớc
xây dựng cơ sở dữ liệu theo phƣơng pháp thực tiễn.
Chƣơng 2: Áp dụng để xây dựng một cơ sở dữ liệu cụ thể. Trong chƣơng này
chúng tôi trình bày các bƣớc xây dựng hệ thống giới thiệu việc làm. Mô hình E-R, cơ
sở dữ liệu và các cài đặt hệ thống sẽ lần lƣợt đƣợc trình bày trong chƣơng này.
1. Chƣơng 1. PHƢƠNG PHÁP THỰC TIỄN
THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ
1.1. TỔNG QUAN VỀ CƠ SỞ DỮ LIỆU QUAN HỆ
1.1.1. Các khái niệm
1.1.1.1. Miền
: Gioitinh{`nam`,`nu`}.
-
32767}
1.1.1.2. Thuộc tính
.
là DOM(A).
1.1.1.3. Tích Decac của các miền
Giả sử có các miền giá trị DOM(A1), DOM(A2),…, DOM(An).
Tích Decac:
DOM(A1) x DOM(A2) x … x DOM(An) = { },
trong đó i = 1, 2, …, vij
DOM(Aj)
1.1.1.4. Quan hệ
Cho n thuộc tính A1, A2, … An với DOM(A1), DOM(A2),…, DOM(An) tƣơng
ứng.
-
R(A1, A2, … An) gọi là lƣợc đồ quan hệ trên A1, A2, … An.
-
Quan hệ R tƣơng ứng với lƣợc đồ trên là:
R
-
DOM(A1) x DOM(A2) x … x DOM(An).
Ngƣời ta thƣờng biểu diễn quan hệ dƣới dạng một bảng:
A1
A2
…
An
vi1
vi2
vij
vin
2
1.1.2. Các ràng buộc trên các quan hệ
Các dữ liệu trong cơ sở dữ liệu quan hệ phải thoả mãn các ràng buộc:
a) Ràng buộc giá trị:
vij
DOM(Aj).
b) Ràng buộc khoá: giá trị khoá phải duy nhất.
c) Ràng buộc toàn vẹn thực thể: nếu PK là là khoá chính của quan hệ thì PK luôn
có giá trị xác định.
d) Ràng buộc toàn vẹn tham chiếu: nếu FK là là khoá ngoài của R tham chiếu đến
PK của S thì:
- FK và PK phải có cùng kiểu;
- Nếu FK có giá trị thì giá trị đó phải thuộc về tập giá trị của PK.
Ngoài ra, các dữ liệu còn phải thoả mãn các ràng buộc về quản lý, về pháp lý cho
phù hợp với thực tiễn.
1.1.3. Các phép toán trên quan hệ
(Int
.
1.2. Phƣơng pháp thực tiễn xây dựng cơ sở dữ liệu
Thực
Mô hình quan
Mô hình lôgic
Mô hình
3
Phƣơng pháp thực tiễn xây dựng cơ sở dữ liệu bao gồm các bƣớc:
-
Xây dựng mô hình quan niệm (mô hình E-R).
-
Xây dựng mô hình lôgic.
-
Xây dựng mô hình vật lý.
1.2.1. Các khái niệm về mô
quan niệm E-R
.
.
-
(E-R
.
1.2.1.1. Thực thể và kiểu thực thể
Thực thể đƣợc định nghĩa là một đối tƣợng có thực hay trừu tƣợng mà ta muốn
lƣu trữ thông tin về nó.
Kiểu thực thể: Là tập các thực thể có cùng đặc trƣng nhƣ nhau.
1.2.1.2. Thuộc tính của thực thể
Thuộc tính là các đặc trƣng của các kiểu thực thể. Trong mô hình E-R, các thuộc
tính bao gồm
- Thuộc tính đơn, đa trị.
- Thuộc tính phức hợp, thuộc tính đa trị.
- Thuộc tính suy diễn đƣợc.
Biểu diễn kiểu thực thể
Kiểu thực thể: đƣợc biểu diễn bằng hình chữ nhật
Thuộc tính đơn trị:
đƣợc biểu diễn bằng hình oval
Thuộc tính phức hợp:
đƣợc biểu diễn nhƣ hình bên
4
Thuộc tính đa trị:
Ví dụ:
Ho
Maso
Ten
HoVaTen
NgaySinh
GioiTinh
NN
SINH VIÊN
1.2.1.3. Liên kết và kiểu liê kết
Liên kết thực thể chỉ mối quan hệ ràng buộc giữa các thực thể.
Kiểu liên kết: Tập các liên kết có cùng đặc trƣng.
Các kiểu liên kết có cùng các thuộc tính.
Các liên kết có ràng buộc:
- Tỷ lệ lực lƣợng: có 3 loại : 1-1, 1-N, M-N
- Mức tham gia: liên kết bắt buộc hoặc tuỳ chọn.
Liên kết 1 - 1: là liên kết thoả mãn điều kiện nếu xuất hiện một thực thể A thì
xuất hiện một thực thể B hoặc ngƣợc lại. Biểu diễn nhƣ sau:
Liên kết 1 - nhiều: là liên kết thoả mãn điều kiện nếu xuất hiện một thực thể
A thì xuất hiện nhiều thực thể B hoặc ngƣợc lại, nếu xuất hiện một thực thể B
thì xuất hiện nhiều thực thể A. Biểu diễn nhƣ sau:
1
N
Ví dụ: Xét quan hệ giữa nhân viên và phòng trong một công ty. Đây là quan hệ
một nhiều (một nhân viên thuộc chỉ một phòng còn một phòng có thể có nhiều nhân
viên).
5
Liên kết nhiều -nhiều: là liên kết thoả mãn điều kiện xuất hiện nhiều thực thể
A thì xuất hiện nhiều thực thể B hoặc ngƣợc lại. Biểu diễn nhƣ sau:
Ví dụ: Quan hệ giữa thực thể sách và thực thể độc giả là quan hệ nhiều - nhiều
(giả thiết một độc giả có thể mƣợn nhiều loại sách cùng một lúc và một loại sách có
nhiều bản sao có thể cho mƣợn).
Liên kết nhiều thực thể
Là mối liên kết trong đó có nhiều hơn hai thực thể. Để biểu diễn liên kết nhiều
thực thể và đơn giản hoá khi biểu diễn ta quy các liên kết nhiều thực thể này về các
liên kết hai thực thể bằng cách đƣa thêm vào thực thể trung gian (kí hiệu là: TG).
Khi thêm thực thể trung gian (TG), liên kết nhiều - nhiều - nhiều sẽ chuyển thành
3 liên kết 1 - nhiều (đây là liên kết hai thực thể). Biểu diễn nhƣ sau:
Theo định nghĩa liên kết thực thể ta có thể coi liên kết thực thể là một dạng thực
thể đặc biệt và cũng đƣợc lƣu trữ. Do đó CSDL phải lƣu trữ cả hai đối tƣợng: thực
thể và liên kết thực thể, đồng thời CSDL phải có khả năng biểu diễn hai đối tƣợng
này.
1.2.1.4. Lƣợc đồ E-R
Là 1 tập các kiểu thực
1.2.1.5. Thuật toán chuyển đổi E-R thành lƣợc đồ cơ sở dữ liệu quan hệ
:
:
–
.
6
–
.
)
.
.
.
.
1.2.2.
1.2.2.1. Chọn hệ quản trị cơ sở dữ liệu
a)
à
?
Phần chƣơng trình để có thể xử lý, thay đổi cơ sở dữ liệu gọi là Hệ quản trị cơ
sở dữ liệu (viết tắt HQTCSDL, tiếng Anh là Database management system).
Theo định nghĩa này HQTCSDL có nhiệm vụ rất quan trọng nhƣ là một bộ
diễn dịch (interpreter) với ngôn ngữ bậc cao nhằm giúp ngƣời sử dụng có thể
7
dùng đƣợc hệ thống mà ít nhiều không cần quan tâm đến thuật toán chi tiết
hoặc biểu diễn dữ liệu trong máy. Theo một cách hiểu khác:
HQTCSDL là một phần mềm cho phép tạo lập CSDL và điều khiển hoặc truy
nhập CSDL đó, đặc biệt HQTCSDL đảm bảo tính độc lập dữ liệu (là sự bất
biến của các chƣơng trình ứng dụng đối với các thay đổi về cấu trúc lƣu trữ và
chiến lƣợc truy nhập).
Ví dụ: Một số Hệ QTCSDL thông dụng hiện nay: MS Access, SQL Server
(của hãng Microsoft), Oracle (của hãng Oracle), DB2, FoxPro,v.v...
b)
Để đảm bảo tính tiêu chuẩn hoá: các hệ CSDL khác nhau, dữ liệu của các
chƣơng trình ứng khác nhau dựa trên một tiêu chuẩn chung.
Cung cấp các công cụ định nghĩa và thao tác dữ liệu linh hoạt
Tích hợp với nhiều trình ứng dụng khác nhau: các ngôn ngữ lập trình, các ứng
dụng hỗ trợ phân tích thiết kế, v.v...
c)
-Server
(Relational Database
–
.
(IIS), E-Commerce
Server, Proxy Server...
d) Hệ quản trị cơ sở dữ liệu hỗ trợ các tính năng sau:
Định nghĩa dữ liệu (Database definition)
Xây dựng dữ liệu (Database construction) : Chức năng định nghĩa và xây dựng
dữ liệu hỗ trợ ngƣời dùng xây dựng các bộ dữ liệu riêng.
Thao tác dữ liệu (Database manipulation): các thao tác cập nhật, tìm kiếm,
sửa, xoá, ...
Quản trị dữ liệu (Database administrator): phân quyền sử dụng, bảo mật thông
tin, ...
8
Bảo vệ dữ liệu (Database protection): thực hiện các thao tác sao chép, phục
hồi, tránh mất mát dữ liệu.
e) Ngôn ngữ của hệ quản trị cơ sở dữ liệu bao gồm:
Ngôn ngữ con định nghĩa dữ liệu (Database Definition Language - DDL):
cung cấp các câu lệnh cho phép mô tả, định nghĩa các đối tƣợng của CSDL.
Ngôn ngữ con thao tác dữ liệu (Database Manipulation Language - DML):
dùng để thao tác, xử lý trên các đối tƣợng của CSDL nhƣ thêm, xoá, sửa, tìm
kiếm,v.v...
Ngôn ngữ con kiểm soát dữ liệu (Database Control Language - DCL): điều
khiển tính đồng thời (tƣơng tranh) đối với dữ liệu.
1.2.2.2.
-Server
Tạo bảng
Mệnh đề tạo bảng tạo một bảng quan hệ mới thông quan tên bảng, xác định các
thuộc tính và các ràng buộc logic của bảng.
Mệnh đề tạo bảng có dạng tổng quát nhƣ sau:
CREATE TABLE ( [NOT NULL],...)
Trong đó:
Tên bảng: là xâu kí tự bất kì không có ký hiệu trống và không trùng với các từ
khoá.
Tên cột: là xâu kí tự bất kì không chứa ký hiệu trống,trong một bảng tên cột là
duy nhất. Thứ tự của cột trong bảng là không quan trọng.
Kiểu dữ liệu: trong mệnh đề tạo bảng dùng một số kiểu dữ liệu sau:
- integer: kiểu số nguyên, từ - 2.147.483.648 đến - 2.147.483.647
- smallinteger: số nguyên nhỏ từ -32.768 đến 32.767
- decimal (n,p): số thập phân với độ dài tối đa là n kể cả p chữ số phần thập
phân(không tính dấu chấm thập phân).
- char(n): xâu kí tự có độ dài cố định n. Một số HQTCSDL cho phép kích thƣớc
tối đa của char là 2000 bytes. Nếu mỗi kí tự tƣơng ứng một byte (mã ASCII nhƣ đối
với hệ QTCSDL Access) thì số kí tự tối đa là 2000. Trong trƣờng hợp sử dụng bộ mã
UCS2 (nhƣ đối với hệ QTCSDL SQL Server) thì số kí tự biểu diễn tối đã là 1000 kí
tự (sử dụng 2 byte để biểu diễn 1 kí tự).
9
- varchar(n): xâu kí tự có độ dài biến đổi, độ dài xâu có thể từ 0 đến n và đƣợc
xác định tại thời điểm đƣa giữ liệu vào lƣu trữ. . Một số HQTCSDL cho phép kích
thƣớc tối đa của char là 4000 bytes.
- date: dữ liệu dạng ngày tháng, định dạng ngầm định: DD - MON - YY.
Ngoài ra mỗi hệ QTCSDL cũng đƣa ra các kiểu dữ liệu riêng.
NULL là giá trị ngầm định khi không biết chính xác giá trị. Do đó cột đóng vai
trò khoá chính không đƣợc nhận giá trị NULL, các cột khác có thể tuỳ chọn.
Nhận xét:
Trong mệnh đề tạo bảng có thể sử dụng thêm các yếu tố ràng buộc để hạn chế các
giá trị cho một hay nhiều cột trong bảng, nhƣ: ràng buộc khoá chính, khoá ngoài,
ràng buộc toàn vẹn tham chiếu, ràng buộc miền giá trị tƣơng ứng nhƣ sau:
NULL: cột có thể không chứa giá trị.
NOT NULL: cột phải chứa một giá trị nào đó
PRIMARY KEY: ràng buộc khoá chính
REFERENCE: ràng buộc khoá ngoài
ON DELETE CASCADE: ràng buộc toàn vẹn tham chiếu
Xoá bảng
Mệnh đề xoá bảng xoá một bảng quan hệ (cả cấu trúc và nội dung của bảng) khỏi
CSDL. Bảng này chỉ có thể đƣợc tạo lại bằng cách sử dụng mệnh đề CREATE
TABLE.
Thêm dữ liệu
Đây là mệnh đề thêm một bản ghi vào một bảng và thƣờng đƣợc sử dụng để tổ
chức vào dữ liệu. Dạng tổng quát nhƣ sau:
INSERT INTO (, …) VALUES (,…)
Có 3 cách biểu diễn mệnh đề thêm dữ liệu:
Cách 1: INSERT INTO S(S#, SNAME, STATUS, CITY)
VALUES (1,'VINH',30,'HA NOI' )
Cách 2: Nếu vị trí của các cột trong bảng là cố định mệnh đề có thể viết:
INSERT INTO S
VALUES (1,'VINH',30,'HA NOI' )
10
Cách 3: Nếu ngƣời vào dữ liệu quên vị trí của các cột, khi đó có thể biểu diễn
nhƣ sau:
INSERT INTO S(S#, STATUS, CITY, SNAME)
VALUES (1, 30,'HA NOI', 'VINH')
Khối SELECT
Cấu trúc đơn giản nhất trong SQL là khối SELECT đƣơc miêu tả về cú pháp nhƣ
một khối
SELECT - FROM - WHERE
Một cách tổng quát khối select bao gồm 3 mệnh đề chính:
SELECT: Xác định nội dung của các cột cần đƣa ra kết quả
FROM: Xác định các bảng cần lấy thông tin ra.
WHERE: Xác định các bản ghi thoả mãn yêu cầu chọn lọc để đƣa ra kết quả.
Ngoài ra, để mở rộng khả năng của ngôn ngữ, khối SELECT còn đƣợc bổ sung
thêm các mệnh đề group by, having, order by, các hàm mẫu,... Trong các phần sau sẽ
trình bày chi tiết từng mệnh đề.
Dạng tổng quát của khối select đƣợc biểu diễn nhƣ sau:
Trong đó mệnh đề WHERE biểu diễn dƣới một số dạng sau:
WHERE [NOT] phép_so_sánh
WHERE [NOT] [NOT] LIKE
WHERE [NOT] [NOT] BETWEEN AND
WHERE [NOT] [NOT] IN ({danh sách / mệnh đề con})
WHERE [NOT] phép_kết_nối
WHERE [NOT]
WHERE [NOT] {AND | OR} [NOT]
Các hàm thư viện
Cũng giống nhƣ các ngôn ngữ CSDL khác, trong SQL có các hàm mẫu gồm
count, max, min, sum, avg. Riêng hàm count khi có đối số là '*' có nghĩa là đếm số
bản ghi thoả mãn yêu cầu tìm kiếm mà không cần quan tâm tới bất kì một cột nào.
11
1.2.2.3.
p
.
:
.
cái
.
.
.
.
.
.
.
.
.
.
.
12
ì
–
Mô
:
(m
.
ợ
.
.
–
.
i
nhau.
1.2.3.
1.2.3.1.
.
.
13
1.2.3.2.
:
sao.
.
1.2.3.3.
.
.
các
:
)
.
14
.
.
c.
,
.
:
)
)
)
)
1.2.3.4.
:
1.2.3.5.
file
,b
.
). T
,
.
,
,
,
15
.
,
.
.
,
,
(file lị
.
).
là
.
.
.
và
các
.
.
có
.
,
.
:
-
;
-
;
-
;
-
;
-
;
-
;
-
.
.
.
(
.
1.2.3.6.
cơ
cơ sở
.
vật
).
:
lôgic
16
,
.
.
:
2 :Chiên l
1.2.3.7.
a.
của
làm
:
Giai
.
.
.
.
1.2.3.8.
là
.
17
.
.
1.2.3.9.
.
.
.
1.2.3.10.
.
.
.
.
1.2.3.11.
.
.
1.2.3.12.
trong
p.
.
.
.
1.2.3.13.
dung bên
.
-Shneiderman.
:
18
- Xem thêm -