SQL study [21.08.12]
본문 바로가기
Data Base/Daily_study

SQL study [21.08.12]

by 조훈이 2021. 8. 13.

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)


오늘의 한 마디 : 되는만큼 보다 더 해보자.

728x90

'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

댓글