개념적 설계 | 논리적 설계 | 물리적 설계 |
엔터티( Entity ) | 릴레이션 | 테이블 |
결과물 : 개념적 스키마(E-R다이어그램) ( DBMS에 독립적인 개념적 구조 설계) |
결과물 : 논리적 스키마(릴레이션 스키마) DBMS에 적합한 논리적 구조 설계 |
결과물 : 물리적 스키마 ( DBMS로 구현 가능한 물리적 구조) |
속성 관계 판별 > 동사찾기 다 대 다 (개념 모델에선 허용되나 논리부턴 허용되어지지않음) 다(부모) 대 1 1:1 관계 ex. 주문서 |
속성 정규화 (정규화를 하지 않으면 데이터 중복으로 이상현상발생) |
컬럼(필드) |
요구사항 분석
업무에 필요한 데이터가 무엇인지 그 데이터에 어떤 처리가 필요한지 고려
<명세서>
명사를 가려내서 고유명사인 경우(이름, 지명, 회사명)은 버리기
범위가 너무 큰 명사는 버림
대표 명사 한개만 결정 > 엔터티 후보
개념적 설계
- 개체 추출, 각 개체의 주요 속성과 키속성 선별
- 개체 간의 관계 결정
- E-R 다이어그램으로 표현
논리적 설계
E-R다이어그램을 릴레이션 스키마로 변환하는 규칙
- 모든 개체는 릴레이션(DB 테이블)으로 변환한다
- 개체의 이름 > 릴레이션 이름
- 개체의 속성 > 릴레이션 속성
- 개체의 키 속성 > 릴레이션 기본키
- 개체의 속성이 복합 속성인 경우에는 복합 속성을 구성하고 있는 단순 속성만 릴레이션의 속성으로 변환
- 다대다 관계는 릴레이션으로 변환한다.
- 관계의 이름 > 릴레이션 이름
- 관계의 속성 > 릴레이션 속성
- 관계에 참여하는 개체를 위에 따라 릴레이션으로 변환한 후 이 릴레이션의 기본키를 관계 릴레이션에 포함시켜 외래키로 지정하고 외래키를 조합하여 관계릴레이션의 기본키로 지정
- 일대다 관계는 외래키로 표현한다.
- 일대다 관계는 외래키로만 표현
- 약한 개체가 참여하는 일대다 관계는 외래키를 포함해서 기본키로 지정
- 일대일관계는 외래키로 표현한다.
- 일반적인 일대일 관계는 외래키를 서로 주고 받는다
- 일대일 관계에 필수적으로 참여하는 개체의 릴레이션만 외래키를 받는다
- 모든개체가 일대일 관계에 필수적으로 참여하면 릴레이션을 하나로 합친다
- 다중값 속성은 릴레이션으로 변환한다.
변환 규칙을 순서대로 적용하되, 해당되지 않은 규칙은 제외함
함수 종속 : 릴레이션에서 A속성의 값이 B속성의 값을 유일하게 식별할 수 있다면 B 속성은 A속성에 함수적으로 종속되었다고함
결정자(Determinant) : 종속성 분류시 기준이 되는 값
종속자(Dependent) : 결정자의 값에 의해 정해질 수 있는 값
아노말리(Anomalry) : 데이터 이상현상 (Update Anomarly, Insert Anomarly, Delete Anomaly)
정규화
1 정규화 (First Normal Form)
모든 속성은 반드시 하나의 값을 가져야함 (다가속성, 복합속성과 관련, 유사속성 반복, 중첩릴레이션, 동일 속성 릴레이션)
위와 같은 상태일 때 정규화를 위해
100 | 홍길동 | 10 |
100 | 홍길동 | 11 |
데이터 중복을 통해 테이블 분해
2 정규화 (Second Normal Form)
주 식별자가 두 개 이상인 릴레이션에서 발생, 부분종속이 발생되었을 때 시행
일반 속성 중 주 식별자 전체에 종속적이지 않은 속성을 찾아 기본 엔터티에서 제거하고 그 속성의 결정자를 주 식별자로 하는 새로운 상위 엔터티를 생성
3 정규화 (Third Normal Form)
비식별자간에 발생하는 이행적 종속성과 연관
보이스코드 정규화(Boyce-codd Normal Form)
3정규형을 보강한 정규형
모든 BC 정규형은 모두 3 정규형이지만 3정규형이 모두 BC 정규 릴레이션이 아님
모든 결정자는 주 식별자이어야함, 릴레이션에 존재하는 종속자는 후보식별자가 아니어야함
4 정규화 (Fourth Normal Form)
5 정규화 (Fifth Normal Form)
사원
사원번호 | 이름 | 직책 | 급여 |
주소
사원번호 | 시 | 구 | 동 |
부양가족
물리적 설계
'DB Oracle' 카테고리의 다른 글
[Oracle] DB 넣을 시 참고 - 기본키, 날짜 (0) | 2024.09.07 |
---|---|
[DB] SQL 문제 (0) | 2024.08.31 |
[Oracle] WITH AS (0) | 2024.04.09 |
[Oracle] Trigger (0) | 2024.04.08 |
[Oracle] Function (0) | 2024.04.08 |