관계형 DB의 4대 제약 조건이 면접문제에서 나온적이 있습니다
제대로 정리되지 않은 상황이라서 대답을 잘하지 못하였던 기억이 있어서 보기편하고 쉽게 정리 하였습니다
도메인제약
속성에 대한 제약으로 도메인에 정의된값 즉 도메인에서 정의한 범위나 자료형에 벋어나지 않아야 한다는 것이다.
또한 복합값이나 다중값은 허용되지 않는다.
키제약
릴레이션 즉 테이블에는 각 튜플을 식별하기 위한 pk값이 있어야 한다
개체무결성 제약
기본키에 대한 제약으로 pk값은 unique 하고 not null이여야 한다는 것이다
참조무결성제약
참조키는 참조하는 테이블에 없는 값을 참조키로 사용하면 안된다는 것이다.
추가적인 개념을 넣자면
함수적 종속성이란 하나의 값을 선택했을때 그값에 종속되는 값이 하나로 식별 즉 종속 값을 하나의 값으로 알 수 있다는 것으로 이게 db에서의 의미는 어떤 테이블에서 pk값을 하나 선택하였을때 나머지 테이블의 값들을 하나로 식별할 수 있는 것을 말한다. 즉 이것의 의미는 pk에 의해서만 값이 식별되도록 테이블을 구성하는 것을 말한다.
부분적 함수종속이란
pk가 복합키인 경우 복합키 모두애 의해 값이 식별되는 것이 아니라 복합키중 일부분만으로도 값이 식별될 수 있는 경우를 가르킨다.
이것의 의미는 무엇이냐면 복합키중 일부분 만으로 값이 식별된다는 것은 그 일부분이 따로 테이블로 구성될 수 있는 객체로서기존의 복합키의 일부분은 여전히 남아있는체로 식별관계관계로써 관계를 가지는 entitiy로써의 의미를 가질 수 있게 된다는 것이다.
이행적 함수 종속이란
pk에 의해서 식별된 값이 아니라 pk에 의해서 식별된 값에 의해 다시 식별되는 값의 경우를 말한다.
이경우의 의미는 이행적 함수 종속이 성립 시키는 pk에 의해서 식별된 값은 FK로서 현재 테이블에 남아있고
따로 테이블로 구성되어 현재의 테이블과 비식별관계를 가지는 entitiy로써의 의미를 가질 수 있게 된다는 것이다.
이상현상
삭제이상
특정값의 삭제가 삭제의도가 없는 다른 값의 삭제로 이어지는 것
삽입이상
특정값을 테이블에 저장이 그 값과 관걔없는 값을 입력하지 않으면 삽입할 수 없는 것으로
갱신이상
하나의 값을 갱신 할 대 하나 이상의 튜플의 값을 수정해야 하거나 하나의 튜플의 값만 수정하였을때 데이터 블일치가 일어난것
정규화가 성능상이점을 주는 이유
정규화를 통해 중복된 레코드를 살펴볼 필요없이 단일한 데이터들만 검색할 수 있어서 성능향상
또한 update시 하나의 레코드만 변경할 수 있어서 성능상의 이점을 가짐
성능상 단점은
조회시 조인이 많이 발생할 가능성이있어서 (항상 정규화가 조회에 있어서 성능저하의 원인은 아니다 다만 조인이 많이 발생하는 경우만 그렇다)
pk는 후보키중 해당테이블에 대표성이 있는 것을 선정하는데 이는
pk를 기준으로 검색하는 일이 많다는 것을 예상하고서 기본키로 정하는 것이다.