RDBMS

    [DB] 1:1 관계 설계

    [DB] 1:1 관계 설계

    🔍 1:1 관계 1:1 관계란 각 테이블에서 하나씩 관계를 가지는 것을 의미한다. 일부일처제인 혼인 제도에서 남자는 한 여자와 한 여자는 한 남자와 밖에 결혼할 수 없는 경우를 예로 들 수 있다. 🔍 실습 1:1 관계는 실질적으로 적용하면 어려울 수 있다. 다음과 같은 상황을 생각해보자. 파일을 건별로 파일철에 정리한다고 해보자. 파일철과 파일들(건수)은 1 : m관계를 가진다. 이 때 건정보별로 잘 정리하기 위해서 종류 별로 나눈다고 가정하면 다음과 같이 건정보1, 건정보2, 건정보3처럼 여러가지 타입이 나올 수 있다. 이 때 1:1 관계를 이용하면 깔끔하게 정리할 수 있다. 다음과 같이 공통 특성을 분리하고 테이블명을 추가하여 연결시키면 된다.

    [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후보군에서 제외된다. 그렇다면 ..