Mơ hình CSDL quan hệ hay ngắn gọn là mơ hình quan hệ được E.F.Codd phát triển vào đầu những năm 1970, với các ưu điểm sau:
Đơn giản: các dữ liệu được biểu diễn dưới dạng duy nhất là quan hệ, các bảng giá trị khá tự nhiên, dễ hiểu đối với người dùng không chuyên tin học.
Chặt chẽ: các khái niệm được hình thức hóa cao, cho phép áp dụng các cơng cụ tốn học, các thuật tốn.
Trừu tượng hóa cao: mơ hình chỉ dừng ở mức quan niệm, nghĩa là độc lập với mức vật lý, với sự cài đặt, với các thiết bị. Nhờ đó làm tính độc lập giữa dữ liệu và chương trình cao.
Cung cấp các ngôn ngữ truy cập dữ liệu ở mức cao (như SQL,…) dễ sử dụng và trở thành chuẩn.
Ở đây ta sử dụng mơ hình quan hệ như bước tiếp nối để hoàn chỉnh lược đồ dữ liệu đã lập theo mơ hình ER.
4.1. CÁC KHÁI NIỆM
a. Quan hệ
Cho D1, D2,…., Dn là n miền giá trị, không nhất thiết khác nhau. Theo định nghĩa tốn học ta có: Tích đề các của các tập D1, D2,…., Dn được ký hiệu là D1x D2 x….x Dn là tập các bộ n của dãy sắp thứ tự (d1, d2,…., dn) trong đó di ∈Di với i = 1,n.
Nói cách khác D1 x D2 x….x Dn = {(d1, d2,…., dn)| di ∈Di với i = 1,2,….,n}. Một quan hệ
là R⊆ D1 x D2 x….x Dn.
Nếu viết tất cả các bộ n của quan hệ R, mỗi bộ trên một dòng, các thành phần cùng vị trí trên các bộ được gióng thẳng đứng với nhau, ta có một bảng hai chiều với: số n các cột được gọi là cấp của quan hệ, số m các dòng được gọi là bản số của quan hệ. Ví dụ: Cho D1 là tập người và D2 là tập các số nguyên dương. Quan hệ R⊆ D1 x D1 x D2 trong đó mỗi bộ <a, b, c> diễn tả một cuộc hôn nhân (anh a lấy chị b vào năm c) có thể biểu diễn thành bảng như sau:
Cột thứ nhất Cột thứ hai Cột thứ ba
Hải Hạnh 1975
Quỳnh Nga 1956
Hòa Cúc 1980
b. Thuộc tính
Theo định nghĩa tốn học về quan hệ, các miền D1, D2,…., Dn là có thứ tự. Chúng khơng thể trao đổi vị trí cho nhau, vì vai trị của chúng trong sự diễn tả ý nghĩa của quan hệ là gắn với vị trí. Chẳng hạn ở ví dụ trên cột thứ nhất được diễn tả là chồng, cột thứ hai được diễn tả là vợ và cột thứ ba được diễn tả là năm kết hơn. Tráo đổi vị trí sẽ làm ý nghĩa của quan hệ bị sai lạc
Tuy nhiên nếu ta đem tên vai trò của mỗi cột gắn cho cột đó (xem là tên của cột), thì vị trí lại khơng cịn quan trọng nữa. Gọi tên đó c ủa mỗi cột là một thuộc tính. Trong tin học, ta xem ý nghĩa của mỗi cột là được giải thích bởi tên của cột đó (thuộc tính) chứ khơng phải bởi vị trí của cột đó. Như vậy ví dụ trên có thể được viết lại với các thuộc tính cho số thứ tự của cột
Chồng Vợ Năm kết hôn
Hải Hạnh 1975
Quỳnh Nga 1956
Hịa Cúc 1980
c. Khóa
o Khố chính: Khố chính của một quan hệ (Primary Key-PK) là một hoặc một nhóm thuộc tính xác định duy nhất một bộ trong quan hệ. Khố
chính của quan hệ là định danh của thực thể tương ứng. Trong quan hệ các thuộc tính thuộc khố chính được gạch chân và được gọi là các thuộc tính khố.
Ví dụ: SINH VIÊN (m ã S V , họ tên, ngày sinh, quê quán, lớp) – mã SV là khố chính của quan hệ SINH VIÊN.
Khi chọn khố chính cần phải xem xét các tiêu chuẩn sau: khố chính phải xác định được duy nhất một bộ trong quan hệ, phải có số thuộc tính ít nhất, phải khơng thay đổi theo thời gian.
o Khố ghép: Khố ghép là khố có từ hai thuộc tính trở lên.
Ví dụ: GIẢNG DẠY(m ã G V , m ã M H , ngày bắt đầu, ngày kết thúc) – khố chính của quan hệ GIẢNG DẠY là một khố ghép gồm hai thuộc tính mã GV và mã MH.
o Khố ngồi: Một khố ngồi được sử dụng để thiết lập một mối quan hệ. Đó là thuộc tính mơ tả của quan hệ này nhưng đồng thời lại là thuộc tính khố trong quan hệ khác. Trong quan hệ các thuộc tính khố ngồi được in nghiêng hoặc gạch chân bằng nét đứt.
Ví dụ: LỚP (t ên l ớ p , khoa, phòng học)
SINH VIÊN (m ã S V , họ tên, ngày sinh, quê quán, tên lớp) – tên lớp là khố ngồi của quan hệ SINH VIÊN
d. Lược đồ quan hệ
Một lược đồ quan hệ là sự hợp thành của hai yếu tố một cấu trúc gồm tên quan hệ và một danh sách các thuộc tính (mỗi thuộc tính gắn với một miền), thường có dưới dạng R(A1, A2, …., An), một tập hợp các rang buộc toàn vẹn, tức là các điều kiện mà mọi quan hệ trong lược đồ đều phải thỏa mãn.
Như vậy, có thể nói lược đồ quan hệ là một khn mẫu, hay nói đúng hơn là một cái lọc, cho phép thiết lập một họ các quan hệ cùng ngữ nghĩa. Ví dụ: Lược đồ quan hệ SINH VIÊN(Mã sinh viên, Họ tên, Ngày sinh,….).
Ràng buộc toàn vẹn trong lược đồ quan hệ là điều kiện ràng buộc đối với giá trị của một hay nhiều thuộc tính. Nhằm đảm bảo tính hợp lý trong thế giới thực của các thực thể trong mơ hình; trong hệ thống thơng tin, giúp hệ thống phát hiện những sai lệch trong thu thập, xử lý và truyền thơng tin; trở thành những kiểm sốt để sàng lọc các giá trị không hợp lý trong hệ thống tin học hóa sau này. Có các loại ràng buộc toàn vẹn sau:
Miền giá trị: Xác định ràng buộc về giá trị cho các thuộc tính. Ví dụ:Năm sinh > 1945, 0 < Tuổi < 100 để chỉ tuổi của nhân viên.
Giá trị không (NULL value):Xác định ràng buộc cho phép hay khơng một thuộc tính nhận giá trị Null (giá trị không nhất thiết phải có). Ví dụ: thuộc tính “diemthi” cho phép khơng có giá trị bởi vì có những sinh viên khơng thi hoặc chưa thi. Thuộc tính “tensinhvien” khơng cho phép khơng có giá trị vì bất cứ sinh viên nào cũng phải có tên.
Định danh: Khơng thể có hai thực thể khác nhau lại trùng định danh. Ví dụ: Biển số xe xác định một xe duy nhất. Số áo và màu áo xác định duy nhất một cầu thủ trên sân.
So sánh tương ứng giữa mơ hình thực thể liên kết, lược đồ quan hệ và hệ quản trị CSDL chúng ta có bảng sau:
Mơ hình thực thể liên kết Lược đồ quan hệ Hệ QTCSDL
Thực thể Quan hệ Bảng
Thể hiện của thực thể Bộ Dòng và bản ghi
Thuộc tính Thuộc tính Cột và trường
Ví dụ:
o Mơ hình thực thể liên kết
o Mơ hình quan hệ: Biểu diễn quan hệ dưới dạng bản ghi logic Quan hệ SINH VIÊN (Mã SV, Họ tên, Ngày sinh, Quê quán, Lớp) Các bộ: (SV01, Vũ Thị Lan, 12/3/1985, Hà Nội, T5_K2)
(SV41, Đặng Nhật Minh, 1/8/1981, Thái Bình, T4_K4)
tblSINH VIÊN
Mã SV Họ tên Ngày sinh Quê quán Lớp
SV01 Vũ Thị Lan 12/3/1985 Hà Nội T5_K2
SV41 Đặng Nhật Minh 1/8/1981 Thái Bình T4_K4
4.2. PHỤ THUỘC HÀM
Cho một tập các quan hệ Ri (I = 1,2,…,n). Giả sử G1 và G2 là hai nhóm thuộc tính ln có mặt trong mọi Ri. G1 ∩ G2 = ∅. Tồn tại một phụ thuộc hàm giữa G1 và G2
(hay G1 xác định G2, G2 phụ thuộc hàm vào G1), ký hiệu G1 → G2 nếu: Với mọi giá trị
của G1 ta luôn xác định được một giá trị duy nhất của G2 (trong mọi Ri). Trong đó G1 là nguồn và G2 là đích.
o Trong một quan hệ R, thuộc tính B phụ thuộc hàm vào thuộc tính A (hay thuộc tính A xác định hàm thuộc tính B) ký hiệu A→B nếu với mỗi giá trị của thuộc tính A xác định một giá trị duy nhất của thuộc tính B.
Ví dụ: Mã SV->Ngày sinh Mã SV Ngày sinh 1234 2/6/1990 1235 4/10/1990 1236 11/3/1991 1237 21/8/1990
o Phụ thuộc hàm giữa nhiều thuộc tính: thuộc tính B phụ thuộc hàm vào các thuộc tính A1 và A2 ký hiệu{A1,A2} → B nếu với mỗi cặp giá trị của A1 và A2 xác định duy nhất một giá trị của B.
Ví dụ: {Số hố đơn, Mã hàng}-> Số lượng
Số hóa đơn Mã hàng Số lượng
1234 P1 50
1236 P1 50
1237 P3 20
1238 P4 40
Chú ý: A1 → {A2,A3} ≡ A1 → A2 và A1 → A3
{A1,A2} → A3 ≠ A1 → A3 và A2 → A3
4.3. CÁC DẠNG CHUẨN CỦA QUAN HỆ
Quan hệ chuẩn hóa: Quan hệ R là chuẩn hóa nếu số các thuộc tính trong mọi bộ giá trị là như nhau. Trong quan hệ chuẩn hóa khơng cịn tồn tại nhóm các thuộc tính lặp lại. Khơng có các thuộc tính có nhiều giá trị.
Dạng chuẩn 1(1NF): Mọi quan hệ R chuẩn hóa đều ở dạng chuẩn 1. Một quan hệ được gọi là ở dạng chuẩn 1 theo nghĩa chặt, nếu R là chuẩn hóa và có tồn tại một phụ thuộc hàm mà nguồn là 1 phần của khóa (có nghĩa là tồn tại những phụ thuộc hàm khơng sơ cấp). Ví dụ:
PHIẾU MƯỢN(Số thẻ, Số sách, Ngày, Tình trạng, Tên độc giả) Số thẻ, Số sách → Tên độc giả
Số thẻ → Tên độc giả
Dạng chuẩn 2 (2NF): Quan hệ R ở dạng chuẩn 2 theo nghĩa chặt, nếu R ở dạng chuẩn 1, nếu mọi phụ thuộc hàm đều là sơ cấp và có tồn tại phụ thuộc hàm gián tiếp. Ví dụ:
HĨA ĐƠN(Số hóa đơn, Ngày, Số tiền, Số khách hàng, Tên khách hàng) Số hóa đơn → Ngày, Số tiền, Số khách hàng, Tên khách hàng
Số khách hàng → Tên khách hàng
Dạng chuẩn 3(3NF): Quan hệ R ở dạng chuẩn 3 theo nghĩa chặt, nếu R ở dạng chuẩn 2. Nếu mọi phụ thuộc hàm đều là trực tiếp và có tồn tại các phụ thuộc hàm có nguồn là một thuộc tính khơng khóa, đích là một thuộc tính khóa. Ví dụ:
R(Học sinh, Mơn học, Giáo viên, Điểm)
Học sinh, Môn học → Giáo viên, Điểm
Dạng chuẩn Boyce – Codd: Quan hệ R ở dạng chuẩn Boyce - Codd theo nghĩa chặt, nếu R ở dạng chuẩn 3. Không tồn tại các phụ thuộc hàm có nguồn là 1 thuộc tính khơng khóa, đích là một thuộc tính khóa. Ví dụ:
HỌC SINH(Mã học sinh, Họ tên, Ngày sinh, Địa chỉ) Mã học sinh → Họ tên, Ngày sinh, Địa chỉ
Người ta đã chứng minh được rằng, một cơ sở dữ liệu ở dạng chuẩn Boyce – Codd là cực tiểu sự dư thừa thơng tin, chuẩn hóa tốt.
4.4. XÂY DỰNG MƠ HÌNH QUAN HỆBước 1. Chuyển thực thể thành quan hệ Bước 1. Chuyển thực thể thành quan hệ
o Mỗi kiểu thực thể chuyển thành một quan hệ
o Xét các kiểu thuộc tính của kiểu thực thể
Thuộc tính khóa chính, khóa ngoại chuyển thành thuộc tính khóa chính, khóa ngoại của quan hệ tương ứng.
Kiểu thuộc tính có thể kết xuất từ các kiểu thuộc tính khác thì bỏ đi
Bước 2. Biểu diễn mối quan hệ
o Nếu kiểu liên kết là 1 – n (hay 1 – 1) và khơng có thuộc tính riêng thêm khóa kiểu thực thể bên 1 vào kiểu thực thể bên nhiều (nếu kiểu liên kết là 1 – 1 tùy thuộc vào từng bài tốn ta có thể coi một bên là nhiều). Nếu là mơ hình ER hạn chế thì khơng cần thực hiện bước này.
o Với mọi kiểu liên kết trong các trường hợp còn lại: Thêm một quan hệ mới, thuộc tính của quan hệ gồm các khóa của các quan hệ tương ứng với các kiểu thực thể tham gia vào mối quan hệ này, các thuộc tính riêng của mối quan hệ này, tiến hành xác định lại khóa ngoại
Bước 3. Chuẩn hố quan hệ
Bước 3.1. Từ một biểu mẫu (tài liệu xuất: hoá đơn, chứng từ,…) lấy ra một danh sách các thuộc tính cho quan hệ chưa được chuẩn hố (dạng chuẩn 0).
o Mỗi tiêu đề trong biểu mẫu là một thuộc tính.
o Bỏ qua phần đầu đề và phần dưưới cùng (một số ghi chú, chữ ký …) của biểu mẫu. Không lấy các thuộc tính đưược suy diễn từ những thuộc tính khác
(như thành tiền = đơn giá x số lượng) và các thuộc tính trình bày như ‘số thứ tự’
nếu có.
o Bổ sung thêm một số thuộc tính định danh tương ứng với một số thuộc tính tên gọi chưa có định danh nếu cần thiết.
o Xác định nhóm thuộc tính lặp, các phụ thuộc hàm giữa các thuộc tính. B2. Bước 3.2. Chuẩn hóa về dạng chuẩn 1 (1NF): Tách nhóm thuộc tính lặp.
o Tách các thuộc tính khơng nằm trong nhóm lặp thành một quan hệ (R1). Xác định khố chính của quan hệ này.
o Các thuộc tính của nhóm lặp và khố chính của quan hệ trên (R1) tạo thành một quan hệ (R2). Xác định khóa chính cho quan hệ R2 (khố chính của R2 sẽ là một khoá ghép giữa khoá của R1 và một thuộc tính khác trong R2).
o Ví dụ: R{A, B, C, D, E} và khố là {A}. Tồn tại nhóm thuộc tính lặp {C,D} thì tách thành 2 quan hệ R1{A, B, E} và R2{A,C,D}.
Bước 3.3. Chuẩn hóa về dạng chuẩn 2 (2NF): Loại bỏ phụ thuộc bộ phận vào khoá (chỉ áp dụng với các quan hệ có khố ghép.
o Tách các thuộc tính tham gia vào phụ thuộc hàm được xác định bởi một phần của khố vào một quan hệ mới (R3). Khố chính của quan hệ là thuộc tính xác định hàm.
o Phần cịn lại với khố chính của quan hệ trên (R3) là một quan hệ giữ ngun khố chính như quan hệ ban đầu.
o Ví dụ: R{A, B , C, D} và khoá là {A,B}. Tồn tại phụ thuộc hàm A → C thì tách thành 2 quan hệ R1{A,C} và R2{A, B , D}.
Bước 3.4. Chuẩn hoá về dạng chuẩn 3(3NF): Loại bỏ phụ thuộc hàm giữa các thuộc tính khơng khố.
o Tách các thuộc tính tham gia vào phụ thuộc hàm giữa các thuộc tính khơng khố vào một quan hệ mới (R4). Khố chính của quan hệ là thuộc tính xác định hàm.
o Phần cịn lại và khố chính của quan hệ trên (R4) là một quan hệ giữ ngun khố chính của quan hệ ban đầu.
o Ví dụ: R{A, B, C, D} mà khố là {A,B}. Tồn tại phụ thuộc hàm C → D thì tách thành 2 quan hệ R1{C , D} và R2{A,B, C}
Bước 4. Vẽ mơ hình quan hệ Áp dụng các qui tắc sau:
- Bảng quan hệ
Biểu diễn giống như kiểu thực thể - Thuộc tính
Phân loại: Có 4 thuộc tính chính
• Thuộc tính định danh
• Thuộc tính tên gọi
• Thuộc tính mơ tả
• Thuộc tính kết nối
Biểu diễn: được mơ tả ngay bên trong bảng
Ví dụ: - Kiểu quan hệ
• quan hệ 1 – 1:
• quan hệ 1 – n:
Hình 4 – 5. Mơ hình quan hệ
Sau giai đoạn phân tích hệ thống, kết quả người phân tích thu được những chức năng nghiệp vụ của hệ thống, mơ hình dữ liệu của hệ thống. Năm dạng dữ liệu quan trọng nhất mà người phân tích phải hồn thành.
- Sơ đồ phân ra chức năng của hệ thống mới. - Sơ đồ luồng dữ liệu của hệ thống mới. - Đặc tả chức năng chi tiết của hệ thống mới. - Mô hình quan hệ của hệ thống mới.
Chương 5 – THIẾT KẾ HỆ THỐNG BÀI 1. THIẾT KẾ TỔNG THỂ 5.1. TỔNG QUAN VỀ GIAI ĐOẠN THIẾT KẾ
5.1.1. Tài liệu vào của giai đoạn thiết kế
Đầu vào của công việc thiết kế bao gồm
• Tài liệu đặc tả yêu cầu của hệ thống gồm
o Sơ đồ phân ra chức năng: Tĩnh, khơng có trao đổi thơng tin
o Sơ đồ luồng dữ liệu: Động, có trao đổi thơng tin
o Mơ hình dữ liệu: Mơ hình quan hệ
• Tài liệu hỗ trợ gồm
o Đặc tả chức năng
o Sơ đồ các yêu cầu vật lý
o Từ điển dữ liệu
Để có được các tài liệu này, nhà thiết kế cần phải có liên hệ chặt chẽ và liên tục với nhà phân tích,và đơi khi cần phải tiếp xúc và đối thoại với người sử dụng và người chủ hệ thống trong suốt quá trình thiết kế.
5.1.2. Nhiệm vụ
Chuyển mô tả logic của hệ thống mới thành mô tả vật lý bằng cách thêm vào các biện pháp, các phương tiện, các cài đặt. Có thể chia phần thiết kế thành hai quá trình là thiết kế logic và thiết kế vật lý.
o Thiết kế logic trả lời cho câu hỏi cần đưa những dữ liệu nào vào hệ thống, các xử lý nào sẽ được thực hiện, các thông tin nào sẽ được đưa ra và những ràng buộc nào sẽ được đáp ứng.
o Thiết kế vật lý trả lời cho câu hỏi đưa dữ liệu vào hệ thống như thế nào, các dữ liệu sẽ được cất giữ và xử lý như thế nào, các thông tin sẽ được đưa ra như thế