PHƯƠNG PHÁP THỰC TIỄN THIẾT KẾ CƠ SỞ DỮ LIỆU QUAN HỆ
Trang 1ĐẠ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
Trang 2ĐẠ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
Trang 3Phươ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
Trang 42
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.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)
- 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:
Trang 53
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ệ
Trang 64
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
- 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
Trang 75
Thuộc tính đa trị:
Ví dụ:
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:
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)
Trang 86
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
Trang 9Phầ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ể
Trang 10Ví 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
(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,
Trang 119
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
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 <tên bảng> (<tên cột> <kiểu dữ liệu> [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ự)
Trang 1210
- 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 <tên bảng> (<tên cột>, …) VALUES (<giá trị côt 1>,…)
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' )
Trang 1311
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] <biểu thức> phép_so_sánh <biểu thức>
WHERE [NOT] <tên cột> [NOT] LIKE <xâu kí tự>
WHERE [NOT] <biểu thức> [NOT] BETWEEN <biểu thức> AND <biểu thức>
WHERE [NOT] <biểu thức > [NOT] IN ({danh sách / mệnh đề con})
WHERE [NOT] <tên cột> phép_kết_nối <tên cột>
WHERE [NOT] <biểu thức logic>
WHERE [NOT] <biểu thức> {AND | OR} [NOT] <biểu thức>
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
Trang 14
-
Trang 15
–
i nhau
1.2.3
1.2.3.1
Trang 17
) ) )
Trang 18,
:
Trang 191.2.3.8
Trang 20
1.2.3.10
1.2.3.11
Trang 21
Trang 23
Bảng liệt kê các thuộc tính của hồ sơ đƣợc sử dụng
đặc trưng
Đánh dấu loại ở mỗi bước
A PHIẾU ĐĂNG KÝ TÌM VIỆC
Trang 2523
K PHIẾU ĐĂNG KÍ THAM GIA SÀN
GIAO DỊCH
L KẾT QUẢ PHIÊN GIAO DỊCH LAO
Trang 2725
E GIẤY GIỚI THIỆU
Trang 28Mã công việc là thuộc tính định danh
Tên công việc
Tên đƣợc chính xác của các đặc trƣng Viết gọn tên đặc trƣng
A PHIẾU ĐĂNG KÝ VIỆC LÀM
Trang 2927
B PHIẾU YÊU CẦU TUYỂN DỤNG
K PHIẾU ĐĂNG KÍ THAM GIA SÀN GIAO
DỊCH
L.KẾT QUẢ PHIÊN GIAO DỊCH LAO ĐỒNG
lần 2
M SỔ QUẢN LÝ HĐ GIAO DỊCH LAO ĐỘNG
cầu
Trang 3028
lần 2
Khi duyệt các thuộc tính còn lại của bảng 2 từ trên xuống ta gặp 2 động từ
“Hoạt động” và “yêu cầu ”
Xét lần lượt các động từ, ta có bảng các câu hỏi và trả lời để xác định các thực thể và thuộc tính tương ứng:
Câu hỏi cho động từ Hoạt
động
Trả lời
Đối tượng nào hoạt động? NHÀ TUYỂN DỤNG
Như vậy, mối quan hệ “Hoạt động” liên kết hai thực thể NGÀNH NGHỀ và NHÀ TUYỂN DỤNG
Câu hỏi cho động từ yêu
cầu
Trả lời
Đối tượng nào yêu cầu ? NHÀ TUYỂN DỤNG
làm việc
Như vậy mối quan hệ “ Yêu cầu” liên kết hai thực thể NHÀ TUYỂN DỤNG và
CÔNG VIỆC và có 3 thuộc tính là số lượng, mức lương, nơi làm việc
Bằng cách tương tự và xét các quan hệ sở hữu hay phụ thuộc giữa các cặp thực thể, ta xác định được mối quan hệ còn lại và các thuộc tính của chúng như dưới đây:
LÀM VIỆC NGÀNH NGHỀ, NGƯỜI TÌM VIỆC
HOẠT ĐỘNG NGÀNH NGHỀ, NHÀ TUYỂN DỤNG
Trang 3129
MONG
Ngày đăng kí, Lương mong muốn, Nơi LV mong muốn
BÁO CÁO NHÀ TUYỂN DỤNG, PHIÊN GIAO
DỊCH
Số người được phỏng vấn, Số người được hẹn
PV lần 2, Số người được tuyển dụng
TUYỂN
DỤNG
NHÀ TUYỂN DỤNG, CÔNG VIỆC,
Số lượng, mức lương, nơi làm việc, ngày hết hạn, trạng thái
Trang 3230
2.2.4
Phiếu đăng ký tìm việc
Hình 14: Mô hình ERM
Trang 33PHIÊN GIAO DỊCH (Mã số phiên GD, Ngày tổ chức, Địa điểm)
b Biểu diễn các mối quan hệ
<MONG MUỐN> YÊU CẦU VIỆC LÀM (Số hiệu, Mã công việc, Ngày đăng ký, Lương mong muốn, Nơi LV mong muốn*)
<YÊU CẦU> YÊU CẦU TUYỂN DỤNG (Mã nhà tuyển dụng, Mã công việc, Nơi làm việc, Mức lương, Ngày hết hạn, trạng thái)
<BÁO CÁO> KẾT QUẢ GIAO DỊCH (Mã số phiên GD, Mã nhà tuyển dụng, Số người được phỏng vấn, Số người hẹn phòng vấn lần 2, Số người được tuyển dụng)
<TUYỂN DỤNG> KẾT QUẢ TUYỂN DỤNG (Mã nhà tuyển dụng, Mã công việc, Số hiệu, Kết quả)
c Chuẩn hóa các mối quan hệ
Nhận thấy trong các quan hệ NGƯỜI TÌM VIỆC, thuộc tính Ngoại ngữ là thuộc tính đa trị, ta tách đa trị cùng với khóa của quan hệ NGƯỜI TÌM VIỆC ra thành một quan hệ mới là quan hệ TÌM VIỆC-NGOẠI NGỮ, có quan hệ 1-N với quan hệ YÊU CẦU VL, khi chuẩn hóa ta thu được quan hệ này với các thuộc tính sau:
Trang 3432
TÌM VIỆC – NGOẠI NGỮ (Số hiệu, Mã công việc, Ngoại ngữ)
Cũng tương tự như vậy với quan hệ YÊU CẦU VL có thuộc tính Nơi làm việc mong muốn là thuộc tính đa trị, sau khi chuẩn hóa ta thu được quan hệ TỪNG YCVL với các thuộc tính sau:
TỪNG YCVL (Số hiệu, Mã công việc, Nơi làm việc )
Hình 15: Mô hình quan hệ
t_congviec
ma_cong_viec ma_nganh_nghe ten_cong_viec vi_tri_lam_viec
t_nganhnghe
ma_nganh_nghe ten_nganh_nghe
t_nguoitimviec
so_hieu ma_nganh_nghe ho_ten tuoi gioi_tinh so_cmt the_hinh dia_chi trinh_do chuyen_mon
t_nhatuyendung
ma_nha_tuyen_dung ten_nha_tuyen_dung ma_nganh_nghe dia_chi dien_thoai so_fax
t_phiengiaodich
ma_phien_gd ngay_to_chuc dia_diem
t_yeucautuyendung
so_hieu ma_nha_tuyen_dung ma_cong_viec noi_lam_viec muc_luong trang_thai ngay_het_han
t_yeucauvieclam
so_hieu ma_nguoi_tim_viec ma_cong_viec ngay_dang_ky luong_mm noi_lam_viec trang_thai
t_ketquagiaodich
ma_phien_gd ma_nha_tuyen_dung duoc_phong_van hen_lan2 duoc_tuyen_dung