SQL study [21.08.12]
수정 이상
- 중복되는 데이터 중 일부만 갱신되어 정보에 모순이 발생하는 것 이다.
- 100학번의 홍길동 학생이 개명을 했지만 100학번 운영체제 key에 해당되는 data는 이름이 변경이 되었지만, 100학번 객체지향프로그래밍 key에 해당되는 data는 이름이 변경되지 않았다.
삽입 이상
- 불필요한 정보를 함께 저장하지 않는다.
- 어떠한 정보를 저장하는 것이 불가능하기에 원하지 않는 정보를 강제 삽입해야 하는 것
- 기본 키에는 NULL값을 저장할 수 없다. 따라서 최자바 학생을 수강 릴레이션에 삽입하고자 한다면 가상의 과목명이라도 임시로 삽입해야 한다.
삭제 이상
- 어떠한 정보를 삭제하고자 하지만 유용한 정보를 전부 삭제하게 되는 경우
- 운영체제라는 과목을 지우려고 하였으나, 곽민아라는 학생의 데이터가 같이 지워지게 된다.
정규화
- Table 을 잘게 쪼개는 것 이라고 할 수 있다. 갱신 이상이 생기지 않도록 불필요한 데이터가 중복되어 저장되지 않게 방지한다.
-> 바람직한 릴레이션 스키마로 만든다.
* 목적
1. 어떤 관계라도 DB 내에서 표현이 가능하도록 만드는 것
2. 관계에서 바람직하지 않은 삽입, 삭제, 갱신 이상이 발생하지 않도록 함
3. 새로운 형태의 데이터 삽입시 관계를 재구성할 필요성을 줄임
4. 보다 간단한 관계 연산에 기초하여 검색을 보다 효율적으로 할 수 있음
제 1 정규화 (1NF)
제 2 정규형 (2NF)
- 완전 함수 종속으로 모든 column을 구성하는 것. 부분함수의 종속성을 제거해서 해결.
- 성적은 기본키인 {학번, 과목명}에 의해 이름은 {학번}에 의해 완전 함수 종속으로 구성이 되게 된다.
제 3 정규형 (3NF)
- SQLD 에 많이 출제가 되지는 않는다!
- 이행적 함수 종속성을 제거한다.
결정자 (Determinant)
- 주어진 릴레이션에서 다른 속성(또는 속성들의 집합)을 고유하게 결정하는 하나 이상의 속성
-> C column 가 A column 의 값에 의해 영향이 받는 경우이다.
-> 위 수강 릴레이션에서는 두 개의 결정자를 찾아볼 수 있다.
첫 번째 결정자 : {학번} -> 이름 # 부분 함수 종속 (기본 key 의 일부에 의해서만 결정이 되는 경우)
두 번째 결정자 : {학번, 과목명} -> 성적 # 완전 함수 종속 (기본 key 들에 의해 결정이 되는 경우)
- 완전 함수 종속으로 이루어진 테이블이 정규화가 더 잘 된 테이블이라고 할 수 있다.
엔터티 (Entity) 정리 : 2021.08.12 - [MySQL/SQL] - 엔터티 (Entity)
오늘의 한 마디 : 되는만큼 보다 더 해보자.
'Data Base > Daily_study' 카테고리의 다른 글
SQL study [21.08.16] (0) | 2021.08.17 |
---|---|
SQL study [21.08.15] (0) | 2021.08.15 |
SQL study [21.08.14] (0) | 2021.08.15 |
SQL study [21.08.13] (0) | 2021.08.14 |
SQL study [21.08.11] (0) | 2021.08.11 |
댓글