Phân tách 2NF + chuẩn hóa cơ sở dữ liệu


7

Nếu có ai biết về 2NF tôi sẽ đánh giá rất cao nếu bạn có thể cho tôi biết nếu tôi hiểu về nó thì cuốn sách của tôi thậm chí không đề cập đến nó (ngoại trừ việc nói là "ý nghĩa lịch sử") và tôi đã không thể tìm thấy ví dụ tốt trên mạng. Tôi đang nghiên cứu để kiểm tra và muốn biết liệu lý do của tôi về cách thực hiện phân tách 2NF có đúng không

R = {a, b, c, d, e, f, g} F = {AB -> C, A -> DE, B -> F, F -> GH, D -> IJ}

Điều đầu tiên tôi làm là tìm siêu khóa dễ thấy (AB) + = R, tuy nhiên tôi không chắc đây có phải là định nghĩa 2NF khi nó sử dụng thuật ngữ "khóa" không

Lần 2 tôi đã sử dụng AA và kết hợp một số thuật ngữ trong F (chỉ để làm cho nó dễ quản lý hơn)

F = {AB -> C, A -> DEIJ, B -> FGH}

Thứ 3 Tôi loại bỏ và phụ thuộc chức năng một phần Tôi không thực sự chắc chắn (tôi đã tìm kiếm nó không có vấn đề gì) Tôi nghĩ PFD là gì khi bạn có FD trong đó LHS là một tập hợp con đúng của siêu khóa trong trường hợp này

A -> DEIJ và B -> FGH

Lần thứ 4 tôi chia nó thành các mối quan hệ loại bỏ các vi phạm từ bước 3

R 1 = AB -> C

R2 = A -> DEIJ

R3 = B -> FG

Tôi thực sự đang tìm ai đó để phản hồi cho tôi nếu tôi hiểu chính xác khái niệm này, bất kỳ trợ giúp nào cũng sẽ được đánh giá cao

Cảm ơn

Câu trả lời:


13

Có một câu cách ngôn nhỏ đi:

  • Khóa (1NF)
  • Toàn bộ khóa (2NF)
  • Và không có gì ngoài chìa khóa (3NF)

. . . Hãy giúp tôi Codd

Trong ví dụ của bạn, chúng ta có thể giả sử 1NF bắt đầu vì cấu trúc quan hệ không ngụ ý bất kỳ nhóm lặp lại nào trong hàng (tức là không có D 1 , D 2 , D 3, v.v.).

R = {a, b, c, d, e, f, g} F = {AB -> C, A -> DE, B -> F, F -> GH, D -> IJ}

2NF liên quan đến 'toàn bộ khóa' - nếu bạn có khóa tổng hợp và một số thành viên của mối quan hệ phụ thuộc vào một phần của khóa đó thì họ nên tách ra thành quan hệ riêng của họ. Trong trường hợp của bạn:

  • R1 = AB -> C nằm trong 2NF vì 'AB' là 'toàn bộ khóa'

  • R2 = A -> DEIJ là 2NF chứ không phải 3NF là A -> DE, nhưng A -> IJ không phải là 3NF vì phụ thuộc thực sự của I và J là D -> IJ. D không phải là chìa khóa của mối quan hệ này (A -> DEIJ), vì vậy A -> IJ vi phạm 'không có gì ngoài chiếc chìa khóa' của 3NF.

  • R3 = B -> FGH nằm trong 2NF chứ không phải 3NF vì B -> F là mối quan hệ chính xác và F phụ thuộc vào toàn bộ khóa 'B'. Tuy nhiên, B -> GH không nằm trong 3NF vì quan hệ đúng là F -> GH. B -> GH vi phạm nguyên tắc 'không có gì ngoài khóa', vì G ahd H phụ thuộc chính xác vào thuộc tính phi khóa F.

Phân tách của bạn thành 2NF là chính xác. Phân tách thành 3NF yêu cầu lấy các thuộc tính không khóa có phụ thuộc riêng vào các quan hệ riêng.

Mối quan hệ trong 3NF sẽ như sau:

  • R 1 = AB -> C

  • R2 = A -> DE (I và J phụ thuộc vào thuộc tính không khóa D)

  • R3 = B -> F (G và H phụ thuộc vào thuộc tính không khóa F)

  • R4 = D -> IJ

  • R5 = F -> GH


Cảm ơn rất nhiều về phản hồi và bổ sung phân tách 3NF. Giải thích ngắn gọn rõ ràng của bạn đã được đánh giá cao
cpowel2
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.