본문 바로가기

DB

[개념_퀴즈] 1-2 데이터 모델과 SQL

괄호 빈칸으로 만들어 풀어볼 것

  •  정규화
    • 제1 정규형 : 모든 속성은 반드시 (     하나의     ) 값을 가져야 한다.
      • 중복속성 분리, 로우 단위(전화번호 속성의 한 행에 여러 번호), 컬럼 단위(같은 의미의 컬럼이 한 테이블에 여러개) 중복도 1차 정규화의 대상.
    • 제2 정규형 : 엔터티의 일반속성은 (     주식별자    ) 전체에 (       종속적      ) 이어야 한다.
      • 함수 종속성은 데이터들이 어떤 기준값에 의해 종속되는 현상. 기준값을 (     결정자      )라 하고 종속되는 값을 (     종속자     )라 한다.  식별자 전체가 아닌 일부에만 종속적일 때 (     부분종속     )라 한다.
    • 제3 정규형 : 엔터티의 (      일반속성      ) 간에는 서로 종속적이지 않는다.
    • 반정규화는 성능을 위해 (      데이터 중복     )을 허용. 조회 성능의 향상 대신 DML 성능이 저하 될 수 있으므로 역정규화 진행시엔 유념.
    • 반정규화 적용 모델이 성능 저하일 경우
      • 주문 - 배송 모델에서 배송 정보를 추적하기 위해 송장 번호를 주문 테이블로 반정규화 했을 경우, 주문 데이터 신규 갱신 시에는 해당 송장 번호 데이터가 존재 하지 않으므로, 추후 송장 번호 생성 이후에 불필요한 (.    갱신      )로직이 추가된다
    • 반정규화는 데이터 불일치로 인한 ( 정합성 문제 ) 뿐만 아니라 불필요한 ( 트랜잭션 )으로 인한 성능 문제를 만들어내기 때문에 그럼에도 진행해야 할 근거가 뒷받침 될 경우 진행한다.
  • 관계와 조인
    • 관계는 '상호 연관성이 있는 상태'로 부모의 식별자를 자식의 식별자에 포함하면 ( 식별관계 ), 자식의 일반 속성으로 상속하면 ( 비식별 관계 ) 
    • 상속된 속성을 매핑키로 활용해 데이터를 결합하는 것이 ( 조인 )
    • 자기 자신(엔터티)에게 관계가 발생하는 경우를 ( 계층형 데이터 모델 ) 라 하고, 이 때 일어나는 조인이 ( 셀프 조인 ) 이다.
    • 상호 배타적 관계일 경우 자식 엔터티에는 두개(혹은 여러개의 배타적)의 부모 엔터티중  ( 하나의 값 )만 상속 될 수 있다.
  • 모델이 표현하는 트랜잭션의 이해
    • 필수 관계인 두 엔터티에 부모 엔터티 Insert작업이 일어난다면, 자식에 대한 Insert도 같은 ( 트랜잭션 ) 범위로 묶여있는지, 즉 ( 원자성 )이 보장 되는지 확인 필요
      •  예를 들어 주문 엔터티와 주문 상세 엔터티는 한번에 입력되어야 하는 엔터티이므로 한꺼번에 commit 진행.
  • Null 속성
    • Null 값의 연산은 언제나 ( Null ) 이다.
      • Null은 ( 아직 값이 존재하지 않는 것 ) 으로 연산이 불가능
      • Null 값으로 가능한 연산은 ( Is Null, Is Not Null ) 뿐
    • 집계함수는 Null 값을 ( 제외하고 ) 처리한다. 
  • 본질 식별자 vs 인조 식별자
    • 본질 식별자 : ( 업무 ) 에 의해 만들어진 식별자
    • 인조 식별자 : ( 업무 )적으로 만들어 지지는 않지만, 본질 식별자가 복잡한 구성을 갖고 있으므로, 인위적으로 만든 식별자 
    • 인조식별자로 개발의 편의성은 증대 될 수 있지만, ( 중복 데이터 )로 인한 품질 문제와 불필요한 ( 인덱스 )를 생성하게 되는 문제 발생
      • 인조 식별자 사용시 기본적인 액세스 패턴에 대해(자주 사용하는 where 절 조건들) 인덱스를 생성해 두어야함
      • 인덱스 추가 생성 시 ( 용량 )과 ( DML 성능 )에 영향

'DB' 카테고리의 다른 글

[개념정리] MSSQL VS ORACLE  (0) 2022.02.24
[개념_퀴즈] 1-1 데이터 모델링의 이해  (0) 2021.03.03
[개념정리] NoSql vs Sql  (0) 2020.09.03
[코드처리] Update Table Row By Row  (0) 2020.02.06
[개념정리] ISNULL vs NULLIF  (0) 2020.02.06