2024 05 08 SQL [최종문법]

김필립·2024년 5월 8일

SQL

목록 보기
9/10

어제 새벽에 조금 잤지만 잠이 부족하다 / 피곤피곤 낫럭키비키 ❎
👶📗📘📙📚📖📃📂🤔🎷✍🍼🔒🔓🔏🔐💾🔑📃📜📄📑📰📂📁🍼🔒📌


기출 기본적인 설명

📂 옵티마이저 정렬 기법

  • Neste Loop join (중첩루프 조인)
    • 이중 반복문 (X : 카디날리티 프로덕트) [모든 데이터 비교]
      첫번째 테이블의 각행과 두번째 테이블의 각행을 모두 비교
    • 대용량 데이터를 가진 테이블에 부적합
    • 조건에 만족하는 행들을 뽑아냄 → 조건에 만족하는 행이 적은 경우 효율적
      → 선택도가 낮은 테이블 참조 유리
  • Sort MERGE Join (정렬 병합 조인)
    • 각 테이블을 정렬한 뒤 병합하여 수행
      → 초기 비용(돈과 시간) ↑
    • 동등조인시 효율적
  • 😏 " 언제 쓰이나요? "
    인덱스가 존재하지 않거나 특정 속성을 정렬키로 사용하고싶은 경우
    • 결과가 원하는 정렬방식으로 나와야 하는 경우 유리
  • HASH Join (자료구조 ,대용량에 적합)
    • 각 테이블을 해시테이블로 변경 [Key - Value]
      추가적인 저장공간 필요 (충분한 메모리가 X 매우 비효율)
    • 두개의 테이블 사용시 더 작은 테이블을 해시테이블로 변경 하는 것이 효율적
    • 대규모 데이터에 대해 효과적[OLAP]

  • OLAP ? (큰 범위의 데이터를 처리)
    • 엑세스 [접근]
  • OLTP ? (작은 범위의 데이터를 처리)
    • 트랜잭션[논리적인 작업의 최소 단위]

연습문제

  • 합쳐졌을때 B → C가 가능하다면 (B뒤에 무엇이와도 가능하다.)
    • 결합법칙이 발생함

최종 문법 정리

😤정규화(normalization)[NF]📌

📚 정규화의 개념

📚 정규화 과정

  • 시험문제 꿀팁 : 정규형은 3등급까지가 가장 많이 나온다.
  • STEP BY STEP [정규화 3등급을 만드려면 1~2등급 모두 거쳐야 한다.]

