## 정규화 과정 |
|
|
|
|
|
|
|
|
|
|
|
★ 참고사항 |
|
|
|
|
|
|
|
|
|
|
|
|
*데이터를 추출하는 명령어의 순서 |
|
|
|
|
|
|
|
|
|
|
- select 컬럼명, 컬럼명... -- ④ |
|
|
|
|
|
|
|
|
|
|
- from 테이블명 -- ① |
|
|
|
|
|
|
|
|
|
|
|
- where 조건절 -- ② |
|
|
|
|
|
|
|
|
|
|
|
- group by -- ③ |
|
|
|
|
|
|
|
|
|
|
|
- having 절 -- ⑤ |
|
|
|
|
|
|
|
|
|
|
|
- order by 절 -- ⑥ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- 열 (colum = field = attribute = property = 속성) |
|
|
|
|
|
|
|
|
|
- 행 (record = row = domain = tuple) |
|
|
|
|
|
|
|
|
|
|
- Table (entity = 개체) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
*desc emp (emp 테이블의 데이터 크기) |
|
|
|
|
|
|
|
|
|
COLUMN |
NULL? |
|
WIDTH |
|
KEY |
|
|
|
|
|
|
|
1. EMPNO |
NOT NULL |
NUMBER(4) |
P1 |
--> 숫자 4바이트 |
|
|
|
|
|
2. ENAME |
|
|
VARCHAR2(10) |
|
--> 문자열 10바이트 |
|
|
|
|
|
3. JOB |
|
|
|
VARCHAR2(9) |
|
|
|
|
|
|
|
|
4. MGR |
|
|
|
NUMBER(4) |
|
|
|
|
|
|
|
|
5. HIREDATE |
|
|
|
DATE |
|
|
|
|
|
|
|
|
|
6. SAL |
|
|
|
NUMBER(7,2) |
|
--> 7개의 바이트 중에 2개는 소수점으로 표시된다. (Ex : _ _ _ _ _ . _ _ ) |
|
7. COMM |
|
|
NUMBER(7,2) |
|
|
|
|
|
|
|
|
8. DEPTNO |
|
|
NUMBER(2) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
* RDBMS (Relation Date Base Management System) : Oracle, MS-SQL, My-SQL, Infomix…… -> 오라클도 RDBMS에 속한다. |
|
|
|
***** 설명시 참조되야할 예제는 교제를 참조하세요 ****** |
|
|
|
|
|
|
1) 정규화 과정 : 고유한 식별자를 가지는 모든 개체(테이블)에 대해 더 이상 분리할 수 없는 상태로 나누는 과정 |
|
|
|
|
- 장점 : 데이터량 줄어듬, 데이터 갱신속도 빠름 |
|
|
|
|
|
|
|
|
|
- 단점 : 조회시 여러 개체를 Join하여작업하는 어려움, 갱신시 여러 개체에 동시 반영하는 작업일 경우 명시적으로 트랜잭션 처리 |
|
|
- 정규화 과정의 필요성 : DB서버 성능의 최적화 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2) 제 1차 정규화 (1NF, First Normal Form) |
|
|
|
|
|
|
|
|
|
- 반복되는 속성들을 다른 개체로 나누어 분리 |
|
|
|
|
|
|
|
|
|
- 부모테이블의 식별자(Promary Key)는 자식테이블의 외부키(Foreign Key)로 전이된다. |
|
|
|
|
|
- 부모테이블에 존재하지 않는 값이 자식테이블의 외부키(Foreign Key)값으로 존재할 수 없다. |
|
|
|
|
|
* 식별자 (Primary Key) |
|
|
|
|
|
|
|
|
|
|
|
- 고유성을 지니고, Table에 1개만 존재한다. (P.K를 이루는 Colum의 수는 여러 개가 올 수 있다.) |
|
|
|
|
|
- Colum이 1개인 P.K를 Single P.K라 한다. |
|
|
|
|
|
|
|
|
|
- Colum이 2개 이상인 P.K를 Composite P.K라 한다. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3) 제 2차 정규화 (2NF, Second Normal Form) |
|
|
|
|
|
|
|
|
|
- 제 1차 정규화를 한 후, P.K를 이루는 Colum의 개수가 복합일 때 분리하는 정규화 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4) 제 3차 정규화 (3NF, Third Normal Form) |
|
|
|
|
|
|
|
|
|
- 식별자가 아닌 Colum이 식별자가 아닌 Colum에 의존적이면 분리하는 정규화 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5) 제 4차 정규화 (4NF, Fourth Nomarl Form) |
|
|
|
|
|
|
|
|
|
- M:M 관계를 1:M 관계로 분리하는 정규화 (부모테이블의 P.K는 자식 테이블의 F.K가 된다.) |
|
|
|
|
|
* 관계의 종류 |
|
|
|
|
|
|
|
|
|
|
|
|
① 1:1 관계 - 자주사용하는 Colum만 추출해서 새로운 Table(자식테이블) 생성 |
|
|
|
|
|
|
- 자식테이블의 값은 부모테이블에 항상 존재하여야 한다. (부모테이블의 P.K는 자식테이블의 F.K가 된다.) |
|
|
|
② 1:M 관계 - A라는 테이블의 하나의 행에 대하여 B라는 테이블의 값이 여러 개가 대응되는 관계 |
|
|
|
|
|
③ M:M 관계 - A라는 테이블의 하나의 행에 대하여 B라는 테이블의 값이 여러 개가 대응되고, |
|
|
|
|
|
B라는 테이블의 하나의 행에 대하여 A라는 테이블의 값이 여러 개가 대응되는 관계 -> A(1) : B(M) and B(1) : A(M) |
|
|
=> 논리적인 모델링에서는 존재하지만 실제 물리적인 DB에서는 존재하지 않는다. |
|
|
|
|
|