HOÁĐON11 SO_HĐ MA_SP

Một phần của tài liệu Phân tích các dạng chuẩn hoá dữ liệu trong mô hình quan hệ và một số thuật toán (Trang 44 - 49)

Yêu cầu bài toán:

HOÁĐON11 SO_HĐ MA_SP

SO_HĐ MA_SP A007 A12 A007 C98 B563 A37 B563 B25 A008 C58 A008 A30 C315 B26 HOÁĐƠN12

SO_HĐ NGAY TEN_KH S_NHA TINH

A007 2/3/98 Hà Giang 4 Hà Trung Hà nội

B563 14/3/98 Nguyễn Văn Giang Lâm Thao Phú thọ

A008 14/3/98 Nguyễn Việt Dũng Vĩnh Yên Vĩnh phúc

C351 20/3/98 Hà Phương Hải Việt Trì Phú thọ

Để xem một quan hệ (bảng) có ở dạng chuẩn 2 hay không trong thực tế người ta không tìm tất cả các khối tiểu của nó mà chỉ tìm ra một khoá tối tiểu gọi là khoá chính . Thường khoá này được tìm căn cứ vào ý nghĩa thực tế của các thuộc tính nhưng cũng

có thể áp dụng các thuật toán tìm một khoá tối tiểu nếu người thiết kế không thật hiểu rõ ý nghĩa các thuộc tính .

Bây giờ ta sẽ sét đến việc phân rã các quan hệ chưa ở dạng chuẩn 2 thành các quan hệ ở dạng chuẩn 2

Đầu vào của ta là các quan hệ ở dạng chuẩn 1 với tập tất cả các thuộc tính R . Trước khi xem xét đến các quan hệ ở dạng chuẩn 2 hay không một vấn đề đặt ra là ; Tập các thuộc tính nào là chính khoá của quan hệ. Trong phần lớn các quan hệ QTCSDL khoá chính đã được chỉ ra ngay khi chỉ ra định nghĩa dữ liệu, tức là khi xây dựng cấu trúc của bảng. Nếu không ta cũng có thể xác định khoá chính căn cứ vào ý nghĩa của các thuộc tính. Gỉa sử ta xác định được khoá chính là tập K

Sự vi phạm điều kiện dạng chuẩn 2 thể hiện ở chỗ tồn tại một tập thuộc tính Y chỉ phụ thuộc vào một bộ phận của khoá chính là M ⊂K Khi ấy ta thực hiện phân rã bằng cách đưa thuộc tính trong MY sang một bảng và thuộc tính nằm trong R- Y sang một bảng khác. Rõ ràng K là khoá của bảng chứa các thuộc tính trong R-Y, còn M là khoá của bảng chứa các thuộc tính trong MY.

Trên cơ sở định nghĩa này người ta đưa ra dạng chuẩn hai như sau.

III.2.3. Định nghĩa 2NF

Giả sử r = {h1, h2 , ..., hm} là tệp dữ liệu trên tập cột

R = {a1,a2,...,an} .và a ∈ R\ ∀ K được gọi là thuộc tính thứ cấp K ∈ Kr. Dễ thấy rằng a không tham gia bất kỳ khoá tối tiểu nào. Ngược lại a gọi là sơ cấp nếu nó tham gia một khoá tối tiểu nào đó khi đó r là 2NF nếu:

- r là 1NF

- Với mỗi K ∈ K(r) và a là thứ cấp thì a phụ thuộc hoàn toàn vào K. (K(r) là tập các khoá )

Dạng chuẩn hai là một trong những dạng chuẩn quan trọng nhất để chống dư thừa thông tin.

III.2.4. Định nghĩa 2NF cho sơ đồ quan hệ

Giả sử s = < R,F >là sơ đồ quan hệ ,trong đó R = {a1,a2,...,an } và F = < A1→B1,...,At → Bt >

Z = ∪ K

Khi đó s là 2NF nếu với mỗi K ∈ Kr và a∈R-Z ta có a phụ thuộc hoàn toàn vào K.

Định nghĩa này tương tự như định nghĩa 2NF, nhưng không yêu cầu s là 1NF , sơ đồ quan hệ không có dữ liệu .

Dạng chuẩn 2NF đối với sơ đồ quan hệ cũng rất phổ biến. Thông thường người ta đưa ra một tệp dữ liệu hoặc một sơ đò quan hệ về dạng chuẩn hai.

III.2.5. Định nghĩa phụ thuộc bắc cầu

Giả sử r = {h1, h2 , ..., hm} là tệp dữ liệu trên tập cột R = {a1,a2,...,an} .

(A xác định hàm f của r vào B)

