[Computer Science] Database(Normalization , RDBMS, Key)

Arkiee·2022년 10월 26일
0

Computer Science

목록 보기
6/9
post-thumbnail
post-custom-banner

정규화(Normalization)란?

  • 정규화는 종속적으로 설계된 관계형 스키마가 하나의 릴레이션에 표현될 수 있도록 분해하는 과정입니다.

  • 데이터의 중복성을 최소화하고 일관성을 보장하기 위한 과정입니다.

  • 정규화를 거치지 않으면 이상(Anormaly) 문제가 발생합니다.

  • 총 6단계가 있지만 대체로 1~3 정규화 과정을 거칩니다.

※ 이상현상이란?
정규화되지 않은 릴레이션에서 예기치 않게 발생하는 문제로 삽입이상, 갱신이상, 삭제이상이 있습니다.

  • 삽입이상: 원하지 않는 값이 삽입
  • 삭제이상: 원하지 않는 값이 연쇄 삭제
  • 갱신이상: 일부 데이터만 변경

정규화 과정

  • 제 1정규형: 정규화되지 않은 릴레이션에서 도메일을 원자값으로 쪼갬
  • 제 2정규형: 제 1정규형에서 부분 함수 종속을 제거
  • 제 3정규형: 이행적 함수 종속을 제거
  • BCNF : 결정자가 후보키가 아닌 함수 종속 제거
  • 제 4정규형: 다치 종속 제거
  • 제 5정규형: 후보키를 통하지 않는 조인 종속의 제거

※ 함수적 종속이란?
함수적 종속은 어떤 릴레이션에서 속성들의 부분 집합을 X,Y라 할 때, 특정 튜플에서 X의 값이 Y의 값을 함수적으로 결정한다면 Y가 X에 함수적으로 종속되었다고 합니다.

모든 테이블을 정규화하는 것이 좋은건가?

  • 아닙니다. 항상 같이 사용되는 칼럼값이 정규화로 쪼개진다면 두 테이블을 항상 join하여 사용해야 합니다. 이 과정은 오히려 연산 횟수가 증가해 성능의 저하가 발생할 수 있어 역정규화(반정규화)를 실행합니다.

    • 반정규화란?
      • 정규화된 데이터 모델을 통합, 중복, 분리하는 과정입니다.
      • 의도적으로 정규화 원칙을 위배하는 방법
      • 사용예시
        • 조인 많을 때: 테이블 통합
        • 레코드별 사용빈도 차이가 클 때: 테이블 수평분할
        • 테이블에 속성이 많을 때: 테이블 수직분할
        • 특정 데이터 자주 처리할 때: 중복 테이블 추가
        • 접근 경로가 복잡할 때: 중복속성 추가
      • 주의할 점
        • 데이터의 무결성이 깨질 수 있다.

관계형 데이터베이스 관리 시스템(RDBMS)이란?

관계형 데이터베이스를 만들고 업데이트하고 관리하는 데 사용하는 프로그램입니다. 잘 알려진 RDBMS의 예로는 MySQL, PostgreSQL, MariaDB, Microsoft SQL Server, Oracle Database가 있습니다.

관계형 데이터베이스 특징

  • 데이터의 분류, 정렬, 탐색속도가 빠르다
  • 오랫동안 사용된 만큼 신뢰성이 높고, 어떤 상황에서도 데이터의 무결성을 보장해 준다.
    • 무결성 제약: 테이블에 부적절한 자료가 입력되는 것을 방지하기 위해 테이블을 생성할 때 각 컬럼에 대해서 정의하는 여러가지 규칙을 나타낸다. 개체, 참조, 도메인 등의 제약조건이 존재한다.
  • 기존에 작성된 스키마를 수정하기가 어렵다.

관계형 데이터베이스 구조

  • 속성(Attribute): 릴레이션을 구성하는 각각의 열
    • 차수(Degree): 속성의 수
  • 튜플(Tuple): 릴레이션을 구성하는 각각의 행
    • 카디널리티(Cardinality): 튜플의 수
  • 도메인(Domain): 하나의 속성이 취할 수 있는 같은 원자값들의 집합

키(Key)란?

검색, 정렬 시 Tuple을 구분할 수 있는 기준이 되는 Attribute

종류

  1. 후보키: Candidate Key

    • Tuple을 유일하게 식벽하기 위해 사용하는 속성들의 부분 집합이다. 기본키로 사용할 수 있다.
    • 2가지 조건을 만족해야 한다.
      • 유일성: 하나의 Key로 하나의 Tuple을 유일하게 식별할 수 있어야 함
      • 최소성: 꼭 필요한 속성으로만 구성되어야 함
  2. 기본키: Primary Key

    • 후보키에서 선택된 1개의 키, 유일성과 최소성을 만족하며 null값을 가질 수 없다.(개체 무결성)
    • 특정 튜플을 유일하게 구별할 수 있는 속성임
  3. 외래키: Foreign Key

    • 릴레이션을 참조하기 위한 키, null값 또는 참조하는 릴레이션의 PK값이어야 한다.(참조 무결성)
  4. 대체키: Alternate Key

    • 후보키 중 기본키를 제외한 나머지 Key를 말한다.
  5. 슈퍼키: Super Key

    • 유일성을 만족하며 2개 이상의 속성으로 이뤄진 키
    • 유일성은 만족하지만, 최소성은 만족하지 않는다.


profile
꿈을 꾸는 개발자
post-custom-banner

0개의 댓글