TIL(Web)-2020.12.07~08(데이터 모델링과 정규화)

BYEONGJUN KIM(JUN)·2020년 12월 8일
0

TIL(Web)

목록 보기
5/45

어제, 오늘(7일 8일)은 데이터베이스 구축을 위한 데이터모델링(Data Modeling)과 정규화(Normalization)를 학습하였습니다

Today I Learned

  • Data Modeling
  • Normalization

Data Modeling

  • 설계 : 계획을 도표화, 문서화 하는 것
    • 개념설계
    • 논리설계
    • 물리설계

Key의 종류

  • 기본키(Primary Key) : 후보키 중에서 특별히 선정된 주키(main key). 중복된 값을 가질 수 없다.
  • 후보키 : 테이블의 속성들 중에서 레코드를 유일하게 식별 할 수 있는 속성들의 부분집합. 기본키로 사용할 수 있는 속성들을 의미.
  • 대체키 : 후보키가 둘 이상일 때 기본키를 제외한 나머지 후보키
  • 슈퍼키 : 레코드를 식별 할 수 있는 두개 이상의 속성의 집합으로 구성된 키
  • 외래키 : 다른 테이블(부모)의 기본키를 참조하는 속성

개념적 데이터 모델링(개념설계)

  • 엔티티의 사이에서 일어나는 관계(액션)를 개념적으로 도표화 한다.
  • 관계 방식으로 1:1, 1:N, N:M 관계가 있다.
  • 관계 방식 판단 방법
    • 1:1 관계 : 두가지 엔티티가 서로 하나의 레코드끼리 관계를 가지는 경우
      ex) 주문 --- 주문서
    • 1:N 관계 : 엔티티 A는 엔티티 B의 여러개의 레코드와 대응하고, 엔티티 B는 엔티티 A의 레코드 한 개와 대응하는 관계
      ex) 회원 --- QnA(하나의 회원이 여러 개의 QnA를 남길 수 있음, 하나의 QnA는 한명의 회원만이 작성 할 수 있음)
    • N:M 관계 : 엔티티 A는 엔티티 B의 여러개의 레코드와 대응하고, 엔티티 B도 엔티티 A의 여러개의 레코드와 대응하는 관계
      ex) 회원 --- 숙소(하나의 회원이 여러 숙소에 예약 가능, 하나의 숙소도 여러 회원이 예약 할 수 있음)

논리적 데이터 모델링

  • 설계 tip
    • N:M 관계인 액션만 테이블을 가질 수 있다.
      ex) 회원 --- 예약(액션) --- 관계
      • 다대 다의 관계이므로 예약이라는 액션 엔티티는 별도의 테이블로 구성
    • 1:N 인 경우, 관계(액션)의 속성은 N쪽 개체의 속성으로 관계와 함께 관계+속성으로 들어간다
      ex) 업체 --- 등록(액션) --- 숙소
      • 업체와 숙소는 1:N 관계이므로 등록이라는 액션의 속성인 '일자'가 '등록일자'라는 이름으로 숙소의 속성으로 들어간다.
    • 1:N의 관계에서 1쪽이 부모이고, N쪽이 자식이 되는데 부모의 키가 자식의 Foreign Key로 들어가야한다.
      ex) 업체 --- 등록 --- 숙소
      • 업체의 기본키(Primary Key)가 숙소의 외래키로 들어간다.
    • N:M의 관계에서는 릴레이션 테이블이 생성 되는데, 이 테이블의 키를 잘 선택해야한다.
      • 양쪽 엔티티의 기본키들을 외래키로 받아서 두 개의 복합속성으로 키를 구성(복합키, 슈퍼키) - 식별관계
      • 새로운 키를 생성하여 사용 - 비식별관계

Normalization

  • 개념적 모델링의 산출물인 E-R 도표를 통해 논리적 테이블을 구성하고, 테이블에서 중복을 제거하여 무결성을 가질 수 있게 만드는 것
  • 제1 정규화
    • 테이블 하나의 컬럼이 하나의 값만 가질 수 있는 것
    • 여러개의 값을 가지는 컬럼은 따로 자식테이블로 생성하여 정규화 진행
  • 제2 정규화
    • 기본키 그룹에 부분함수 종속인 속성이 존재하면 안됨.
    • 기본키 그룹에 부분 함수 종속인 속성이 존재한다면 걔네 부모에게 돌려줘라 이것임.
  • 제3 정규화
    • 이행적 종속을 제거
    • 이행적 종속 : x(기본키) ---> y를 만족하고 y ---> z를 만족하여 x ---> z를 만족하는 관계
    • 쉽게 말하면 재사용 되는 데이터가 존재할 때를 말함.
      • 속성에 새것이 아닌 재사용되는 올드 버전이 들어와 있는것
    • 따로 부모 테이블로 만들고 그 부모테이블의 키를 참조하는 식으로 정규화 진행
  • 제4 정규화
    • 다대 다 관계에서는 관계를 액션 엔티티로 분류해라!

물리적 데이터모델링

  • 논리적 데이터모델링의 산출물을 실제 데이터베이스의 테이블로 작성하는 과정.
  • 정리된 테이블들의 컬럼데이터 타입 설정 및 제약조건 등을 설정해줌
  • 제약조건 설정
    • 도메인 제약조건 : 속성 제약조건(유효값)
      • not null, default, check
    • 엔티티 제약조건 : 레코드 제약조건
      • 속성이 올바른 값들로 이루어 졌더라도, 키가 중복해서 들어가는 등 레코드 단위로 제약조건을 만족시키지 못했다면 무결성 위배(레코드 식별 불가능)
      • primary key, unique
    • 릴레이션(관계) 무결성
      • 참조 무결성을 위한 제약조건으로서 외래키 제약조건을 걸어둠

 

어제부터 오늘까지 데이터 모델링과 테이블 생성까지 진행해 보았습니다.
처음으로 실제 데이터 모델링 + 정규화 + 테이블 생성을 해본터라 완벽하진 않았지만 최선을 다해 이해하고 테이블을 구성 해 보았습니다.
완성된 테이블들을 보니 어서 웹에 적용시켜보고싶은 욕심이 생깁니다!

profile
Web Backend 개발자

0개의 댓글

관련 채용 정보