// 데이터베이스 설계
1. 요구사항 수집 및 분석
2. 개념 데이터 모델링
3. 논리 데이터 모델링
4. 물리 데이터 모델링
5. 데이터베이스 구축
// 데이터 모델링
- 요구 분석을 기반으로 수집한 데이터를 분석하고 저장 구조를 생성한 후 도식화 하여 산출물(ERD)을 도출하는 것
- 데이터 저장을 위한 데이터 구조를 설계하는 작업
- DBMS 종류를 결정하지 않는다.
a. 개념 데이터 모델링 : 간단하게 표현한 설계도 > 테이블 + 컬럼 + 관계
b. 논리 데이터 모델링 : 제대로 된 설계도 > 관계형 데이터베이스 성질 반영 > 속성 + 도메인 + 키
c. 물리 데이터 모델링 : 특정 DBMS 결정 > 오라클 선정 + 반영 > 물리적 설정
1. Entity, 엔티티
- 다른 엔티티와 분류될 수 있고, 다른 엔티티에 대해 정해진 관계를 맺을 수 있는 데이터 단위
- 릴레이션 = 객체 = 레코드 = 엔티티 = 테이블(행)
a. 학생 정보 관리
- 정보 수집: 아이디, 학생명, 나이, 주소, 연락처..
- 학생(아이디, 학생명, 나이, 주소, 연락처) > 학생 : 엔티티
b. 강의실 정보 관리
- 정보 수집: 강의실 호수, 크기, 인원수, 용도, 면적..
- 강의실(강의실 호수, 크기, 인원수) > 강의실 : 엔티티
2. Attribute, 속성
- 엔티티를 구성하는 정보
- 컬럼
3. Entity Relationship, 엔티티 관계
- 엔티티: 학생(이름, 나이, 반..), 교사(이름, 담당과목, 반..), 학급(학년, 반..)
- 학생 <-> 학급 <-> 교사 : 관계
// ERD, Entity Relationship Diagram
- 엔티티 간의 관계를 표현한 그림
- 관계형 데이터베이스 모델링 기법 중 하나
- 손, 오피스, 전문틀(exERD, AQUERYTOOL, ER-win...)
// 개념적 모델링
- 그리는 방법 : Entity, Attribute, Relationship 등을 표현하는 방법
1. Entity
- 사각형
- 이름을 작성
- ERD 내에 동일한 엔티티명 사용 금지
2. Attribute
- 원
- 엔티티에 연결
- 추가 표기사항(속성에 대한 성질 기술)
a. NN, Not Null
- 해당 속성은 반드시 작성해야 한다.
- 필수값
b. ND, Not Duplicate
- 해당 속성은 중복될 수 없다.
- 유일값(Unique)
1. 중복되면 안 되고, 생략되면 안 된다. (NN & ND)
- #*속성명
2. 생략되면 안 된다.(NN)
- *속성명
3. 중복되면 안 된다.(ND)
- #속성명
4. 중복되도 되고, 생략되도 된다.
- 속성명
- o속성명 (optional)
3. Relationship
- 마름모
- 엔티티와 엔티티의 관계
- 가장 중요한 표현★★★
- 관계의 패턴
~ 여자 - 연인관계 - 친구
a. 1:1
- 일대일
~ 모든 여자와 남자가 서로만 만남
b. 1:N
- 일대다
~ 남자친구가 여러 명인 여자가 있음
c. N:M
- 다대다
~ 여자고 남자고 바람피는 사람이 많음 > 폴리 아모리..?
- 그리는 순서
1. 엔티티 정의
2. 속성 정의
3. 식별자 선언
- 기본키
- 복합값, 다중값
// 논리적 모델링
- 개념적 모델링에서 속성이 다중값 또는 복합값인 경우, 논리적 모델링에서는 별도의 테이블로 분리되어 관계를 형성해야 한다.★
- 그리는 방법
1. Entity
- 사각형
2. Attribute
- 엔티티 사각형 안에 표기
3. Relationship
- 선으로만 연결
- 관계차수 多
- 그리는 순서 : 1~3 반복 > 전문적으로 그리기
1. 엔티티 정의
2. 속성 정의
3. 식별자 선언
- 기본키
- 복합값, 다중값
// 물리적 모델링
- 오라클에 맞게 구체적으로
- 물리명(식별자) 생성 ~ name
- 자료형 ~ varchar
- 길이 ~ 30
- 도메인 ~ 2자~5자 이내의 한글
- 제약사항 생성
// 모델링 작업 > ERD(논리,물리) > [정규화] > 안정성 높고, 효율적 구조로 변경 > ERD
// 관계형 데이터베이스 시스템이 지향하는 데이터베이스 상태
1. 원자값을 가진다.
2. 최대한 null을 가지지 않는다.
3. 중복값을 가지지 않는다.
// 이상 현상
1. 삽입 이상, Insertion Anomaly
- 테이블에 데이터를 삽입할 때, 원하지 않는 데이터까지 같이 넣어야 하는 상황
2. 갱신 이상, pdate Anomaly
- 동일한 데이터가 2개 이상의 테이블에 동시에 존재할 때 원하지 않는 데이터까지 함께 수정해야 하는 상황
3. 삭제 이상, Deletion Anomaly
- 테이블의 데이터를 삭제할 때, 원하지 않는 데이터까지 같이 지워야 하는 상황
// 함수 종속, Functional Dependency
- 1개의 테이블 내 컬럼끼리의 관계 표현
1. 완전 함수 종속, Full Functional Dependency
2. 부분 함수 종속, Partial Functional Dependency
- 일부 컬럼이 복합키 일부에만 종속되는 현상
3. 이행 함수 종속, Transitive Functional Dependncy
- 컬럼이 기본키가 아닌 다른 키에 종속되는 현상
// 정규화
- 이상현상을 없애고, 관계형 데이터베이스 시스템이 지향하는 데이터베이스 상태로 만드는 작업
- 부분 함수 종속이나 이행 함수 종속을 모두 없애고, 모든 컬럼 관계를 완전 함수 종속으로 만드는 작업★★★★
- 비정규화 > 정규화
- 1NF, 2NF ... (Normal Form)
1. 제 1 정규화, 1NF
- 모든 컬럼(속성)은 원자값을 가진다.
- 다중값(여러 개로 분리 가능한 값)을 1개의 컬럼 안에 넣지 않는다.
- 다중값을 가지는 컬럼을 찾아 없애는 작업
2. 제 2 정규화, 2NF
- 기본키(PK)가 아닌 모든 나머지 컬럼은 기본키에 완전 함수 종속이어야 한다.
- 부분 함수 종속 제거
- 주로 복합키를 가지는 테이블에서 발견된다.
- 일부 컬럼이 복합키 일부에만 종속되는 현상을 제거하는 정규화
3. 제 3 정규화, 3NF
- 기본키(PK)가 아닌 모든 나머지 컬럼은 기본키에 완전 함수 종속이어야 한다.
- 이행 함수 종속 제거
- 컬럼이 기본키가 아닌 다른 키에 종속되는 현상을 제거하는 정규화
- PK는 수정될 가능성이 있는 도메인을 사용하면 안 된다.★★★★
// 역정규화
- 정규화된 결과를 다시 원래대로 되돌리는 작업
- 보통 2개 이상의 테이블을 1개의 테이블로 합치는 작업
- 수업중 사용 금지!
'데이터베이스(DB) > Oracle' 카테고리의 다른 글
[Oracle] PL/SQL (1) | 2023.03.27 |
---|---|
[Oracle] 복합키 (0) | 2023.03.24 |
[Oracle] 계층형 쿼리 (0) | 2023.03.23 |
[Oracle] Pseudo (0) | 2023.03.22 |
[Oracle]식별자 (0) | 2023.03.20 |