1. 데이터 모델링의 이해

참고 도서: 2022 유선배 SQL개발자 과외노트
참고 자료: Wikipedia, oracle.com, oracletutorial.com
** SQLD 자격 시험을 준비하는 분들께 도움이 되고자 정리한 내용을 올리고 있습니다.
** 암기가 필요한 부분은 계속 보면서 외워주세요.
** 실습 환경 구성이 어려운 분들은 아래 링크를 이용하세요.
Oracle Live SQL 👈 클릭
** 오류가 있다면 댓글 주세요!

1.1 데이터 모델의 이해

1.1.1 모델링이란?

🌎현실 세계에서 일어날 수 있는 다양한 현상에 대해서 일정한 🖊 표기법으로 표현한 모형이라고 할 수 있으며 이런 모형을 만들어가는 일이라고 할 수 있다.

1.1.2 모델링의 특징

  1. 추상화(Abstraction) : 현실 세계를 일정한 형식으로 표현하는 것이다.

  2. 단순화(Simplicity) : 🤔복잡한 현실 세계를 일정한 형식으로 단순하고 쉽게 표현하는 것이다.

  3. 명확화(Clarity) : 불분명함을 제거하고 명확하게 해석할 수 있도록 기술하는 것이다.

1.1.3 모델링의 세 가지 관점

  1. 데이터 관점 : 데이터들이 어떤 업무과 얽혀있는지, 데이터 간에 어떤 관계가 있는지 모델링하는 것이다.

  2. 프로세스 관점 : 업무가 실제로 처리하는 일과 앞으로 처리해야 할 일을 중심으로 모델링하는 것이다.

  3. 데이터와 프로세스의 상관 관점 : 프로세스의 흐름에 따라 데이터가 어떤 영향을 받는지 모델링하는 것이다.

1.1.4 모델링의 3단계

개념적 데이터 모델링 → 논리적 데이터 모델링 → 물리적 데이터 모델링

1.1.5 데이터의 독립성 (ANSI - SPARC) #외개내 논물

  • 3단계 스키마 구조

    1. 외부 스키마 : 🧍‍♂️사용자의 관점, 각 사용자가 보는 스키마를 정의한다.

    2. 개념 스키마 : 통합된 관점, 모든 사용자가 보는 스키마를 통합하여 전체 DB를 나타낸다.

    3. 내부 스키마 : 👩‍🔬물리적 관점, 실질적인 데이터의 저장 구조 및 컬럼, 인덱스 등이 포함된다.

  • 3단계 스키마 구조가 보장하는 독립성

    1. 논리적 독립성 : 개념 스키마 변경에도 외부 스키마는 영향받지 않는다.

    2. 물리적 독립성 : 내부 스키마 변경에도 외부/개념 스키마는 영향받지 않는다.

1.1.6 ERD

  • ERD 표기 방식 #피까유 (피터 챈, 까마귀, 유엠엘)

    • Peter Chan : 주로 🎓대학교에서 사용하는 표기법, 실무에서 사용하는 경우는 드물다.

    • IDEFIX : 실무에서 드물게 사용되며 ERWin에서 사용되는 모델이다.

    • IE/Crow’s Foot : 가장 많이 사용되는 모델이며 ERWin, ERStudio에서 사용되는 모델이다.

    • Min-Max/ISO : 각 엔터티의 참여도를 좀 더 상세하게 나타낸다.

    • UML : 소프트웨어 공학에서 주로 사용된다.

    • Case Method/Barker : Oracle에서 사용되는 모델이다.

  • ERD 작성 순서 #도배관-설명참여

    • 엔터티 출 → 엔터티 치 → 엔터티 간의 정 → 관계 기입 → 관계 여도 기입 → 관계의 필수/선택 부 기입

1.2 엔터티

1.2.1 엔터티란?

데이터베이스에서 식별이 가능한 객체라는 의미를 가지고 있다.

엔터티 : Table, 인스턴스 : Row, 속성 : Column

1.2.2 엔터티의 특성

  • 👨‍💻업무에서 사용하는 정보여야 한다.

  • 💍유니크함을 보장할 수 있는 식별자가 있어야 한다.

  • 2개 이상의 인스턴스를 가지고 있어야 한다.

  • 반드시 속성을 가지고 있어야 한다.

  • 다른 엔터티와 1개 이상의 👬관계를 가지고 있어야 한다.

1.2.3 엔터티의 분류

  • 유무형 엔터티

    • 유형 엔터티 : 🤖물리적 형태가 있다. e.g. 제품, 사원

    • 개념 엔터티 : 👻물리적 형태가 없다. e.g. 부서, 실적

    • 사건 엔터티 : 🕺행위에서 발생한다. e.g. 주문

  • 발생시점

    • 기본 엔터티 : 독립적으로 생성된다. 🐣자식 엔터티를 가질 수 있다. e.g. 상품

    • 중심 엔터티 : 기본 엔터티에서 파생된 엔터티다. 행위 엔터티를 생성한다. e.g. 주문

    • 행위 엔터티 : 2개 이상의 엔터티로부터 파생된다. e.g. 주문이력

