차례:
비디오: 오라클 DB SQL 강좌 | 테이블 참조, Foreign Key, 참조 무결성 제약조건, SQLP, SQLD, 데이터베이스 실습 강의 2024
SQL 데이터베이스가 세 번째 정규 형식으로 된 후에는 수정 예외의 가능성은 거의 없지만 모두 제거되었습니다. 세 번째를 넘어서는 정상적인 형태는 남아있는 버그를 거의 없애기 위해 정의됩니다.
도메인 키 정규형 (DK / NF)
Boyce-Codd 정상형 (BCNF), 네 번째 정규형 (4NF) 및 다섯 번째 정규형 (5NF)이 이러한 형태의 예입니다. 각 양식은 가능한 수정 변형을 제거하지만 모든 가능한 수정 변형의 방지를 보장하지는 않습니다. 그러나 도메인 키 정규형은 그러한 보증을 제공합니다.
도메인 키 정규형 (DK / NF) 에 관계가있다. 이 정의에서 제약 조건 은 그것이 사실인지 아닌지를 평가할 수있을만큼 충분히 정확한 규칙입니다. 키 는 테이블의 행에 대한 고유 한 식별자입니다. 도메인 은 속성의 허용 된 값 집합입니다.제약 조건:
Customer_ID는 제품을 결정합니다. 제품은 가격을 결정합니다.
Customer_ID는 정수 여야합니다. 표:
영업 (Customer_ID, Product, Price) > 1000
-
-
Constraint 3 (Customer_ID가 1000보다 큰 정수 여야 함)을 적용하려면 Customer_ID의 도메인을 정의하여이 제약 조건을 통합하면됩니다. 그러면 제약 조건이 CustomerID 열의 도메인의 논리적 인 결과가됩니다. 제품은 Customer_ID에 따라 달라지며 Customer_ID는 키이므로 제약 조건 1에 아무런 문제가 없으므로 키 정의의 논리적 결과입니다.
-
제약 2 999는 문제가된다. 가격은 (제품의 논리적 인 결과이므로) 제품에 달려 있으며 제품은 핵심이 아닙니다. 해결책은 SALES 테이블을 두 개의 테이블로 나누는 것입니다. 한 테이블은 Customer_ID를 키로 사용하고 다른 테이블은 Product를 키로 사용합니다. 데이터베이스는 3NF 외에 DK / NF에도 있습니다.
가능하면 데이터베이스가 DK / NF가되도록 설계하십시오. 그렇게 할 수있는 경우 키와 도메인 제한을 적용하면 모든 제약 조건이 충족되고 수정 변형이 불가능합니다. 데이터베이스 구조가 DK / NF에 넣지 못하도록 설계된 경우 데이터베이스를 사용하는 응용 프로그램에 제약 조건을 작성해야합니다. 데이터베이스 자체가 제약 조건이 충족 될 것이라고 보장하지는 않습니다.
비정상적인 형태
인생과 마찬가지로 데이터베이스에서도: 때로는 비정상적인 결과가 발생합니다.정상화로 도취 될 수 있고 너무 멀리 갈 수 있습니다. 데이터베이스를 너무 많은 테이블로 나누면 전체가 다루기 힘들고 비효율적이게됩니다. 성능이 떨어질 수 있습니다. 종종 데이터베이스의 최적 구조가 다소 비정규 화됩니다. 실제로, 실용적인 데이터베이스 (실제로는 큰 데이터베이스)는 DK / NF 에까지 정규화 된 적이 거의 없습니다. 그러나 수정 한 데이터베이스를 정상화하여 수정 예외로 인한 데이터 손상 가능성을 제거하려고합니다. 가능한 한 데이터베이스를 정규화 한 후 일부 검색을 마른 실행으로 만듭니다. 성능이 만족스럽지 않으면 디자인을 검토하여 선택적인 비정규 화로 인해 무결성을 유지하면서 성능이 향상되는지 확인하십시오. 전략적 위치에 중복성을 신중하게 추가하고 비정상적인 ,