DB

    [DB] 제 3정규화

    [DB] 제 3정규화

    🔍 3 정규화 식별자가 아닌 일반 속성 간에는 종속성이 존재하지 않는다. 만약 일반 속성 간에 종속성이 존재한다면 3정규형의 대상이 되며 이를 이행 종속 속성이라고 한다. 🔍 실습 예제 테이블을 보면 고객 번호가 심상치가 않다. pk 또는 fk일 것 같은 느낌이 강하게 드는데 각 컬럼들간의 관계를 한 번 살펴보자. 주문번호가 정해지면 고객번호, 주문일자, 배송요청일자는 자동으로 정해진다. 그런데 고객명 컬럼이 조금 이상한 것 같다. 고객명은 주문번호보다는 고객번호에 의해 정해져야하는 컬럼 같다. 따라서 고객번호와 고객명을 분리한다.

    [DB] 제 2정규화

    [DB] 제 2정규화

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

    [DB] 제 1정규화

    [DB] 제 1정규화

    🔍 1 정규화 모든 속성은 반드시 하나의 값을 가져야 한다. 값이라는 것은 원자성(ATOM)을 가져야 한다. 즉 더 이상 쪼갤 수 없는 하나의 값만을 가져야 한다. (위배하면 중복이 생김) 🔍 대상 다가 속성이 사용된 릴레이션 복합 속성이 사용된 릴레이션 유사한 속성이 반복된 릴레이션 중첩 릴레이션 동일 속성이 여러 릴레이션에 사용된 경우 🔍 다가 속성이 사용된 릴레이션 다가 속성 : 같은 종류의 값을 여러 개 가지는 속성 고객 번호를 알더라도 유일하게 식별할 수 있는 전화번호의 값이 없다. (전화번호는 고객번호에 종속되지 않는다.) 따라서 한 속성에는 반드시 하나의 값을 가져야 한다는 1정규형에 어긋난다. 다음과 같이 한 속성이 하나의 값을 가지도록 테이블을 수정해야 한다. 위의 테이블을 보면 고객번호..

    [DB] 정규화

    [DB] 정규화

    🔍 다과 속성과 복합 속성 다음의 테이블 구조는 주문상품 컬럼에 너무 많은 정보가 있다는 것에 있다. 한 컬럼은 한 속성만 가져야 하기 때문에 row를 새로 분리해야 한다. 01배 1박스와 같이 한 정보만 가질 수 있도록 분리했다. 여기서 또 다른 문제는 상품 코드, 상품명, 상품 수량 코드가 한 컬럼에 같이 있다는 것이다. (복합 속성) 복합 속성의 경우는 컬럼의 수를 늘려서 이를 해결한다. 🔍 제 1정규화 데이터 중복을 제거하기 위한 테이블 분할을 의미한다. 여기서는 주문 번호, 날짜, 성명, 연락처 컬럼의 정보가 겹치는 것을 확인할 수 있다. 따라서 이를 분리한다. 분리된 두 테이블은 주문번호로 pk, fk 관계를 맺는다. 오른쪽 테이블의 pk값은 주문번호 + 상품 코드를 함께 묶어 설정될 수 있다..

    [DB] 1:1 관계 설계

    [DB] 1:1 관계 설계

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