Quá trình thiết kế CSDL được minh hoạ trong hình 4.1 gồm 4 bước [8][13].
Hình 4.1. Quá trình thiết kế CSDL [7]
115
Bước 1. Tập hợp các yêu cầu và phân tích. Kết quả của bước này là một tập hợp các yêu cầu của người dùng được ghi ở dạng súc tích. Những đặc tả như vậy càng chi tiết và càng đầy đủ càng tốt.
Bước 2. Thiết kế khái niệm. Ở bước này người thiết kế lựa chọn một mô hình dữ liệu, dùng các khái niệm của mô hình đã chọn để chuyển những đặc tả yêu cầu của người dùng (kết quả của bước 1) sang thành một lược đồ khái niệm. Lược đồ khái niệm là một mô tả cô đọng về yêu cầu dữ liệu của những người dùng, bao gồm: mô tả chi tiết các kiểu dữ liệu, các liên kết, các ràng buộc.
Bước 3. Thiết kế logic (hay còn gọi là ánh xạ mô hình dữ liệu). Ở bước này người thiết kế cài đặt CSDL bằng một hệ quản trị CSDL. Hầu hết các hệ quản trị CSDL dùng một mô hình dữ liệu (chẳng hạn, mô hình quan hệ hay mô hình hướng đối tượng,...), do vậy, lược đồ khái niệm được chuyển đổi từ mô hình dữ liệu bậc cao sang mô hình dữ liệu. Kết quả của bước này là một lược đồ CSDL dưới dạng một mô hình dữ liệu của hệ quản trị CSDL.
Bước 4. Thiết kế vật lí. Các đặc điểm về mặt vật lí của CSDL phải được đặc tả ở giai đoạn này, chúng bao gồm việc thiết kế những cấu trúc lưu trữ dữ liệu bên trong, đường dẫn truy cập và kiểu tổ chức tệp cho CSDL.
4.1.2. Dị thường (khuyết tật) dữ liệu
Mục đích chính của thiết kế CSDL là nhóm các thuộc tính vào các bảng sao cho giảm được nhiều nhất sự dư thừa dữ liệu và vì vậy giảm được không gian lưu trữ cần thiết cho các quan hệ cơ sở. Trước khi bàn về cách thiết kế một lược đồ CSDL tốt, ta phải phân tích xem tại sao trong một số lược đồ lại tồn tại những vấn đề rắc rối.
Ví dụ 4.1. để lưu trữ thông tin về sinh viên của một trường Đại học, ta xét 2 phương án.
Phương án 1: dùng 1 lược đồ SINH_VIEN_LOP
SINH_VIEN_LOP (MaSV, HoTenSV, NS, GT, QQ, NS, MaLop, TenLop) Phương án 2: dùng 2 lược đồ: SINH_VIEN và LOP
SINH_VIEN (MaSV, HoTenSV, NS, GT, QQ, NS, MaLop) LOP (MaLop, TenLop)
Phương án 1, dễ nhận thấy nhiều vấn đề, trong đó:
• Dư thừa: thông tin chi tiết về lớp được lặp đi lặp lại trong tất cả các bộ về sinh viên trong lớp.
• Bất thường khi cập nhật: Do hệ quả của dư thừa, ta có thể thay đổi tên lớp của một lớp trong một bộ nhưng vẫn để lại tên lớp cũ trong một bộ khác. Vì vậy, cùng một lớp có thể có hai tên khác nhau.
• Dị thường khi chèn: Khi cần thêm chi tiết về một lớp mới, nhưng lớp này chưa có sinh viên, trong quan hệ SINH_VIEN_LOP bộ mới đó phải để
116
trống các thuộc tính về sinh viên. Tuy nhiên, điều này là không được phép (vì thuộc tính khoá chính MaSV không cho phép nhận giá trị Null).
• Dị thường khi xoá: Nếu ta xoá bộ chứa thông tin của sinh viên duy nhất (còn lại cuối cùng) của một lớp nào đó trong quan hệ SINH_VIEN_LOP thì những thông tin chi tiết về lớp này cũng bị xoá luôn, không còn trong CSDL.
Trong ví dụ này, các vấn đề nêu trên sẽ được giải quyết khi ta thay lược đồ quan hệ SINH_VIEN_LOP (MaSV, HoTenSV, NS, GT, QQ, NS, MaLop, TenLop) bằng hai lược đồ quan hệ sau:
SINH_VIEN (MaSV, HoTenSV, NS, GT, QQ, NS, MaLop) LOP (MaLop, TenLop)
Với cách tổ chức này, ta sẽ giải quyết được 2 vấn đề của cách tổ chức thứ nhất
• Quan hệ LOP cung cấp tên lớp của mỗi lớp đúng một lần, do vậy không có dư thừa.
• Có thể nhập tên lớp dù hiện tại lớp đó chưa có sinh viên nào.
Tuy vậy, vẫn còn một số câu hỏi chưa có câu trả lời chắc chắn, đó là
• phân rã ở trên có nhược điểm gì hoặc làm thế nào đế khẳng định được cách thay thế ở trên có nhiều ưu điểm hơn?
• có tồn tại trong hai lược đồ quan hệ mới những vấn đề đã xảy ra với cách tổ chức thứ nhất không?
• làm thế nào để có được một cách thay thế tốt cho một lược đồ quan hệ chưa tốt?
Tất cả sẽ được trả lời trong chương 4.
4.1.3. Quy ước về ký hiệu
• Các chữ cái in hoa ở đầu bảng chữ cái (ví dụ: A, B, C,...) biểu thị một thuộc tính đơn.
• Các chữ cái in hoa ở cuối bảng chữ cái (ví dụ: U, V, Z,...) biểu thị cho tập các thuộc tính, có thể là tập chỉ một thuộc tính.
• R được dùng để biểu thị một lược đồ quan hệ. Ta cùng đặt tên các quan hệ bằng lược đồ của chúng, chẳng hạn một quan hệ có các thuộc tính A, B, C có thể được viết là ABC.
• Ta sử dụng r cho một quan hệ, là thể hiện hiện hành của lược đồ R.
• Ký hiệu nối kết chuỗi được dùng biểu thị phép hợp. Do vậy, A1….An được dùng để biểu diễn tập các thuộc tính{A1….An} và XY viết tắt của X∪Y.
Trường hợp XA hay AX cũng được viết thay cho X∪{A},với X là tập các thuộc tính và A là một thuộc tính đơn.