알아야할 키워드 📌

  • 제 1 정규화 → 제 1 정규형(Format)

  • 📃 비 정규형 [도메인 원자성 : 쪼개질 수 없다.[다중값 제거]
    1NF (제1 정규화) → 2NF (제2정규화) → 3NF(제3정규화) → BCNF → 4 NF → 5NF

  • 1NF → [부분 종속성제거] 2NF

    • 2NF → [이행 종속성 제거] 3NF
      3NF → [결정자 제거]BCNF
      BCNF → [다치종속제거] 4NF
      4NF → [조인속성제거]5NF
  • 부 이 결(정자) 다(치) 조(인) [1~5NF]


😤정규형

😤 제 1정규형

형과 화는 다름

→ 제 1 정규화 [1NF] -> 결과값 정규화

  • 속성값이 원자값을 받도록 분해시키는 행위

😤 제 2 정규형

  • A가 R를 모두 결정시킬 수 있을때 가능하다.
    → 릴레이션 R[제1 정규형]
    • 기본키에 완전 함수완전종속일때 제2정규형 발생
    • 하나의 속성으로 다른 모든 속성을 결정지을 수 있을때 함수완전종속 이라고함

📂 제 2정규형으로 변환

😤 제 3 정규형

→ 릴레이션 R이 제 2정규형

  • 키본키에 이행적 종속(non-transitive)
  • 학생번호가 수강료를 결정짓는 [중간에 강좌이름이 결정되는 것이 아님. 이행을 없앰]

😤 BCNF

  • 유일키가 아닌 결정자를 제거하는 것을 결정자 제거라고함
  • 릴레이션 R에서 함수 종속성 X→Y가 성립할때 모든결정자가 후보키일때

📂 BCNF 정규형 변환

📂손실분해가 나타남[분해시 손실이 발생하다]

  • 유일키로 쓸 수 있는 키가 사라짐 [결정자가 없어짐;;]

📂손실분해를 방지하기 위해 무손실 분해를 사용해야함

  • 두개의 릴레이션을 합쳤을때 만족한다면.[합집합]
  • 분해를 할때 유일키로 속성을 분해시켜야함.

📂이렇게 분해하게되면 창업전략이 4개나오게됨

  • 아무리 많이 해도 BCNF까지 함.[정규화의 범위정리]

😤 정규화의 기본 정리

제 1 정규화 (1NF) → 결과 : 제1 정규형

  • 모든 속성은 원자값을 가져야한다. 즉 , 하나의 속성에는 하나의 값만 저장
  • 😣 "이걸 왜 하는건가요?"
    • 제1정규화의 목표중복된 데이터를 제거,데이터의 일관성 유지를 위해

제 2 정규화 (2NF) → 결과 : 제2 정규형

  • 제 1정규형을 만족하면서 , 기본키가 아닌 모든 속성이 기본키에 종속
    부분적 종속 제거 → 완전 함수 종속을 만족(PK → R)
  • 제2정규화의 목표 : 불필요한 조인 방지 데이터의 중복 최소화

제 3 정규화 (3NF) → 결과 : 제 3 정규형

  • 제2 정규형을 만족하면서,이행적 종속 삭제
    기본키를 제외한 속성들은 서로 독립

BCNF → 결과 : 보이스코드

  • 제 3 정규화 과정을 보완,모든 결정자가 후보키여야 함(결정자 제거)
    학번 ㅣ 이름 ㅣ 학과번호 ㅣ 학과평균성적 [결정자가 두개임]
    결정자 제거 후

    [ BCNF 성립 ]

    학번 ㅣ 이름

    학과번호 ㅣ 학과평균성적

제 4 정규화(4NF) → 결과: 제 4정규형

  • 제3 정규형을 만족하면서 , 다치종속 제거
    • 😣 " 다치 종속이란? "
      학생은 다양한 과목을 수강할 수 있다. 하나의 속성이 여러값을 가지는 경우

제 5 정규화(5NF) → 결과: 제 5 정규형

  • 제 4정규형을 만족하면서 , 모든 조인 속성이 함수적 종속

정규화 핵심정리

😣 정규화 [데이터 모델과 성능]

🥰제 1 정규화

😏제 2 정규화

🙄제 3 정규화

😣BCNF

  • 후보키 또는 결정자 = BCNF

😥 정규화예제


연습문제 풀이 📗


📗정규화 연습(부동산 데이터베이스)


📗연습문제 풀이


📗기출문제 맛보기 풀이

  • 부분종속을 제거해야 2형이 만족되는데 주문,상품번호중에
    상품번호가 상품명을 부분종속이 가능하기때문에 2형이 만족되지 않는 것
  • 부분종속을 제거하기위해선 부분을 떼어내 다시 만들어야한다.
    • 부분종속이 이루어지는 관서번호이기에 먼저 제 1 정규화이다.

😣 논리 물리 관계정의

  • 개념 : 요구사항 분석 → 필요한 엔티티,관계,속성 정의

  • 논리 : 개념 모델의 결과를 바탕으로 실제 DB에 저장하기 적합한 형태로 변경
    데이터 무결성 , 제약조건.... , 정규화

  • 물리 : 논리적 모델을 기반으로,cpu등 성능을 고려하여 데이터 저장방식 결정[테이블 작성]


42번

  • 부모의 식별자를 자식의 일반속성으로 상속(참조)하면 식별관계
    부모의 식별자를 자식의 식별자에 포함하면 얘도 포함임 식별관계인데 비식별?
    자식은 아무것도 못함 부모가 없다면.

43번

  • 제1정규형 도메인의 원자성
  • 제 2정규형 완전 함수종속
  • 제 3정규형 결정자삭제[BCNF]

44번

  • 부분집합을 생각해보자
    • PK집하 [학번,과목코드]
      PK를 쪼갰을때 부분적으로 가르킬 수 있는 애가 있다면
      완전함수종속이 아님! 그렇기에 1차 정규 > 2차 정규화 대상

45번

  • 정답 : 1번 [두개를 가지고 있기때문에 원자성에 부합하지않음 1차정규화대상]

46번

  • 정답 3번

49번

profile
기억에 남는 사람입니다

0개의 댓글