관계형데이터베이스

    [DB] 제 2정규화

    [DB] 제 2정규화

    🔍 2 정규화 두 개 이상으로 구성된 PK에서 발생 모든 비 식별자 속성은 모든 PK값 속성에 종속되어야 한다. 🔍 실습 먼저 PK 컬럼과 일반 컬럼의 관계를 살펴보자. FD : (상품 번호 → 상품명) FD2 : (상품 번호 → 단가) FD3 : (주문 번호, 상품 번호 → 주문 수량) 상품 번호만 가지고 상품명과 단가가 정해진다는 것을 확인할 수 있다. 따라서 이를 분리한다.

    [DB] 테이블의 M:N 설계

    [DB] 테이블의 M:N 설계

    🔍 M:N 관계 두 개의 테이블에서 1 : M 관계가 양쪽에서 모두 나타날 때 이를 M : N 관계라고 한다. 이 관계는 선천적으로 테이블의 관계까 없으며, 비즈니스 로직 등으로 어떤 관계를 맺어줌으로써 관계가 형성된다. 🔍 M:N관계의 문제점 개념상으로 다음과 같이 M : N 관계를 표현하는 것이 가능하다. 하지만 이 관계를 풀어서 표현하면 다음과 같다. 즉, 학생, 과목 테이블의 PK 컬럼인 ID가 중복이 되어버린다. 따라서 M : N관계에서는 양쪽 테이블 모두에서 pk중복이 일어나기 때문에 이를 해결할 방법이 필요하다. 🔍 M:N관계 설계 이런 M:N 관계를 해결하기 위해 또 하나의 테이블을 도입할 수 있다. 위와 같은 모델에서 수강 테이블과 다른 테이블의 관계 테이블이 생성될 수 있다. 그러기 위..

    [DB] PK를 정하는 기준

    [DB] PK를 정하는 기준

    🔍 주식별자를 정하는 기준 PK를 설정하면 키에 대응하는 인덱스 테이블이 생성되기 때문에 적절한 PK를 설정하는 것은 중요하다. (인덱스 테이블은 키 값에 의해서 정렬되어 있기 때문에 빠른 값 찾기를 가능하게 한다.) 컬럼의 성격을 봤을 때 유일성이 있으면 후보키가 될 수 있다. 그러면 여러 후보키가 있을 때 어떤 컬럼을 PK로 정해야 할까? → NOT NULL이 될 수 있냐와 고객이 제공한 데이터인지 아닌지의 여부로 정할 수 있다. 위에서 PK로 적절한 컬럼은 무엇일까? -> 일단 후보로 주민번호, 폰번호, 이메일, 고객번호가 될 수 있다. 유일한 값이기 때문이다. 이제 NOT NULL의 여부를 확인해봐야 한다. 여기서 폰번호와 이메일은 null이 될 수 있기 때문에 pk후보군에서 제외된다. 그렇다면 ..