예비
정규 형식 의 정의 (1971 년“데이터베이스 관계형 모델의 추가 정규화”에서 첫 번째 정규 형식 으로 알려짐 )와 관계형 패러다임 자체 의 정의는 1970 년에 과학 논문에 발표되었다. 데이터베이스 관리, 즉의 연습을위한 기초, "대형 공유 데이터 은행에 대한 데이터의 관계형 모델" 에 의해 생성 (간결을위한 RM) 박사 EF 커드 튜링 상을받는 사람이며, 관계형 프레임 워크에 관한 권한.
그렇습니다. Dr. Codd의 글에 대해 많은 설명, 해석, 설명, 편차 및 의견이 있지만, 저는 개인적으로 원천을 고수하는 것을 선호하며 스스로 결론을 도출 할 수 있도록 직접 분석 할 것을 적극 권장합니다.
나는 확실히 RM 전체를 이해하지 못하지만, 내가 이해하는 것은 그것의 우수성, 비전, 의도 및 범위를 이해할 수있게 해주 며 수십 년 후에도 약간의 부정확성이 있음을 알 수 있지만, 어떤 식 으로든 그 천재성과 우아함. 해당 분야에서 RM은 독보적 인 방식으로 시간 테스트를 견뎌냈으며, 최고의 비교를 유지하고 있습니다.
앞서 언급 한 부정확성을 강조하는 행위는 자선 용어를 사용하는 것은 불공평 할 것입니다. 상당한 거리에서 볼 때이 중요한 자료는 약간의 개선과 확장이 필요했지만, 작품의 주요 내용은 바로 개념 (그리고 실제로 Dr. Codd는 그러한 개선과 확장을 전부는 아니더라도)으로 만들었습니다.
나는이 탁월한 지식 원에 대한 이해를 강화하기 위해 지속적으로 RM을 계속해서 다시 읽습니다. 목표는 거인의 어깨에서는 것입니다.
관계 및 테이블
관계는 추상적 자원이기 때문에 Dr. Codd 는 관계 를 표 형식으로 표현하는 유틸리티를 계획했습니다. 관계형 데이터베이스 (RDB)의 사용자, 디자이너 및 관리자는보다 친숙하거나 구체적 으로 접근 할 수 있습니다 . 따라서 RDB 구현의 맥락에서 테이블 을 관계 의 속기 로 사용하는 것이 유효합니다.상기 표가 실제 관계를 나타내는 한. 이 기능은 테이블이 첫 번째 정규 형식 (1NF)을 준수하는 관계를 나타내는 지 여부를 평가하기 전에 관계를 정확하게 나타내야하기 때문에 매우 중요합니다.
RM에는 자연스럽게 테이블이 실제로 관계를 나타내는 지 결정해야하는 자질이 포함되어 있지만 여기에 대한 비공식적이고 소박한 해석을 제공 할 것입니다 (또 하나, 예!).
- 이름이 있어야합니다 (데이터베이스 구조의 각 특정 관계는 나머지와 구별되어야합니다).
- 각 행 은 해당 관계의 정확히 하나의 튜플 을 나타내야합니다 .
- 행 의 순서 는 전혀 중요하지 않습니다.
- 각 열 은 관련 관계 의 정확히 하나의 도메인 의 의미를 나타내는 이름을 가져야하며, 해당 이름은 테이블의 나머지 열의 이름과 달라야합니다 (열은 고유하게 구별되어야하며 운반해야합니다) 데이터베이스 모델러와 비즈니스 전문가가 각 의미 영역을 정확하게 정의하는 역할이 가장 중요합니다.)
- 위해 그 열은 의미가 없습니다.
- 모든 행의 열 수가 동일해야합니다.
- 행을 통해 묘사 된 모든 튜플을 고유하게 식별하는 하나 이상의 열 또는 하나의 열 조합 이 있어야합니다 . 이러한 방식으로 모든 행이 달라야합니다 (예, 하나 이상의 KEY를 선언해야하는 중요성을 강조하고 둘 이상의 KEY가있는 경우 실제적인 이유에 따라 PRIMARY로 정의해야하며 나머지는 ALTERNATE로 간주되지만 결정을 내리기 전에 각 KEY는 PRIMARY로 정의하기위한“후보”였습니다.
실제로 관계를 나타내는 테이블을 갖는 것은 관계형 조작 조작을 수행 할 때 결과가 다시 관계를 나타내는 테이블이므로 중요합니다. 이러한 방식으로, 상기 테이블의 거동은 예측 가능하다 .
원자 도메인 (열)
RM의 첫 번째 섹션에서 Dr. Codd는 몇 가지 개념을 소개하기 위해 몇 가지 관계 샘플을 제시합니다. 따라서 atomic domain 의 의미를 이해하기 위해 RM에서 발췌 한 몇 가지 관련 요점을 살펴 보겠습니다.
지금까지 우리는 단순한 도메인 (요소가 원자 (분해 할 수없는) 값인 도메인)에 정의 된 관계의 예에 대해 논의했습니다. 비 원자 값은 관계형 프레임 워크 내에서 논의 될 수 있습니다. 따라서 일부 도메인은 요소로 관계가있을 수 있습니다. 이러한 관계는 차례로 단순하지 않은 도메인 등에서 정의 될 수 있습니다.
이런 식으로, 앞에서 언급 한 해설 관계 각각이 종류 A 또는 종류 B 와 같은 두 종류 중 하나에 적합 하다고 말할 수 있습니다 .
종류 A 는 모든 튜플 (행)에 독점적으로 간단한 값 을 포함하는 도메인 (열)으로 구성된 관계 (테이블) 만 그룹화합니다 . 즉, 이러한 도메인 (열)에는 값으로 관계 (테이블)가 포함되지 않습니다. 이 문맥은 값이 새로운 관계 (테이블) 로 연속해서 분해 될 수 없기 때문에 값이 원자적임을 의미합니다 . 따라서이 등급의 관계는 정규화 되는 관계입니다 . 즉, 1NF를 준수하면 형태가 바람직합니다.
종류 B 는 각각의 튜플 (행)의 값으로 관계를 유지하는 하나 이상의 도메인 (열)을 갖는 관계 (테이블)에 의해 독점적으로 통합되며, 그 값은 이후에 새로운 관계로 분류 될 수 있기 때문에 비원 자적 임을 나타냅니다. (테이블), 즉 분해 가능 합니다. 따라서 이러한 종류의 관계는 정규화되지 않습니다. 즉, 1NF를 침해하며 바람직하지 않은 형태입니다.
표준화
Codd 박사는 RM의 정규화에 관한 섹션을 다음 단락과 함께 소개합니다.
도메인이 모두 간단한 관계는 위에서 논의 된 종류의 2 차원 열-균질 어레이에 의해 저장에서 표현 될 수있다. 하나 이상의 단순하지 않은 도메인과의 관계에는 좀 더 복잡한 데이터 구조가 필요합니다. 이러한 이유로 (및 아래에 인용 할 다른 것) 단순하지 않은 도메인을 제거 할 가능성은 조사 할 가치가있는 것으로 보입니다! 실제로 매우 간단한 제거 절차가 있으며이를 정규화라고합니다.
그런 다음 그는 계속해서 보여줍니다.
비정규 화 된 관계 그룹 (관계가 값으로 포함 된 도메인, 즉 비 원자, 즉 단순하지 않은 도메인)
정규화 된 관계 그룹 (즉, 분해 된 관계, 즉 관계가 부여 된 도메인이 원자임을 나타내는 간단한 것으로 분류 된 관계)
그리고 나서 그는 정규화되지 않은 관계로부터 정규화 된 관계를 얻는 절차를 설명합니다.
이와 관련하여 그가 정규화 운동을 설명하기 위해 그가 사용한 관계와 운동 설명 자체는 매우 명확하며 다시 분석하는 것이 좋습니다 (또한 일부 독자가 텍스트를 사용하도록 권장하기를 바랍니다).
그는 다음과 같이 지적합니다.
정규화 종류의 추가 작업이 가능합니다. 이에 대해서는이 백서에서 다루지 않습니다.
그리고 상기 동작, 즉, 제 2 및 제 3 정규형 (2NF 및 3NF)은 실제로 "데이터베이스 관계형 모델의 추가 표준화"및 상기 언급 된 바와 같이 본 논문의 발표 (및 추후 인쇄 및 출판) 후에 상세하게 설명된다 상기 원 통상의 형태는 제 1 정규형 알려졌다.
실무자가 관찰 할 수 있듯이 정규화되지 않은 관계 (테이블)가 있으면 RDB 구현에 (거의 항상 불필요한) 컨볼 루션 이 발생합니다.
Codd 박사가 다음 줄에서 지적한 것처럼 1NF를 만족하는 관계는 정규화되지 않은 관계 (테이블)에 필요한 것보다 덜 복잡한 데이터 하위 언어를 사용하여 구현할 수있는 제약 조건 및 데이터 조작 작업의 정의를 용이하게합니다.
위에서 설명한 것처럼 관계형 데이터 모델을 채택하면 적용된 술어 미적분을 기반으로 범용 데이터 하위 언어를 개발할 수 있습니다. 관계의 수집이 정상적인 형태이면 1 차 술어 미적분이면 충분합니다. 그러한 언어는 다른 모든 제안 된 데이터 언어에 언어 능력의 척도를 제공 할 것이며, 그 자체가 다양한 호스트 언어 (프로그래밍, 명령 또는 문제 중심)에 (적절한 구문 수정으로) 포함시키기위한 강력한 후보가 될 것입니다. […]
[…]
데이터 하위 언어의 보편성은 기술 능력 (컴퓨팅 능력이 아닌)에 있습니다.
당황
내 관점에서, 당황 인해 1NF 약 등의 해석, 설명,의 (a), 상기 과잉에 생겨났다 하는 상기 시도 RM 자체 때문에 (B)를 재정의 1NF를 그 상태로 그 관계를 갖는 관계가있는 값을 보유하는 도메인의 경우 관계 는 해당하는 튜플마다 하나의 단일 값인 한 1NF를 준수 합니다.
당신의 다른 포인트를 받아
행이 동일한 헤더를 따르는 것 외에는 행 사이에 관계가 없어야합니다.
나는 그 진술의 의도를 올바르게 이해하고 있는지 확실하지 않지만 동일한 헤더를 따르는 것 외에도 관계 (테이블)의 (튜플) 행 사이 에 연결 이 있어야합니다 . 관계 (표)가 나타내는 특정 엔티티 유형 (관심있는 비즈니스 컨텍스트로 정의)의 특정 발생.
열 사이에도 관계가 없어야하지만 더 높은 정규 형식의 주제라고 생각합니다.
나는 그 진술의 의미를 올바르게 해석하고 있는지 알지 못하지만 실제로는 이전 측면에 대한 나의 반응에 따라 관계 (테이블)의 도메인 (열) 사이에 관계 가 있어야합니다 이것이 관계 ( 관계형 모델과 구체적인 RDB 구현 의 필수 구조) 인 이유 입니다.
가설 관계와 관련하여 예시하기 위해 (표)
Salary (PersonNumber, EffectiveDate, Amount)
튜플 (행)
의미를 전달할 것이다
The Salary payed to the Person identified by PersonNumber x, on EffectiveDate y corresponds to the Amount of z
따라서 Salary
관계 (테이블 )의 각 튜플 (행)은 위에 표시된 어설 션의 구조에 맞아야하며 차이는 관련 도메인 (열) 값을 대체하지만, (a) 사이에는 관계가 있어야합니다. 모든 Salary
도메인 (열) 및 또한 (b) 각 튜플 (행)에 대한 모든 해당 값; 그런 관계는 없어서는 안될 관계입니다.
더 높은 정규형 (2NF 및 3NF)은 관계 (테이블)의 도메인 (열) 사이의 기능적 종속성을 제거하는 데 유용하며 , 바람직하지 않은 연결 은 업데이트 예외 의 도입을 허용하므로 도메인 (열) 간의 바람직하지 않은 연결 을 피하는 데 도움이됩니다. . 2NF와 3NF는 특정 RDB 구현에서 관계 (테이블) 구조의 건전성을 테스트하는 데 도움이됩니다.