DB Modeling

조상원·2025년 6월 30일

DB modeling

목록 보기
2/7

데이터 모델링

  • 업무보다는 데이터 중심 모델링 진행 방법
  • 개념적 모델링, 논리적 모델링, 물리적 모델링

개념적 모델링

  • 요구 사항 이후 요구 사항을 보고 ERD를 생성
  • ERD를 생성하는 단계
  • Entity Relationship Diagram
  • ERD-Cloud : IE 표기법

엔티티

  • 유형 엔티티 : 물리적 형태가 있음. EX) 고객, 사원, 상품
  • 무형 엔티티 : 물리적 형태 없이 개념만 존재. EX) 생산, 계획, 부서 조직, 구매 내역
  • 문서 엔티티 : 거래 명세서, 입출금 전표

속성

  • 엔티티가 가지는 데이터/특징
  • 학생이라는 엔티티는 학번, 이름, 나이 ,성별이라는 속성을 가짐
  • 키 모양을 가진 것은 식별자

주식별자

  • 엔티티의 데이터들을 서로 구분 해 줄 수 있는 속성
  • 학생 엔티티의 학번
  • 중복 X. 유일성 가짐
  • 여러개의 그룹핑한 결과일수도 있음.
  • 변경 불가능
  • 값을 반드시 가지고 있어야됨
  • 나중에 primary key가 됨

보조식별자

  • 주식별자를 대체할 수 있는 또 다른 속성
  • 학생 엔티티의 이메일이나 주민번호
  • unique 제약조건이 걸려있는 열로 바뀜
  • unique key

외래식별자

  • 외부 식별자
  • 추가 or 상속되는 식별자
  • 분홍색 키 모양
  • 외래키
  • 엔티티의 관계를 연결

관계(Relationship)

일대일 관계

  • 1:1 관계
  • 두 엔티티가 1건:1건의 관계
  • 상품 - 상품상세 엔티티 관계

일대다 관계

  • 학생 - 학과 엔티티 관계
  • 관계형 데이터 베이스에서 가장 보편적인 관계

다대다 관계

  • 관계형 데이터 베이스에서 물리적으로 표현할 방법 X
  • 키의 중복 등 때문에 직접 연결 불가
  • 가운데에 교차 엔티티를 두고 일대다, 다대일 관계로 서로 연결
  • 불특정 관계
  • 학생 - 수강과목 - 과목

식별/비식별 관계

  • 식별 관계 : 부모 엔티티의 주 식별자를 자식 엔티티의 주 식별자, 외래 식별자로 사용하는 관계. 부모 엔티티에 반드시 데이터가 존재해야함. 실선
  • 비식별 관계 :부모 엔티티의 주 식별자를 자식 엔티티의 외래 식별자로만 사용. 점선

논리적 모델링

  • 개념적 모델링 과정에서 추상화된 데이터를 구체화
  • 속성을 테이블화/상세화

이상

  • 데이터 모델링 과정에서의 오류
  • 삽입 이상/갱신 이상/ 삭제 이상

<삽입 이상>

  • 주문에 대한 정보를 입력 하고 싶지만, 제품에 대한 정보도 입력이 됨
  • 중복데이터가 들어가거나 Null이 생김
  • 데이터 삽입 시 발생하는 문제
  • 무결성 위배

<갱신 이상>

  • 팔걸이 의자의 단가를 수정하고 싶을 때 모두 바꿔줘야함
  • 불필요한 변경
  • 동일 제품을 중복되어 있는 수만큼 수정해야함

<삭제 이상>

  • 주문 정보만 삭제하고 싶은데, 제품에 대한 정보도 같이 삭제됨

정규화

  • 제 1~5 정규화.
  • 이전 정규화를 만족한 상태로 다음 정규화 진행 가능
  • 상황에 따라서는 정규화를 진행하지 않는 것이 효율적일 수도 있음.

<제 1 정규화>

  • 하나의 속성이 하나의 값을 가지도록
  • 각각의 속성이 하나의 값만 가지도록 만드는 것
  • 원자성

<제 2 정규화>

  • 학번, 강의 이름을 하나의 주식별자로 만든거임(주 식별자가 복합 식별자)
  • 나머지 속성들이 주식별자에 모두 종속적인지 확인하는 것
  • 학번 - 강의실은 관련이 없음. 종속적 X
  • 이를 분리하는 것
  • 하나의 엔티티가 두개의 엔티티로 나누어짐

<제 3 정규화>

  • 주 식별자에게 종속적이지 않고 다른 속성에 종속적인 속성을 분리
  • 등급은 고객번호에 종속적. But 할인율은 고객번호에 종속적 X
  • 이를 분리하는 것.

물리적 모델링

  • 사용하는 실제 데이터베이스에 맞도록 구현하는 단계

반정규화

  • 정규화의 반대
  • 두 개의 테이블이 있을 때, 두 테이블을 무조건적으로 분리하는 것보다 합치는 것이 성능이 더 좋을 수 있다.

0개의 댓글