Sơ bộ
Định nghĩa của hình thức bình thường (mà từ phần trình bày của “Bình thường hóa hơn nữa về Cơ sở dữ liệu Relational Model” năm 1971 được gọi là hình thức bình thường đầu tiên ) và các định nghĩa của mô hình quan hệ riêng của mình được xuất bản vào năm 1970 trong bài báo khoa học đã cung cấp một mạnh mẽ nền tảng cho việc thực hành quản lý cơ sở dữ liệu, tức là, “một Relational Model của dữ liệu để chia sẻ rộng rãi dữ liệu ngân hàng” (RM cho ngắn gọn) được tạo ra bởi Tiến sĩ EF Codd , là người nhận giải thưởng Turing và các quyền liên quan đến các khuôn khổ quan hệ với.
Vâng, có rất nhiều giải thích, giải thích, giải thích, sai lệch và ý kiến về văn bản của Tiến sĩ Codd, nhưng cá nhân tôi thích bám vào nguồn gốc và tôi khuyên bạn nên tự mình phân tích nó để bạn có thể tự rút ra kết luận.
Tôi chắc chắn không hiểu toàn bộ RM, nhưng những gì tôi hiểu về nó cho phép tôi đánh giá cao sự xuất sắc, tầm nhìn, ý định và phạm vi của nó, và mặc dù nhiều thập kỷ sau, người ta có thể lưu ý rằng nó có một vài sự thiếu sót nhẹ, nhưng chúng không giảm, trong bất kỳ cách nào, thiên tài và thanh lịch của nó. Trong lĩnh vực của mình, RM đã đứng trước thử thách của thời gian theo một cách riêng, và vẫn chưa từng có.
Hành động nhấn mạnh các quy định đã nói ở trên sẽ là sử dụng thuật ngữ từ thiện, vì không công bằng vì nhìn thấy nó từ một khoảng cách đáng kể, tài liệu tinh xảo này đòi hỏi một số tinh chỉnh và mở rộng, vâng, nhưng cơ thể chính của tác phẩm là đá rắn từ rất quan niệm (và, thực sự, Tiến sĩ Codd đã tạo ra hầu hết các dòngifif không phải tất cả các bản tinh chỉnh và phần mở rộng như vậy).
Tôi tiếp tục đọc lại RM liên tục để tăng cường sự hiểu biết của tôi về nguồn kiến thức đặc biệt này (và lòng tự trọng của tôi về nó tiếp tục phát triển trên mỗi lần đọc lại); Mục tiêu là đứng trên vai những người khổng lồ.
Quan hệ và bảng
Điều quan trọng cần lưu ý là vì các mối quan hệ là tài nguyên trừu tượng , Tiến sĩ Codd đã hình dung ra tiện ích của việc biểu diễn chúng dưới dạng bảng (ban đầu, ông sử dụng thuật ngữ biểu diễn mảng mảng nhưng sau đó sử dụng bảng Bảng hoặc hoặc bảng r người dùng, nhà thiết kế và quản trị viên của cơ sở dữ liệu quan hệ (RDB) có thể tiếp cận họ theo cách quen thuộc hoặc cụ thể hơn. Do đó, trong bối cảnh triển khai RDB, việc sử dụng bảng làm tốc ký cho quan hệ là hợp lệ, miễn là bảng nói là viết tắt của một mối quan hệ thực tế. Tính năng này rõ ràng là rất rõ ràng bởi vì trước khi đánh giá liệu một bảng có đại diện cho một mối quan hệ tuân theo hình thức bình thường đầu tiên (1NF) hay không, nó phải thể hiện, chính xác là một mối quan hệ.
RM tự nhiên chứa đựng những phẩm chất mà một bảng phải xác định nếu trên thực tế nó mô tả một mối quan hệ, nhưng tôi sẽ đưa ra một cách giải thích không chính thức và không khoa trương về chúng ở đây (một số khác, vâng!):
- Nó phải có một tên (mỗi quan hệ cụ thể trong cấu trúc cơ sở dữ liệu phải được phân biệt với phần còn lại).
- Mỗi hàng của nó phải mô tả chính xác một tuple của mối quan hệ thích hợp.
- Thứ tự của các hàng của nó không quan trọng chút nào.
- Mỗi cột của nó phải có một tên đại diện cho ý nghĩa của chính xác một miền của mối quan hệ liên quan và tên đã nói phải khác với tên của các cột còn lại của bảng (một cột phải được phân biệt duy nhất và phải mang một ý nghĩa đặc biệt và, vâng, vai trò của một người lập mô hình cơ sở dữ liệu và các chuyên gia kinh doanh để xác định từng miền có ý nghĩa với độ chính xác là tối quan trọng)
- Thứ tự các cột của nó không có ý nghĩa.
- Tất cả các hàng của nó phải có cùng số cột.
- Nó phải có ít nhất một cột hoặc một tổ hợp các cột, xác định duy nhất mỗi một bộ dữ liệu được mô tả qua các hàng; theo cách này, tất cả các hàng phải khác nhau (vâng, điều này nhấn mạnh tầm quan trọng của việc có ít nhất một KEY được khai báo và khi có hai hoặc nhiều KEY phải được định nghĩa là CHÍNH dựa trên lý do thực tế, trong khi phần còn lại có thể được coi là THAY ĐỔI, nhưng đúng vậy, trước khi đưa ra quyết định, mỗi TỪ KHÓA là một ứng cử viên của LÊ cho một định nghĩa là CHÍNH HÃNG).
Có một bảng trong thực tế đại diện cho một mối quan hệ là rất quan trọng, khi nó trải qua các hoạt động thao tác của một loại quan hệ, thì kết quả lại là một bảng đại diện cho một mối quan hệ. Theo cách này, hành vi của bảng nói là có thể dự đoán được .
Miền nguyên tử (cột)
Trong các phần đầu tiên của RM, Tiến sĩ Codd trình bày một số mẫu quan hệ để giới thiệu một số khái niệm; vì vậy, để hiểu ý nghĩa của miền nguyên tử , chúng ta hãy bắt đầu với đoạn trích sau từ RM mô tả chi tiết một số điểm thích hợp:
Cho đến nay, chúng ta đã thảo luận về các ví dụ về các mối quan hệ được xác định trên các miền đơn giản Các miền tên miền có các phần tử là các giá trị nguyên tử (không thể phân tách). Các giá trị phi nguyên tử có thể được thảo luận trong khuôn khổ quan hệ. Vì vậy, một số lĩnh vực có thể có quan hệ là các yếu tố. Lần lượt, các mối quan hệ này có thể được xác định trên các miền không rõ ràng, v.v.
Theo cách này, người ta có thể nói rằng mỗi quan hệ lưu trữ đã nói ở trên phù hợp với một trong hai loại, nói loại A hoặc loại B :
Loại A chỉ các quan hệ (bảng) được cấu trúc với các miền (cột) chỉ chứa các giá trị đơn giản trong mỗi bộ dữ liệu (hàng) của chúng, tức là các miền (cột) đó không chứa quan hệ (bảng) làm giá trị, trong đó bối cảnh này có nghĩa là các giá trị là nguyên tử vì chúng không thể được phân tách liên tiếp thành các quan hệ mới (bảng). Do đó, các mối quan hệ của lớp này là những mối quan hệ được chuẩn hóa , nghĩa là, chúng tuân thủ 1NF, hình thức của chúng là mong muốn.
Loại B được tích hợp độc quyền bởi các mối quan hệ (bảng) có một hoặc nhiều tên miền (cột) giữ quan hệ dưới dạng giá trị trong mỗi bộ (hàng) tương ứng và điều đó biểu thị rằng các giá trị đó là không tương tự vì sau đó chúng có thể được chia thành các quan hệ mới (bảng), tức là chúng có thể phân tách được . Do đó, các mối quan hệ của loại này là không bình thường, tức là chúng vi phạm 1NF, chúng ở dạng không mong muốn.
Bình thường hóa
Tiến sĩ Codd giới thiệu phần về bình thường hóa trong RM với đoạn văn sau:
Một mối quan hệ có các miền hoàn toàn đơn giản có thể được biểu diễn trong bộ lưu trữ bằng một cột hai chiều - mảng đồng nhất của loại được thảo luận ở trên. Một số cấu trúc dữ liệu phức tạp hơn là cần thiết cho mối quan hệ với một hoặc nhiều tên miền không rõ ràng. Vì lý do này (và những người khác được trích dẫn dưới đây), khả năng loại bỏ các tên miền không rõ ràng có vẻ đáng để điều tra! Trên thực tế, có một thủ tục loại bỏ rất đơn giản, mà chúng ta sẽ gọi là chuẩn hóa.
Sau đó, anh tiếp tục thể hiện:
Một nhóm các mối quan hệ trong đó một quan hệ không được chuẩn hóa (nó có các miền chứa các quan hệ là các giá trị, nghĩa là chúng không đơn giản; nghĩa là chúng không đơn giản)
Một nhóm các mối quan hệ được chuẩn hóa (nghĩa là một mối quan hệ đã bị phân tách; tức là, một mối quan hệ có các miền có giá trị được chia thành các mối quan hệ đơn giản biểu thị rằng chúng là nguyên tử)
Và sau đó, ông mô tả các thủ tục để có được quan hệ bình thường hóa từ những người không bình thường.
Về mặt này, các mối quan hệ anh ta sử dụng để minh họa một bài tập bình thường hóa và bản mô tả bài tập khá rõ ràng và tôi khuyên bạn nên tự mình phân tích chúng (và tôi cũng hy vọng điều này khuyến khích một số độc giả tham gia vào văn bản).
Thành công, ông chỉ ra:
Hoạt động hơn nữa của một loại bình thường hóa là có thể. Những điều này không được thảo luận trong bài báo này.
Và các hoạt động đã nói, tức là, dạng thông thường thứ hai và thứ ba (2NF và 3NF) thực sự được mô tả chi tiết trong CÂU bình thường hóa hơn nữa của Mô hình quan hệ cơ sở dữ liệu, và như đã đề cập ở trên, sau khi trình bày (và in và xuất bản sau) của bài báo này , dạng bình thường ban đầu được gọi là dạng bình thường đầu tiên.
Là một học viên có thể quan sát, có các mối quan hệ (bảng) không chuẩn hóa đưa ra sự tích chập (hầu như luôn luôn không cần thiết) vào các triển khai RDB.
Một mối quan hệ thỏa mãn 1NF, giúp giảm bớt định nghĩa về các ràng buộc và thao tác xử lý dữ liệu có thể được thực hiện bằng một ngôn ngữ con dữ liệu ít phức tạp hơn so với yêu cầu đối với các quan hệ không chuẩn hóa (bảng), như Tiến sĩ Codd chỉ ra trong các dòng sau:
Việc áp dụng một mô hình dữ liệu quan hệ, như được mô tả ở trên, cho phép phát triển một ngôn ngữ con dữ liệu phổ quát dựa trên một phép tính vị ngữ được áp dụng. Một phép tính vị ngữ bậc nhất đủ nếu tập hợp các quan hệ ở dạng bình thường. Một ngôn ngữ như vậy sẽ cung cấp một sức mạnh ngôn ngữ cho tất cả các ngôn ngữ dữ liệu được đề xuất khác và chính nó sẽ là một ứng cử viên mạnh mẽ để nhúng (với sửa đổi cú pháp phù hợp) trong nhiều ngôn ngữ máy chủ (lập trình, hướng theo vấn đề hoặc hướng đến vấn đề). [Càng]
[Càng]
Tính phổ biến của ngôn ngữ con dữ liệu nằm ở khả năng mô tả của nó (không phải khả năng tính toán của nó).
Sự hoang mang
Từ quan điểm của tôi, những hoang mang đã phát sinh, do (a) phần chênh lệch nói trên của giải, giải thích, vv về 1NF và các RM chính nó, và vì (b) nỗ lực hơn nữa để xác định lại 1NF rằng trạng thái đó có quan hệ lần lượt với các miền chứa các giá trị, các quan hệ tuân thủ 1NF miễn là chúng là một giá trị duy nhất cho mỗi bộ tương ứng.
Tôi nhận điểm khác của bạn
Không nên có bất kỳ mối quan hệ nào giữa các hàng, ngoài việc chúng tuân thủ cùng các tiêu đề.
Tôi không chắc liệu tôi có hiểu chính xác ý định của tuyên bố đó hay không, ngoài việc tuân thủ cùng các tiêu đề, còn phải có một kết nối giữa các hàng (tuples) của một mối quan hệ vì mỗi trong số chúng phải là một khẳng định về một sự xuất hiện cụ thể của loại thực thể cụ thể (được xác định theo bối cảnh kinh doanh quan tâm) mà mối quan hệ (bảng) được cho là đại diện.
Cũng không nên có mối quan hệ giữa các cột, nhưng tôi tin rằng đó là chủ đề của các hình thức bình thường cao hơn.
Tôi cũng không biết liệu tôi có diễn giải đúng ý nghĩa của câu nói đó hay không, nhưng trên thực tế, và theo phản ứng của tôi với khía cạnh trước đó, cũng phải có mối quan hệ giữa các miền (cột) của một mối quan hệ (bảng) , đó chính xác là lý do tại sao nó là một mối quan hệ (cấu trúc thiết yếu của mô hình quan hệ và triển khai RDB cụ thể).
Để làm gương, liên quan đến mối quan hệ giả định (bảng)
Salary (PersonNumber, EffectiveDate, Amount)
bộ (hàng)
sẽ truyền đạt ý nghĩa
The Salary payed to the Person identified by PersonNumber x, on EffectiveDate y corresponds to the Amount of z
Do đó, mỗi bộ (hàng) của Salary
mối quan hệ (bảng) phải phù hợp với cấu trúc của xác nhận được hiển thị ở trên và sự khác biệt sẽ là sự thay thế của các giá trị miền (cột) thích hợp, nhưng phải tồn tại mối quan hệ giữa (a) tất cả các Salary
miền (cột) và giữa (b) tất cả các giá trị tương ứng của chúng đối với từng bộ (hàng); một mối quan hệ như vậy nó là không thể thiếu.
Các dạng thông thường cao hơn (2NF và 3NF) rất hữu ích để loại bỏ các phụ thuộc chức năng giữa các miền (cột) của một mối quan hệ (bảng), chúng giúp tránh các kết nối không mong muốn giữa các miền (cột), như các kết nối không mong muốn cho phép giới thiệu các bất thường cập nhật . Cả 2NF và 3NF đều hữu ích để kiểm tra tính đúng đắn của cấu trúc của các mối quan hệ (bảng) trong một triển khai RDB nhất định.