실제 DBMS를 고려하지 않은 상태로 데이터베이스 내의 스키마를 정의하는 단계
개념적 데이터 모델링 단계에서 정의된 ER Diagram을 관계형 데이터베이스 이론에 맞게 변환시키는 작업
실세계에서 발생하는 데이터를 수학적인 방법에 의해 구조화시켜 체계적으로 관리할 수 있도록 한 이론
보다 효율적으로 데이터가 저장될 수 있는 구조를 만들기 위해 정규화 실행
중복된 데이터를 허용하지 않음으로써 무결성을 유지할 수 있음
불필요한 데이터를 제거한다
데이터 저장을 "논리적으로" 한다
이상현상 | 내용 |
---|---|
입력이상 | 데이터 입력 시 필요 없는 속성까지 입력해야 하는 현상 |
수정이상 | 데이터 수정 시 원하지 않는 데이터까지 수정되는 현상 |
삭제이상 | 데이터 삭제 시 필요한 데이터까지 삭제되는 현상 |
정규형에 맞게 정규화를 함
정규화를 수행하는데 있어서의 규칙
반복되는 속성이나 그룹의 속성을 제거하고, 새로운 엔티티를 추가한 후에 기존의 엔티티와 일대다의 관계를 형성
테이블의 칼럼이 하나의 값을 갖도록 테이블을 분해
복합식별자 일부에 의존적인 속성이 존재한다면 이를 제거 (부분종속속성 제거)
제1 정규화를 진행한 테이블에 대해 완전 함수 종속을 만족하도록 테이블을 분해
완전 함수 종속 -> 기본키의 부분집합이 결정자가 되어선 안된다
한 엔티티 안의 모든 주식별자가 아닌 속성들은 주식별자에 의존해야 한다
제2 정규화를 진행한 테이블에 대해 이행적 종속을 없애도록 테이블을 분해
Extended ER 모델
하나의 실체는 두개 이상의 실체로 분할될 수 있으며, 이들의 공통 분모를 모아서 슈퍼타입으로 정의하고 나머지 배타적인 속성들을 모아서 서브타입으로 정의한다.
슈퍼타입에 정의된 공통 속성과 각 서브타입의 속성을 더하여 각각의 서브타입별로 테이블을 설계하는 방법 => 서브타입 단위의 모델링
자기 자신과 관계를 맺음으로 해서 자기 자신의 기본키가 자기 자신에게 외래키로 전이되는 관계
한 개체집합이 자기자신과 관계집합을 형성
계층구조를 정의할 수 있는 데이터 형식 : Hierarchyid
한 테이블에 있는 여러 레코드가 다른 테이블에 있는 여러 레코드와 연관되어 있는 경우 발생
해당 문제를 해소하기 위해서 연결테이블 이라는 세번째 테이블을 사용하여 다대다 관계를 두개의 일대다 관계로 분리해야함
공통코드 테이블 -> 코드와 코드값으로 구성된 다양한 코드들을 모아서 하나의 테이블에서 관리
공통코드는 코드의 이름이 달라야 등록할수 있게 설계 해야함
코드명만을 키로 가지는 테이블을 설계 후 코드명을 기반으로 위에서 정의한 코드별로 그에 따른 값을 저장해야함
공통 코드 테이블의 관게를 표현하지 않는 것은 관계가 많아서 이기도 하지만 코드 칼럼만 상속받을 수 없도록 되어있는 모델 구조의 특징
여러 실체유형 간의 공통적인 특성을 파악하는 과정
둘 또는 그 이상의 실체유형 요소간에 서브세트(부분집합)를 정의하는 개념
데이터 모델링 언어는 일반화에 의하여 실체유형을 슈퍼/서브타입으로 구분하는 특징이 있다!
공통 속성을 가지는 슈퍼타입과 공통부분을 제외하고 두개 이상의 엔티티간의 속성에 차이가 있을 때 별도의 서브타입으로 존재