DB Modeling (Database Modeling)

Joy🌱·2023년 2월 2일
0

🐚 Oracle

목록 보기
11/11
post-thumbnail

💁‍♀️ DB Modeling이란,
주어진 개념으로부터 논리적인 데이터 모델을 구성하는 작업


👀 DB Modeling 개요

👉 릴레이션

  • 속성(attribute) = 필드(field) = 열(column) = 세로
  • 튜플(tuple) = 레코드(record) = 행(row) = 가로

👉 무결성

💁‍♀️ 무결성이란,
데이터 값이 정확한 상태를 의미 (완전성과 정확성)

  • 정합성은 데이터가 서로 모순이 없이 일관되게 일치해야 함을 의미하는 반면 무결성은 데이터가 완전하고 정확해야 한다는 의미

👀 ERD

👉 엔터티(Entity)

💁‍♀️ 엔터티(Entity)란,
업무의 관심 대상이 되는 정보를 갖고 있거나 그에 대한 정보를 알아야 하는 유, 무형의 사물(개체)를 의미

[1] 엔터티의 도출 원칙

  • 두 개 이상의 인스턴스를 소유
  • 데이터의 정체성이 분명해야함
  • 데이터 종속성에 의해서 하나의 주제만을 관리하는 정의가 명확한 모델이어야함
  • 엔터티의 인스턴스를 식별할 수 있는 식별자(Identifier)가 존재해야함
  • 동일한 성격의 데이터는 유일해야함
  • 엔터티 명은 관리하고자 하는 데이터의 성격(주제)을 가장 잘 표현하는 이름으로 함

👉 식별자(Identifier)

[1] 주식별자(Primary Identifier)

💁‍ 엔터티에 소속된 인스턴스들을 구별하는 기준 역할을 하는 속성

📍 주식별자의 특징

  • 유일성 : 주식별자에 의해 엔티티 내의 모든 인스턴스들이 유일하게 구분되어야함 (중복 X)
  • 최소성 : 주식별자를 구성하는 속성의 수는 유일성을 만족하는 최소의 수가 되어야함
  • 불변성 : 주식별자가 한번 특정 엔터티에 지정되면 그 식별자의 값은 변하지 않아야함
  • 존재성 : 주식별자가 지정되면 반드시 데이터 값이 존재해야함 (NULL값 허용 X)

[2] 외래식별자(Foreign Identifier)

  • 관계가 있는 두 엔터티를 부모, 자식 엔터티로 구분한 후 부모의 주식별자와 공통 속성이 자식에게도 존재하면 해당 속성을 외래식별자로 지정
  • 자식 엔터티에 부모 엔터티 주식별자 공통 속성이 없을 경우 자식에게 속성을 추가한 후 외래식별자로 지정

👉 관계(Relationship)

💁‍♀️ 관계(Relationship)란,
두 개 이상의 엔터티 간에 존재하는 연관성을 나타냄

  • 하위(자식) 엔터티의 속성으로 관리될 때만 관계를 표현
  • 관계에는 종속관계참조관계가 존재
    • 종속관계 : 부모 엔터티와 자식 엔터티 간의 관계로 부모 엔터티가 존재해야 자식 엔터티가 존재. 반대로 말하면 부모 엔터티 없이 관계를 삭제하고 자식 엔터티만 존재할 수 없음.
    • 참조관계 : 엔터티간에 연관성이 존재하긴 하지만 다른 엔터티가 없다고 존재할 수 없는 관계는 아님. 단순히 참조 데이터를 관리하므로 관계를 삭제해도 한 속성에 대한 연관성만 문제가 되고 하위 엔티티 존재에는 지장 X.

[1] 관계의 구성요소

✅ 카디널리티(Cardinality)

💁‍ 카디널리티를 통해 관계가 있는 두 엔터티는 일대일(1:1), 일대다(1:M), 다대다(M:M) 관계를 나타냄

✅ 옵셔널리티(Optionality)

💁‍ 상위(부모) 엔터티와 하위(자식)엔터티가 서로 연관되는 값이 반드시 존재해야 하는지 존재하지 않아도 되는지를 의미

  • Mandatory : 서로 연관되는 값이 반드시 존재 (최소 1개 이상)
  • Optional : 서로 연관되는 값이 반드시 존재하지 않아도 됨 (최소 0개 이상)

[2] 특별한 관계의 종류

✅ 일대일 관계(One-to-One Relationship)

상위(부모)엔터티의 하나의 인스턴스가 하위(자식)엔터티의 하나의 인스턴스와 연관되는 관계

✅ 배타 관계(Exclusive Relationship)

두 개 이상의 상위(부모) 엔터티와 관계를 가지며 상호 배타적(하위(자식)엔터티의 하나의 인스턴스가 한번에 하나의 부모 엔터티와 관계를 가지게 됨)일 때의 관계

✅ 재귀 관계(Recursive Relationship)

하나의 엔터티에서 인스턴스가 같은 엔터티의 다른 인스턴스와 관계
(JOIN 해야 할 엔터티가 늘어나는 것을 방지)


👀 물리 모델 TEST

[1] 완성된 논리 모델 준비

[2] 물리 탭에서 테이블 편집 (테이블명, 컬럼명, 자료형, 길이 설정)

[3] 엔터티를 선택한 상태에서 스크립트 작성 클릭

[4] 스크립트 생성 클릭시, 스크립트 자동 생성된 것 확인 가능


profile
Tiny little habits make me

0개의 댓글