Là phụ thuộc bắc cầu nếu ∃ C sao cho C # A và C # B và , K∈Kr A B f r C B A f C r f r

,

Tương tự như vậy ta có định nghĩa sơ đồ quan hệ trong đó có phụ thuộc bắc cầu .Phụ thuộc bắc cầu cũng xuất hiện nhiều trong một tệp dữ liệuvà trong một sơ đồ quan hệ ,người ta đã chứng tỏ rằng phụ thuộc bắc cầu cũng tạo nên sự dư thừa thông tin, sự không minh bạch giữa các mối quan hệ phụ thuộc hàm. Nói cách khác nó cản trở tốc độ xử lý đối với tệp dữ liệu cũng như đối với sơ đồ quan hệ.

Ngược với phụ thuộc bắc cầu, người ta gọi là phụ thuộc trực tiếp, có nghĩa rằng nếu phụ thuộc phần tử C mà ∃ như trên A→B bắc cầu nếu ∃ C: (adsbygoogle = window.adsbygoogle || []).push({});

C # A, C# B và ,

Thì người ta gọi là phụ thuộc trực tiếp.

Ví dụ: Xét hai quan hệ HOÁĐƠN11 và HOÁĐƠN12 ở ví dụ trên

Quan hệ HOÁĐƠN11 đã ở dạng chuẩn 3 vì không còn thuộc tính nào ngoài khoá chính,

Quan hệ HOÁĐƠN12 cũng đã ở dạng chuẩn 3 không còn phụ thuộc bắc cầu , B A C A f C r C B f r

Rõ ràng hai quan hệ trên đã ở dạng chuẩn 3.

Như vậy với quan hệ HOÁĐƠN ban đầu, để đạt được mức quan hệ ở dạng chuẩn, ta phải phân rã thành HOÁĐƠN11, HOÁĐƠN12, HOÁĐƠN13.

Trên cơ sở ví dụ này chúng ta có định nghĩa dạng chuẩn 3 như sau:

III.2.6. Định nghĩa 3NF

Giả sử r = {h1, h2 , ..., hm} là tệp dữ liệu trên tập cột R = {a1,a2,...,an} . Khi đó r là 3NF nếu :

- r là 2NF.

- Với mỗi K∈ Kr và a là thứ cấp thì là trực tiếp ( Z = ∪K thì a ∈ R - Z )

Như vậy dạng chuẩn 3 cũng giống như dạng chuẩn 2, chúng ta chỉ xét trong tập hợp các khoá tối tiểu và trong thuộc tính thứ cấp .

Vậy dạng chuẩn 3 đòi hỏi phụ thuộc hoàn toàn và trực tiếp giữa tập khoá tối tiểu và tập thuộc tính thứ cấp. Cho đến nay người ta về cơ bản sẽ biến đổi một tệp dữ liệu bất kỳ hoặc một sơ đồ quan hệ bất kỳ về dạng chuẩn 3.

III.2.7. Định nghĩa 3NF cho sơ đồ quan hệ

Giả sử s = < R,F >là sơ đồ quan hệ ,trong đó R = {a1,a2,...,an } và F = < A1→B1,...,At → Bt > Khi đó s là 3NF nếu: - s là 2NF. K∈Kr K f (a) r

- Với mỗi K∈Kr và a là thứ cấp thì K→ {a} ∈ F+ là trực tiếp. ( Z = ∪K thì a ∈ R - Z)

Trên thực tế sơ đồ quan hệ không có dạng chuẩn 1.

III.2.8. Định nghĩa BCNF

Giả sử r là tệp dữ liệu và s là sơ đồ quan hệ .

Khi đó ta nói r là BCNF (s là BCNF) nếu với mỗi a ∈ A và (A→{a} ∈ F+ ) thì A+r = R ( A+ = R ).

Theo định nghĩa trên với một tập A bất kỳ và một thuộc tính a bất kỳ nằm ngoài A.

Dễ thấy rằng nếu một sơ đồ quan hệ (tệp dữ liệu ) ở dạng chuẩn BCNF thì đương nhiên nó là 3NF.

Dạng chuẩn BCNF là một dạng chuẩn cực đoan, vì thế thông thường người ta chuyển một tệp dữ liệu hoặc một sơ đồ quan hệ về 3NF mà thôi.

Trước khi biến đổi một tệp dữ liệu hoặc một sơ đồ quan hệ phải kiểm tra nó đã là 3NF hay BCNF hay chưa, nếu đã là 3NF hay BCNF thì thôi, trong trường hợp ngược lại thì ta mới tiến hành.

Một phần của tài liệu Phân tích các dạng chuẩn hoá dữ liệu trong mô hình quan hệ và một số thuật toán (Trang 44 - 49)