ết kế csdl quan hệ các loại chuẩn và chuẩn...
TRANSCRIPT
Thiết kế CSDL quan hệ:
Các loại chuẩn và chuẩn hóa
Nguyễn Thị Oanh [email protected]
Bộ môn Hệ thống thông tin (http://is.hust.edu.vn/)
Viện CNTT&TT
Trường Đại học Bách Khoa Hà Nội
2
Thiết kế CSDL
Sử dụng sơ đồ thực thể liên kết (ch2)
Top down
Trừu tượng
Phụ thuộc hàm
Bottom up
Tổng hợp các quan hệ
Liệt kê tất cả các thuộc tính
Xem xét mối quan hệ giữa chúng
Phân chia các thuộc tính vào các bảng để dư thừa
thông tin
3
Student(Id, name, suburb, courseno,
coursename, dept)
Id Name Suburb
1108 Robert Kew
3936 Glen Bundoora
8507 Norman Bundoora
8452 Mary Balwyn
Student
Takes
SID SNO
1108 21
1108 23
1108 29
8507 23
8507 29
SID Course
3936 101
1108 113
8507 101
Enrol
No Name Dept
21 Systems CSCE
23 Database CSCE
29 VB CSCE
18 Algebra Maths
Subject
No Name Dept
113 BCS CSCE
101 MCS CSCE
Course
4
Các vấn đề đặt ra: dư thừa dữ liệu, không nhất quán, dị thường khi thêm bộ, dị thường khi xóa bộ
Đề xuất các giải pháp
stud no
name tutor roomno
course no
labmark
subject
s1 jones bush 2.26 cs250 65 prog s1 jones bush 2.26 cs260 80 graphics s1 jones wibby 2.26 cs270 47 elecs s2 brown kahn IT206 cs250 67 prog s2 brown kahn IT206 cs270 65 elecs s3 smith goble 2.82 cs270 49 comms s4 blogg goble 2.82 cs280 50 design s5 jones zobel 2.34 cs250 0 prog s6 peters kahn A17 cs250 2 prog null null capon A14 null null null null null null null cs290 null specs s7 patel null null null null null
5
Mục đích của chuẩn hoá
Xác định được 1 tập các lược đồ quan hệ cho
phép tìm kiếm thông tin một cách dễ dàng,
đồng thời tránh được dư thừa dữ liệu
Hướng tiếp cận:
Tách các lược đồ quan hệ “có vấn đề” thành những
lược đồ quan hệ “chuẩn hơn”
6
Phụ thuộc hàm
(Functional dependencies - FD)
Đ/N: Phụ thuộc hàm trong 1 quan hệ
Cho
R(U) là 1 sơ đồ quan hệ, U là tập các thuộc tính.
X, Y U
X xác định hàm Y hay Y phụ thuộc hàm vào X nếu
với quan hệ r xác định trên R(U) và với 2 bộ t1 và t2
bất kỳ mà t1[X] = t2[X] thì t1[Y] = t2[Y]
Ký hiệu: XY
7
Ví dụ
F
studno name, tutor
tutor roomno
roomno tutor
courseno subject
studno, courseno labmark
F+
studno, courseno name partial
studno roomno transitive
stud no
name tutor roomno
course no
labmark
subject
s1 jones bush 2.26 cs250 65 prog s1 jones bush 2.26 cs260 80 graphics s1 jones wibby 2.26 cs270 47 elecs s2 brown kahn IT206 cs250 67 prog s2 brown kahn IT206 cs270 65 elecs s3 smith goble 2.82 cs270 49 comms s4 blogg goble 2.82 cs280 50 design s5 jones zobel 2.34 cs250 0 prog s6 peters kahn A17 cs250 2 prog null null capon A14 null null null null null null null cs290 null specs s7 patel null null null null null
8
Bao đóng của 1 tập phụ thuộc hàm
Đ/N : Bao đóng của tập phụ thuộc hàm F là tập
lớn nhất các phụ thuộc hàm có thể được suy
diễn logic từ F
Ký hiệu là F+
Suy diễn logic
X Y được suy diễn logic từ F nếu với mỗi quan hệ
r xác định trên R(U) thoả các phụ thuộc hàm trong F
thì cũng thoả X Y
F là họ đầy đủ (full family) nếu
F = F+
9
Các bước chuẩn hóa
Biểu diễn tất cả các views (biểu mẫu, báo cáo, .. )
của người dùng như là tập các quan hệ
Chuẩn hóa các quan hệ này
Gộp cac quan hệ có chung khóa chính
10
Dạng chuẩn 1 (1NF)
Đ/N:
Không có các nhóm lặp
Một khóa duy nhất được xác định cho mỗi quan hệ
Tất cả các thuộc tính là phụ thuộc hàm đầy đủ hoặc
bộ phận vào khóa chính.
STUDENT
(studno, name, tutor, roomno)
studno name, tutor
tutor roomno,
roomno tutor
STUDENT_DETAILS
(studno, name, tutor, roomno, {courseno, labmark, subject})
studno name, tutor courseno subject
tutor roomno, roomno tutor studno, courseno labmark
ENROL (studno, courseno, subject, labmark)
courseno subject
studno, courseno labmark
11
Dạng chuẩn 2 (2NF)
Đ/N: Sơ đồ quan hệ này ở 1NF
Tất cả các thuộc tính không khóa đều phụ thuộc hàm đầy đủ vào khóa chính
(Lưu ý: A là một thuộc tính khóa nếu A thuộc một khóa tối thiểu nào đó của R. Ngược lại A là thuộc tính không khóa)
ENROL’ (studno, courseno, labmark)
studno, courseno labmark
COURSE (courseno, subject)
courseno subject
ENROL (studno, courseno, subject, labmark)
courseno subject
studno, courseno labmark
12
Dạng chuẩn 3 (3NF)
Đ/N: Một sơ đồ quan hệ R được coi là ở dạng
chuẩn 3 nếu
Sơ đồ quan hệ này ở 2NF
Mọi thuộc tính không khóa đều không phụ thuộc bắc
cầu vào khóa chính
Phục thuộc bắc cầu: một thuộc tính không khóa phụ
thuộc bắc cầu vào 1 thuộc tính không khóa khác.
13
Dạng chuẩn 3 (3NF)
STUDENT (studno, name, tutor, roomno)
studno name, tutor
tutor roomno
roomno tutor
STUDENT (studno, name, tutor)
studno name, tutor
TUTOR (tutor, roomno)
tutor roomno
roomno tutor
14
Dạng chuẩn 3 (3NF)
STUDENT (studno, name, tutor) studno name, tutor
TUTOR (tutor, roomno) tutor roomno roomno tutor
ENROL (studno, courseno, labmark) studno, courseno labmark
COURSE (courseno, subject) courseno subject
15
Dạng chuẩn Boye-Codd
Đ/N:
Đã ở dạng chuẩn 3
Các dị thường còn lại tạo ra các phụ thuộc hàm bị loại bỏ
R = {A,B,C} ; F = {ABC , CB}.
Chuẩn cao hơn
Fourth Normal Form (4NF) the relation is in BCNF
any multivalued dependencies have been removed.
Fifth Normal Form (5NF) the relation is in 4NF
any remaining anomalies that result form join dependencies have been removed.
Remarks
only in rare situations that a relation in 3NF is not in 4NF or 5NF.
most relations that are in 3NF are also in BCNF.
17
Phép tách các lược đồ quan hệ
Mục đích
Thay thế một sơ đồ quan hệ R(A1, A2, …, An) bằng
một tập các sơ đồ con {R1, R2, …, Rk} trong đó Ri R
và R = R1 U R2 U … U Rk
Yêu cầu của phép tách
Bảo toàn thuộc tính, ràng buộc
Bảo toàn dữ liệu
18
Phép tách không mất mát thông tin
(Lossless join)
Đ/N: Cho lược đồ quan hệ R(U) phép tách R thành các sơ đồ con {R1, R2, …, Rk} được gọi là phép tách không mất mát thông tin đ/v một tập phụ thuộc hàm F nếu với mọi quan hệ r xác định trên R thỏa mãn F thì:
r = R1(r) R2(r) … Rk (r)
19
Định lý tách đôi
Cho lược đồ quan hệ R(U), tập pth F, phép tách R thành R1(U1), R2(U2) là một phép tách không mất mát thông tin nếu 1 trong 2 phụ thuộc hàm sau là thỏa mãn trên F+:
U1 ∩ U2 U1 - U2
U1 ∩ U2 U2 - U1
Hệ quả: Cho lược đồ quan hệ R(U) và phụ thuộc hàm XY thỏa mãn trên R(U). Phép tách R thành 2 lược đồ con R1(U1), R2(U2) là một phép tách không mất mát thông tin với:
U1 = XY
U2 = XZ với Z = U \ XY
Tách không làm mất mát thông tin
ENROL’ COURSE = courseno
courseno subject
(courseno, subject) = COURSE
ENROL (studno, courseno, subject, labmark)
courseno subject
studno, courseno labmark
ENROL’ (studno, courseno, labmark)
studno, courseno labmark
COURSE (courseno, subject)
courseno subject
STUDENT1 TUTORS = STUDENT
STUDENT
studno name tutor roomno
s1 jones bush 2.26 s2 brown kahn IT206 s3 smith goble 2.82 s4 bloggs goble 2.82 s5 jones zobel 2.34 s6 peters kahn IT206
studno name
studno tutor
tutor roomno
roomno tutor
STUDENT1
studno name tutor
s1 jones bushs2 brown kahns3 smith gobles4 bloggs gobles5 jones zobels6 peters kahn
studno name
studno tutor
TUTOR
tutor roomno
kahn IT206bush 2.26goble 2.82zobel 2.34
tutor roomno
roomno tutor
STUDENT’ * TUTOR = STUDENT
STUDENT
studno name tutor roomno appraiser
s1 jones bush 2.26 capon s2 brown kahn IT206 watson s3 smith goble 2.82 capon s4 bloggs goble 2.82 capon s5 jones zobel 2.34 watson s6 peters kahn IT206 watson
studno name
studno tutor
tutor roomno
tutor appraiser
roomno tutor
roomno appraiser
studno appraiser
studno roomno
STUDENT'
studno name tutor
s1 jones bush s2 brown kahn s3 smith goble s4 bloggs goble s5 jones zobel s6 peters kahn
studno name
studno tutor
TUTOR
studno roomno appraiser
s1 2.26 capon s2 IT206 watson s3 2.82 capon s4 2.82 capon s5 2.34 watson s6 IT206 watson
studno appraiser
studno roomno
Phép tách bảo toàn tập phụ thuộc hàm
Designing a relational schema
Build a relational database
without redundancy
normalisation
without loss of information or gain of data
lossless join decomposition
without losing dependency integrity
dependency preservation
24