문제

Boyce-Codd 정규 형식이 무엇인지 기억하고 정규화되지 않은 테이블과 BCNF를 가져오는 방법을 기억하는 KISS(Keep it Simple, Stupid) 방법은 무엇입니까?

위키피디아님의 정보:나에게는별로 도움이되지 않습니다.

도움이 되었습니까?

해결책

Chris Date의 정의는 실제로 그가 의미하는 바를 이해하는 한 꽤 훌륭합니다.

각 속성

데이터는 다른 속성에 종속되지 않는 별도의 고유한 속성/열/값으로 구분되어야 합니다.귀하의 전체 이름은 속성입니다.귀하의 생년월일은 속성입니다.귀하의 나이는 속성이 아니며, 생년월일의 일부가 아닌 현재 날짜에 따라 달라집니다.

사실을 나타내야 함

각 속성은 사실의 집합이 아니라 단일 사실입니다.속성에서 한 비트를 변경하면 전체 의미가 변경됩니다.당신의 생일은 사실입니다.당신의 이름은 사실인가요?뭐, 어떤 경우에는 그렇죠. 성을 바꾸면 이름도 달라지니까요. 그렇죠?그러나 계보학자에게는 성과 성이 있고, 성을 바꾸더라도 성은 바뀌지 않으므로 별개의 사실입니다.

열쇠에 대해서,

한 가지 속성은 특별합니다. 바로 키입니다.키는 데이터의 모든 정보에 대해 고유해야 하며 절대로 변경되어서는 안 되는 속성입니다.귀하의 성명은 변경될 수 있으므로 열쇠가 아닙니다.귀하의 사회보장번호는 재사용되므로 열쇠가 아닙니다.속성은 두 가지 사실의 조합이 될 수 없기 때문에 조합을 재사용할 수 없더라도 SSN과 생년월일은 키가 아닙니다.GUID는 키입니다.증가시키고 재사용하지 않는 숫자가 키입니다.

전체 키,

열쇠만으로도 충분해야 합니다.그리고 꼭!] 귀하의 가치를 식별하기 위해;서로 다른 키로 동일한 데이터를 표시할 수 없으며 키 열의 하위 집합만으로는 사실을 식별하기에 충분할 수 없습니다.GUID 키, 이름 및 주소 값이 포함된 주소록이 있다고 가정합니다.서로 다른 사람을 나타내고 "동일한 데이터"가 아닌 경우 서로 다른 키로 동일한 이름이 두 번 나타나는 것은 괜찮습니다.회계 부서의 Mary Jones가 자신의 이름을 Mary Smith로 변경하더라도 영업 부서의 Mary Jones도 이름을 변경하지 않습니다.반면에 Mary Smith와 John Smith가 동일한 주소를 가지고 있고 실제로 동일한 장소인 경우에는 허용되지 않습니다.거리 주소와 새 키를 사용하여 새 키/값 쌍을 만들어야 합니다.

또한 이제 동일한 거리 주소 키가 두 번 표시되므로 이 새로운 단일 거리 주소에 대한 키를 주소록의 값으로 사용할 수 없습니다.대신 주소록 키와 주소 키 값을 사용하여 세 번째 키/값 쌍을 만들어야 합니다.이 값 그룹에서 책 키와 주소 키를 일치시켜 사람의 거리 주소를 찾습니다.

그리고 열쇠 ​​외에는 아무것도 없어

값을 식별하는 키 외에는 아무것도 없어야 합니다.예를 들어, "Taj Mahal"의 주소가 허용되면 (하나만 있다고 가정) 같은 기록에서 도시 가치를 허용하지 않습니다. 주소를 알고 있으면 도시를 알고 있기 때문입니다.이는 또한 다른 도시에 하나 이상의 타지마할이 있을 가능성을 열어줍니다.대신 타지마할, DC의 백악관 등과 같은 고유한 값과 해당 도시를 사용하여 보조 위치 키를 다시 만들어야 합니다.또는 도시에 고유한 "주소"를 금지합니다.

그러니 도와주세요, 코드.

다른 팁

다음은 Wikipedia 페이지의 유용한 발췌문입니다. 세 번째 정상 형태:

Bill Kent는 다음과 같은 방식으로 세 번째 정상 형태를 정의합니다.

각 비 키 속성은 "키, 전체 키 및 키에 대한 사실을 제공해야합니다."

비 키 속성이 "전체 키"에 의존하도록 요구하면 테이블이 2NF인지 확인합니다. 키 속성이 아닌 속성이 "Key on the Key"에 의존 해야하는 경우 테이블이 3NF에 있는지 확인합니다.

Chris Date는 Boyce-Codd 정의 형태를 정의하도록 Kent의 니모닉을 조정합니다.

"각 속성은 키, 전체 키, 키에 대한 사실을 나타내야합니다." 여기서 요구 사항은 비 키 속성뿐만 아니라 테이블의 모든 속성과 관련이 있습니다.

