[포스코X코딩온 스마트팩토리 개발자 과정 1기] Database / SQL 2일차

맨 땅에 개발자 되기·2023년 3월 2일

데이터 모델링 ( Data modeling )

복잡한 현실 세계 데이터를 단순화하여 데이터베이스로 표현하기 위한 작업 ( 지반 설계 )

( 단순화 → 데이터들이 어떤 속성이 있고, 어떤 관계를 가지고 있나 )

  • 추상화 : 일정한 형식에 맞춰 간략하게 표현
  • 단순화 : 누구나 쉽게 이해할 수 있도록 제한된 표기법이나 언어 사용
  • 명확화 : 명확하게 의미가 해석되어져야 함

데이터 모델링 종류 / 단계

1단계 개념적 데이터 모델링 ( =정보 모델링 ) : 전체적인 뼈대를 만듦 ( 개체들간 관계를 정의해서 ER 다이어그램 만드는 과정 )

2단계 논리적 데이터 모델링 : 정규화 작업 ( 데이터 중복 최소화 작업 )

3단계 물리적 데이터 모델링 : 물리적 구조를 정의 → 실제 데이터베이스 작업

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

요구사항으로부터 얻어낸 정보를

개체( Entity ) : 단독으로 존재하는 객체,

속성( Attribute ) : 개체의 특성을 나타내는 속성,

관계( Relation ) : 개체 간 관계,

로 기술하는 모델

** 객체 VS 개체
객체란 어떤 대상 그 자체
개체란 그 객체 가지고 있는 특성들
그 특성들이 데이터베이스에서 속성으로 관계로 나눠짐

개체 ( Entity )

데이터를 저장하기 원하는 실생활에서의 대상(객체)

ex) 고객정보 - “홍길동” “성춘향”은 Entity

개체 타입 ( Entity Type ) → 직사각형 사용, 명사형

공통적인 특성을 공유하는 Entity의 집합

ex) 고객정보 - “홍길동” “성춘향”은 고객이니까 Entity Type은 Customer

EX) 도서 ← 개체 타입 ( Entity Type )

책제목1 ← 개체 ( Entity )

책제목2 ← 개체 ( Entity )

책제목3 ← 개체 ( Entity )

EX) 전공 ← 개체 타입 ( Entity Type )

기계공학 ← 개체 ( Entity )

전자공학 ← 개체 ( Entity )

컴퓨터공학 ← 개체 ( Entity )


관계 ( Relation )

개체 사이의 연관성을 나타냄

ex) 학생이 교수의 수업을 수강한다. → 개체 : 학생, 교수 / 관계 : 수강

관계 타입 ( Relation Type ) → 마름모 사용, 동사형

개체 타입 간의 관계를 정의

ex) 관계 타입 : 수강하다

EX) 신발 —— 주문하다 —— 고객

나이키 1번주문 홍길동

아디다스 2번주문 성춘향


속성 ( Attribute ) → 타원형, 실선 사용, 명사형

개체가 갖는 성질

ex) Entity : 학생 → Attribute : 학번, 이름, 전공 ….

키 속성 ( Key Attribute ) → 밑줄 표시

다른 객체들과 중복되지 않는 고융한 값을 갖는 Attribute

ex) Entity : 학생 → Attribute : 학번 ( 이름, 전공은 중복가능 )

단순속성 ( Simple Attribute ) : 더 이상 나눌 수 없는 속성

ex) Entity : 학생 → Attribute : 이름 → 성 / 이름

복합속성 ( Composite Attribute ) : 독립적인 의미를 갖도록 나눌 수 있는 속성

ex) Entity : 학생 → Attribute : 이름

단일값 속성 ( Singled-valued Attribute ) : 한 값만 갖는 속성

ex) Entity : 학생 → Attribute : 전공, 학번…. 다중값 속성 빼고

다중값 속성 ( Multi-valued Attriute ) : 여러 값을 갖는 속성 → 타원형 두개사용

ex) Entity : 학생 → Attribute : 전공 → 복수 전공

실습01 ER Model 추출하기

Entity : 고객, 책, 도서회사

Entity Type : 도서

Relation : 구매

Relation Type : 구매하다

Attribute :

고객 →

이름 : 단일값 속성

전화번호 : 단일값 속성

고객ID(고유값) : 키속성

주소 (도시, 우편번호) : 복합속성 ( 단순속성 )

책 →

ISBN(고유값) : 키속성

가격 : 단일값 속성

제목 : 단일값 속성

작가(여러명) : 다중값 속성

ER Model 제약조건

여러속성( Attribute )의 집합으로 표현된 개체( Entity ) 간 관계( Relation )를 관계성으로 표현

두 가지 제약조건을 통해 표현됨

  1. 카디널리티 제약조건 ( Cardinality Constraint )

    하나의 Entity와 관계를 맺을 수 있는 Entity의 개수

    • 1 : 1 관계 ( one to one relation )
    • 1 : N, N : 1 관계 ( one to many, many to one relation )

    • N : M 관계 ( many to many relation )

실습02 카디널리티 관계 예시 찾기


  1. 참여 제약조건 ( Participation Constraint )

    관계를 맺는 두 개체 중 한 개체가 다른 하나의 개체에 의존하는 지를 표현하는 제약조건

    • 전체 참여 ( Total Participation ) : 다른 개체와 반드시 관계를 맺음
    • 부분 참여 ( Partial Particition ) : 관계를 맺을 수도, 아닐 수도

실습03 ER Model 추출하기


Entity : academy, teacher

relation : belong

Attribute

teacher →

T_number : 키속성

Name : 단일값 속성

Phone : 단일값 속성

Major(여러개) : 다중값 속성

Academy →

B_number : 키속성

Name : 단일값 속성

Address( City, Zipcode ) : 복합속성 ( 단순속성 )

Contact : 단일값 속성

✨Review

수업에서는 눈에 보이지 않지만(추상적), 어떤 데이터를 봤을 때, 그들간의 관계를 구조화, 단순화 시키는 부분들을 공부했다.

데이터는 각각의 개체(Entity)로 존재하고 명사로 표현한다. 각각의 개체가 가지고 있는 특징을 속성(Atrribute)라 한다.
여기서 속성은 여러가지가 될 수 있다. 개체끼리 관련된 무언가가 있다면 그 개체들은 관계(Relation)를 가지고 있다고 하고 동사로써 표현한다.

속성은 성질에 따라 키속성, 복합속성, 단순속성, 단일값, 다중값 속성으로 나뉠 수 있으며, 여기서 키속성은 개체가 갖는 유일한 특성으로 개체의 대표성을 갖게 된다.

개체간의 관계는 1 : 1, 1 : 다, 다 대 다로 표현할 수 있다.

🐱‍🚀느낀점

데이터 모델링을 통해 만들고자 하는 데이터베이스의 큰 틀을 처음부터 구조화, 단순화 시키고 데이터들의 개체, 속성, 관계를 이해하기 쉽도록 잘 정의시켜 놓는 것이 중요할 것이라는 생각이 들었다.
아직까지 (잘은 아니고...)따라가고는 있지만, 중간중간 실습을 통해 일상생활에서의 예를 찾기가 그리 쉽진 않았던 것 같다..
평소 어떤 데이터를 봤을 때, 어떤 특성이 있는지, 어떤 관계를 가질 수 있는지에 대한 생각을 전혀 해보지 못한 부분이라.. 공부하면서 새롭다는 느낌을 종종 받을 수 있었다. ( 아 이렇게 연관지을 수 있구나?)

profile
완전초보 PLC / HMI / Intouch / C++ / SQL

0개의 댓글