1. 정규화
관계형 데이터베이스의 설계에서 중복을 최소화하게 데이터를 구조화하는 프로세스를 정규화(Normalization)라고 한다. 데이터베이스 정규화의 목표는 이상이 있는 관계를 재구성하여 작고 잘 조직된 관계를 생성하는 것에 있다. 일반적으로 정규화란 크고, 제대로 조직되지 않은 테이블들과 관계들을 작고 잘 조직된 테이블과 관계들로 나누는 것을 포함한다. 정규화의 목적은 하나의 테이블에서의 데이터의 삽입, 삭제, 변경이 정의된 관계들로 인하여 데이터베이스의 나머지 부분들로 전파되게 하는 것이다. (출처:wikipedia) |
entity(엔티티) : emp테이블과 같은 '정보의 단위'를 가리킨다.
테이블 안에는 여러 컬럼이 있고 컬럼 = 속성attribute
테이블 안에는 여러 속성이 있고 속성attribute = 컬럼
ERM : 개체-관계 모델링(Entity-Relationship Modelling)
ERD : 개체-관계 다이어그램(Entity-Relationship Diagram)
2. 키
키 종류 | 설명 |
슈퍼키 | 어떤 테이블의 속성의 조합 |
후보키 |
슈퍼키 중에서 최소성까지 만족하는 키 유일성 + 최소성 |
기본키 |
후보키 중에서 하나를 선택한 키 null값과 중복값 불가능 |
대체키 | 후보키 중에서 기본키로 선택되지 못한 키 |
외래키 |
다른 테이블의 기본키를 참조하는 키 null값과 중복값 허용 |
3. 제1정규형(1NF)
여러 값을 가진 컬럼이 존재할 수 없다. 즉, 반복되는 그룹이 존재하지않음. 각 행과 열에는 오직 한 값만 존재함. 사용 하고싶으면 테이블로 분리해서 사용해야 한다.
제1정규형은 다음 표준을 요구한다. (출처:wikipedia)
|
4. 제2정규형(2NF)
제 1 정규형(1NF)인 테이블이 제2 정규형을 충족시키는 필요충분조건은 다음과 같다: 후보 키 K와 K에 속하지 않는 속성 A가 있을 때, A를 결정하기 위해 K의 일부가 아닌 K 전체를 참조해야만 하는 경우 1NF 테이블은 2NF이다. |
모든 키가 아닌 컬럼은 기본키 전체에 의존적이어야한다. 기본키의 일부분에 의존적이어선 안된다. 같은 데이터를 2개의 테이블로 분리하여 표현하는것
5. 제3정규형(3NF)
제3 정규형이란 데이터베이스 정규화의 세 번째 단계로, 다음 조건을 만족해야 한다: |
키가 아닌 컬럼은 다른 키가 아닌 컬럼에 의존적이어선 안된다(=다른 키에 의존적이면 안됨)
예를들어 아래와 같은 경우, 우승자와 우승자 생년 월일은 다른 키(대회명, 개최일시)와는 연관없이 우승자의 키에 대해서만 의존적이다.
대회 명 | 개최일시 | 우승자 | 우승자 생년월일 |
롤드컵 | 2017년 1월2일 | 최솔이 | 1991년 5월 15일 |
LCK | 2018년 2월2일 | 김혜미 | 2000년 3월 3일 |
LPL | 2019년 3월3일 | 김도윤 | 1987년 8월 8일 |
6. 비정규화
경우에 따라 나누어 놓은 테이블을 성능 향상의 목적으로 다시 합쳐야 할 경우 나누어 놓은 테이블들을 함께 연결해서 사용하려면 이 join 라는 방법을 사용하는데 이것을 비정규화라 한다.
다대다관계를 1대다, 다대1로 바꾸어주자는 의미.
'2019 > ORACLE' 카테고리의 다른 글
SQL 서브쿼리 (0) | 2019.11.20 |
---|---|
SQL 문제 및 문제풀이 (~JOIN) (2) | 2019.11.19 |
SQL JOIN equi / non-equi / self / outer / inner (0) | 2019.11.18 |
SQL group by (문제) (0) | 2019.11.18 |
SQL group by having (0) | 2019.11.18 |