이것은 테이블에 여러 개의 복합 후보 키가 있고 하나의 후보 키 내의 속성이 부분 다른 후보 키. 세 번째 정상 형태는 주요 속성을 배제하기 때문에이를 금지하지 않습니다. 그러나 BCNF는 규칙을 주요 속성에도 적용합니다.

테이블을 BCNF를 만족시키는 방법에 대해서는 다른 속성과 다른 테이블을 다른 테이블로 분할하여 추가 종속성을 나타내야합니다.

"Boyce Codd Normal Form"을 검색했으며 Wikipedia 이후 이것은 두 번째 결과입니다. 내 교과서는 관계형 데이터베이스 관리 시스템 측면에서 매우 간단한 정의를 제공합니다.

사소한 FD의 왼쪽은 슈퍼 키 여야합니다.

-Garcia-Molina, Ullman 및 Widom의 "Database Systems The Complete Book".

내가 읽은 가장 좋은 비공식 답변은 BCNF에서 모든 기능적 의존성의 모든 "화살표"가 후보 키에서 "화살표"라는 것입니다. 나는 그 출처를 기억하지 못하지만 아마도 Chris Date가 쓴 것일 것입니다.

기본적으로 Boyce-Codd는 "다섯 번째 정상 형태"입니다. 유형 (예 : 역할, 상태, 프로세스 상태, 위치 유형, 전화 유형 등)에 대해 데이터 모델에 "속성 엔티티"가 존재함으로써 시각적으로 인식 할 수 있습니다. 귀속 엔티티 (하위 서브 타입)는 클래스 레벨 엔티티를 더 분류하는 유한 값 세트의 목록입니다. 따라서 전화 유형 ( 'Mobile', 'Desk', 'VoIP') 이메일 계정 유형 ( 'Business', 'Personal', 'Gaming'), 역할 (프로젝트 관리자, 데이터 모델러, Super Model 등)이있을 수 있습니다. . 또 다른 형태 학적 단서는 당사자 (일명 마스터 클래스, 슈퍼 클래스, 메타 엔티티) (하위 유형이 회사, 사람 등)의 존재입니다.

그것은 기본적으로 분류법이 사라졌다 (.. 비디오는 그다지 흥미롭지 않다). 보다 기술적 인 설명은 위의 Bill Karwin의 의견을 참조하십시오.

Boyce-Codd 레벨 모델은 본질적으로 매우 상세한 논리 모델이며보다 단순한 비즈니스 기반 개념 모델에서 파생됩니다. ** 성능 (또는 기능적 단순성)을위한 PDM 최적화 (또는 기능적 단순성)가 UIS 또는 장면 논리에서 드롭 다운 목록으로 관리 될 수 있기 때문에 일반적으로 물리 모델에서 Ver Batim이 구현되지 않습니다. 응용 프로그램 또는 데이터베이스 제약 조건 및 참조 무결성을 시행하는 방법에서. (즉, PDM 스키마에서 룩업 테이블로 끝나거나 코드로 처리되고 데이터베이스에 표시되지 않을 수 있습니다).

그렇다면 - PDM에서 끝나지 않을 경우 왜 그렇게합니까? 같은 이유로 당신은 '최적화'전에 좋은 3NF 모델을 구축하므로 데이터베이스 구조가 실제 세계를 반영하고 우리가 상속하고 비즈니스/고객으로서 일하기 위해 영웅적인 행동을해야합니다. 요구 사항 변경.

종종 당신의 장을 듣는 것이 가장 쉬우 며 이것은 자연스럽게 올 것입니다. 일반적으로 3NF를 만나면 BCNF를 만났습니다. 이것은 ERD에 대한 자세한 분석을 다루지 않거나 예제가 있지만 Codd에 따르면 13 개의 규칙이 있습니다. 나는이 규칙을 준수하는 것이 가장 좋지만 항상 일을 할 수있는 올바른 방법이 없으므로 느슨하게 따르십시오. RDBMS와 관련하여 다음은 다음과 같습니다.

http://www.87android.com/12-rules-of-relational-database-model-by-codd/

이것은 질문에 직접 대답하지 않을 수 있지만, BCNF에 도달하는 방법이나 그것을 기억하기 쉬운 방법에 대해 묻는다면 정규화를 충분히 이해하지 못합니다. 그래도 그것은 걱정할 필요가 없습니다. 관계형 데이터베이스는 많은 형태를 취하며 잘 수행되는 사람은 거의 없습니다. 당신이 할 수있는 최선의 방법은 관계형이라는 것이 무엇을 의미하는지, 위의 규칙을 따르며 정규화 수준에 대해 걱정하지 않는 것입니다. 정규화 과정은 데이터의 복제를 제거합니다. 기능 의존성의 마이그레이션으로 이동함으로써 각 레벨이 더 있습니다. 그것을 명심하고 당신은 괜찮을 것입니다. 당신의 장과 지성은 나머지를 할 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top