1.2.4 엔터티 이름을 정의할 때 주의할 점

  • 👩‍💻업무에서 실제로 쓰이는 용어 사용

  • 한글은 약어를 생성하지 않고 영문은 대문자로 표기

  • 단수 명사로 표기하고 띄어쓰기는 하지 않음

  • 다른 엔터티와 의미상 중복될 수 없음

  • 해당 엔터티가 갖고 있는 데이터가 무엇인지 명확히 표현

1.3 속성

1.3.1 속성이란?

속성은 의미상 더 이상 ✂️쪼개지지 않는 단위이며 업무에 필요한 데이터로 구성된다.

1.3.2 속성값

  • 각각의 속성은 값을 가지며 인스턴스를 구체적으로 나타내주는 데이터이다.

  • 하나의 속성은 하나의 값만 가질 수 있다.

1.3.3 엔터티, 인스턴스, 속성, 속성값의 관계

  1. 한 개의 엔터티는 두 개 이상의 인스턴스를 갖는다.

  2. 한 개의 인스턴스는 두 개 이상의 속성을 갖는다.

  3. 한 개의 속성은 하나의 속성값만 가진다.

1.3.4 속성의 분류

  1. 특성에 따른 분류

    1. 기본속성 : 업무 프로세스에서 추출하여 바로 정의한 모든 속성이다. e.g. 사원이름: Theodore

    2. 설계속성 : 데이터 모델링을 위해서 새로 만들거나 변형한 속성이다. e.g. 부서번호: 001 (경영관리)

    3. 파생속성 : 다른 속성의 속성값을 계산하거나 다른 속성에 영향을 받아 발생하는 속성이다. e.g. 결제금액 (원가 - 할인 - 포인트 = 결제금액)

  2. 구성방식에 따른 분류

    1. 기본키(PK) : 엔터티의 인스턴스를 식별할 수 있는 속성이다.

    2. 외래키(FK) : 다른 엔터티의 속성에서 가져온 속성이다.

    3. 일반속성 : PK, FK를 제외한 모든 속성이다.

1.3.5 도메인

하나의 속성이 가질 수 있는 같은 타입의 값의 범위를 도메인이라고 한다.

1.4 관계

1.4.1 관계란?

엔터티는 서로 연관성이 있을 경우 관계를 맺을 수 있다. 어떤 연관성이 있는지 타입을 분류하여 존재 관계와 행위 관계로 나눌 수 있다. #존관행관

  • 존재 관계 : 👨‍💼A사원이 B팀에 소속되어 있기 때문에 형성된 관계처럼 존재 자체로 연관성이 있는 관계이다.

  • 행위 관계 : 고객과 주문처럼 특정한 행위에서 연관성이 생기는 관계이다.

1.4.2 표기법

  • 관계명 : 명확한 문장으로 표현하고 현재형이어야 한다.

    관계 표기법

  • 차수 : 관계에 참여하는 수 (1:1 / 1:M / N:M)

    관계 표기법

  • 관계선택사양 : 필수 또는 선택 여부

    관계 표기법

1.5 식별자

1.5.1 식별자란?

속성 중에서 각각의 인스턴스를 유일하게 식별 및 구별할 수 있는 속성을 의미한다. e.g. 👨‍🎓학번, 사번

1.5.2 주식별자(PK)

  • 유일성, 최소성, 불변성, 존재성을 만족하는 속성이다. 하나의 속성이 주식별자가 될 수도 있고 여러 개의 속성이 주식별자가 될 수도 있다.

    • 유일성 : 각 인스턴스를 💍유니크하게 만들어 준다.

    • 최소성 : 유일성을 보장하는 최소 개수의 속성이어야 한다.

    • 불변성 : 속성값이 되도록 변하지 않아야 한다.

    • 존재성 : NULL 값이 들어갈 수 없다.

1.5.3 분류

  • 대표성 여부

    • 주식별자 : 유일성, 최소성, 불변성, 존재성을 만족한다. 다른 엔터티와 관계를 맺는다. e.g. 주민번호, 부서번호, 사번

    • 보조식별자 : 인스턴스를 식별할 수 있지만 주식별자가 아니다. 다른 엔터티와 관계를 맺지 않는다. e.g. 사원 엔터티에서 주식별자는 주민번호보다 사번이 알맞음

  • 스스로 생성되었는지 여부

    • 내부식별자 : 엔터티 내부에서 스스로 생성된 식별자이다.

    • 외부식별자 : 다른 엔터티로부터 관계에 의해 온 식별자이다. 다른 엔터티와 연결고리 역할을 한다. e.g. FK를 의미함

  • 단일 속성의 여부

    • 단일식별자 : 하나의 속성으로 구성된 식별자이다.

    • 복합식별자 : 두 개 이상의 속성으로 구성된 식별자이다. (복합식별자의 경우 우선순위가 중요함)

  • 대체 여부

    • 원조식별자 : 업무에 의해 만들어지는 가공되지 않은 식별자이다.

    • 대리식별자(인조식별자) : 주식별자의 속성이 두 개 이상인 경우 속성들을 하나로 묶어서 사용하는 식별자이다. e.g. 복합식별자의 구성이 🤔복잡할 경우 생성

1.5.4 식별 관계 vs. 비식별 관계

  • 식별 관계 : 부모 엔터티의 식별자가 자식 엔터티의 주식별자가 되는 관계이다.

  • 비식별 관계 : 👨‍👩‍👦부모 엔터티의 식별자가 자식 엔터티의 외래키가 되는 관계이다.