SlideShare a Scribd company logo
1 of 35
Download to read offline
ERD를 이용한 DB 모델링
용영환
주의
정답이 아닙니다.
취업이나 승진을 보장하지 않습니다.
모델링이란
Model
http://ko.wikipedia.org/wiki/%ED%8C%8C%EC%9D%BC:%EB%A0%88%EC%9D%B4%EC%8B%B1%EB%AA%A8%EB%8D%B8.JPG
3D Modeling
http://images.kbench.com:8080/kbench/article/2009_09/k73958p3n1-s.jpg
소프트웨어를 해부하면
크게 “동작”과 “데이터”로 나눌 수 있을 것 같습니다.
인간을 위한 소프트웨어 중에
데이터가 없는 소프트웨어는… 없겠지…요.
모델링(modeling) 이란
명사1 .
<미술>
모델을 보고 닮게 만드는 일. 주로 석고상이나 모델을
보고 점토 소조로 만드는 것을 이른다.
모델링(modeling) 이란
우리말 : 모각
이미 있는 조각 작품을 보고 그대로 본떠 새김.
소프트웨어 모델링이란
만들고자 하는… 머리 속에 있는 생각을
누구나 볼 수 있게 본을 뜨는 것입니다.
객체나 DB 를 그림으로 표현하는 것입니다.
모델링을 하면 좋은 점
만들고자 하는 바를 더 명확하게 알 수 있다.
조금 더 잘 만들 수 있다.
이해하고 소통하기 편합니다.
모델링을 하면 더 좋은 점
면접 볼 때 좋습니다.
보여 줄 때 좋습니다.
만들고 나면 뿌듯합니다.
데이터베이스 설계 필요성
데이터를 보다 잘 다루기 위해서 입니다.
소프트웨어 전체에 영향을 미칩니다.
우리가 보는 데이터 모습
ERD
Entity-Relationship Diagram ( 개체 관계 다이어그램 )
ERD 실체
ERD를 그려서 얻는 이점
RDBMS 데이터 설계가 쉬워집니다.
프로그래밍,그러니까 코드 짜는게 좀더 편해 집니다.
그럴 싸~ 합니다. 뿌듯하죠.
개발을 하다보니
정말 실무에서 ERD는 자주 그리게 됩니다.
ERD 도구
ER-win
MySQL Workbench
이 외에도 많은데요.
ERD Tool, DB Design tool 등을 검색해 보세요.
ERD 식별자
ERD 표기법
출처 :	한국데이터베이스진흥원
다양한 ERD 식별자
데이터베이스
모델링에서는 스키마(Schema)라고도 합니다.
테이블
선
테이블 간의 관계를 의미
실선 : Primary Key
점선 : Foreign Key
Keys
Primary Key(PK) : 중복이 없는 유일한 값
Foreign Key(FK) : 다른 테이블의 PK를 참고한 값
관계(Relationship)
두 테이블이 어떻게 참조를 하고 있는지를 말한다.
RDBMS 무결성
실체 무결성(Entity Integrity)
•주식별자(Primary Identifier : Primary Key)는 유일하다.
•주식별자는 Null(Not Null)을 포함하지 않는다.
참조 무결성(Reference Integrity)
•모든 외부식별자(Foreign Identifier : Foreign Key) 값은 관련
있는 관계테이블의 모든 주식별자 값이 존재해야 한다.
영역 무결성(Domain Integrity)
•테이블 내의 모든 열에 대한 무결성 법칙으로 데이터형태, 변위
기본값, 유일성 등에 관한 제한이다.
알아야 할 용어
Identifying Relationship : “식별 관계”
Mandatory : 필수
Cascade : “폭포”, “폭포처럼 떨어뜨리다.” = 연쇄
Identifying Relationship
Identifying ßà Non-Identifying
Foreign key 가 PK 로 지정되어 있는가
Mandatory
NULL !
참고 대상의 존재 여부를 의미한다.
Foreign key options
RESTRICT : 참고 테이블의 값의 변경을 거부한다.
CASCADE : 같이 삭제 또는 수정
SET NULL : NULL 로 변경
NO ACTION : RESTRICT 랑 동일한 결과
RESTRICT vs. NO ACTION
RESTRICT : 일단 거절
NO ACTION : 나중에 거절
정규화
관계형 데이터베이스의 설계에서 중복을 최소화하게 데
이터를 구조화하는 프로세스를 정규화라고 한다.
From 위키피디아

More Related Content

What's hot

Байка 6 клас презентація
Байка 6 клас презентаціяБайка 6 клас презентація
Байка 6 клас презентація
Olga_Pidkivka
 
S13_レガシー ID 管理者でも分かる Verifiable Credentials のセッション [Microsoft Japan Digital D...
S13_レガシー ID 管理者でも分かる Verifiable Credentials のセッション [Microsoft Japan Digital D...S13_レガシー ID 管理者でも分かる Verifiable Credentials のセッション [Microsoft Japan Digital D...
S13_レガシー ID 管理者でも分かる Verifiable Credentials のセッション [Microsoft Japan Digital D...
日本マイクロソフト株式会社
 
Сферни огледала и добивање на лик - IX одд
 Сферни огледала и добивање на лик - IX одд Сферни огледала и добивање на лик - IX одд
Сферни огледала и добивање на лик - IX одд
Jovanka Ivanova
 

What's hot (20)

[211] 네이버 검색과 데이터마이닝
[211] 네이버 검색과 데이터마이닝[211] 네이버 검색과 데이터마이닝
[211] 네이버 검색과 데이터마이닝
 
хромозоми.pptx
хромозоми.pptxхромозоми.pptx
хромозоми.pptx
 
데이터베이스 프로젝트 최종보고서
데이터베이스 프로젝트 최종보고서데이터베이스 프로젝트 최종보고서
데이터베이스 프로젝트 최종보고서
 
SSO using CAS + two-factor authentication (PyGrunn 2014 talk)
SSO using CAS + two-factor authentication (PyGrunn 2014 talk)SSO using CAS + two-factor authentication (PyGrunn 2014 talk)
SSO using CAS + two-factor authentication (PyGrunn 2014 talk)
 
Байка 6 клас презентація
Байка 6 клас презентаціяБайка 6 клас презентація
Байка 6 клас презентація
 
구름 이야기(Feat. gcp) - 구글클라우드(GCP) 활용 사례
구름 이야기(Feat. gcp) - 구글클라우드(GCP) 활용 사례구름 이야기(Feat. gcp) - 구글클라우드(GCP) 활용 사례
구름 이야기(Feat. gcp) - 구글클라우드(GCP) 활용 사례
 
Domain-Driven-Design 정복기 2탄
Domain-Driven-Design 정복기 2탄Domain-Driven-Design 정복기 2탄
Domain-Driven-Design 정복기 2탄
 
忙しい人のためのBackbone.jsとAngular.js入門
忙しい人のためのBackbone.jsとAngular.js入門忙しい人のためのBackbone.jsとAngular.js入門
忙しい人のためのBackbone.jsとAngular.js入門
 
영화 예매 프로그램 (DB 설계, 프로그램 연동)
영화 예매 프로그램 (DB 설계, 프로그램 연동)영화 예매 프로그램 (DB 설계, 프로그램 연동)
영화 예매 프로그램 (DB 설계, 프로그램 연동)
 
금융It시스템의 이해 2편
금융It시스템의 이해 2편금융It시스템의 이해 2편
금융It시스템의 이해 2편
 
Elasticsearchのサジェスト機能を使った話
Elasticsearchのサジェスト機能を使った話Elasticsearchのサジェスト機能を使った話
Elasticsearchのサジェスト機能を使った話
 
Reinventing the Transaction Script (NDC London 2020)
Reinventing the Transaction Script (NDC London 2020)Reinventing the Transaction Script (NDC London 2020)
Reinventing the Transaction Script (NDC London 2020)
 
S13_レガシー ID 管理者でも分かる Verifiable Credentials のセッション [Microsoft Japan Digital D...
S13_レガシー ID 管理者でも分かる Verifiable Credentials のセッション [Microsoft Japan Digital D...S13_レガシー ID 管理者でも分かる Verifiable Credentials のセッション [Microsoft Japan Digital D...
S13_レガシー ID 管理者でも分かる Verifiable Credentials のセッション [Microsoft Japan Digital D...
 
Ch6 대용량서비스레퍼런스아키텍처 part.1
Ch6 대용량서비스레퍼런스아키텍처 part.1Ch6 대용량서비스레퍼런스아키텍처 part.1
Ch6 대용량서비스레퍼런스아키텍처 part.1
 
Сферни огледала и добивање на лик - IX одд
 Сферни огледала и добивање на лик - IX одд Сферни огледала и добивање на лик - IX одд
Сферни огледала и добивање на лик - IX одд
 
카카오톡으로 여친 만들기 2013.06.29
카카오톡으로 여친 만들기 2013.06.29카카오톡으로 여친 만들기 2013.06.29
카카오톡으로 여친 만들기 2013.06.29
 
фотосинтеза
фотосинтезафотосинтеза
фотосинтеза
 
What is tackled in the Java EE Security API (Java EE 8)
What is tackled in the Java EE Security API (Java EE 8)What is tackled in the Java EE Security API (Java EE 8)
What is tackled in the Java EE Security API (Java EE 8)
 
株式の高速取引と取引所の高速化
株式の高速取引と取引所の高速化株式の高速取引と取引所の高速化
株式の高速取引と取引所の高速化
 
Railsで作るBFFの功罪
Railsで作るBFFの功罪Railsで作るBFFの功罪
Railsで作るBFFの功罪
 

More from Young D

iBeacons가 뭔가
iBeacons가 뭔가iBeacons가 뭔가
iBeacons가 뭔가
Young D
 
CentOS 에 MySQL 5.6 설치
CentOS 에 MySQL 5.6 설치CentOS 에 MySQL 5.6 설치
CentOS 에 MySQL 5.6 설치
Young D
 
마이크로소프트 Azure 에서 안드로이드 Push 구현과 Data 처리
마이크로소프트 Azure 에서 안드로이드  Push 구현과 Data 처리마이크로소프트 Azure 에서 안드로이드  Push 구현과 Data 처리
마이크로소프트 Azure 에서 안드로이드 Push 구현과 Data 처리
Young D
 
무선 랜으로 파일 전송할 때 왜 무선 마우스 랙이 발생할까
무선 랜으로 파일 전송할 때 왜 무선 마우스 랙이 발생할까무선 랜으로 파일 전송할 때 왜 무선 마우스 랙이 발생할까
무선 랜으로 파일 전송할 때 왜 무선 마우스 랙이 발생할까
Young D
 

More from Young D (13)

HAProxy TCP 모드에서 내부 서버로 Source IP 전달 방법
HAProxy TCP 모드에서 내부 서버로 Source IP 전달 방법HAProxy TCP 모드에서 내부 서버로 Source IP 전달 방법
HAProxy TCP 모드에서 내부 서버로 Source IP 전달 방법
 
한발 앞서 배워보는 Xamarin overview
한발 앞서 배워보는 Xamarin overview한발 앞서 배워보는 Xamarin overview
한발 앞서 배워보는 Xamarin overview
 
Apache JMeter로 웹 성능 테스트 방법
Apache JMeter로 웹 성능 테스트 방법Apache JMeter로 웹 성능 테스트 방법
Apache JMeter로 웹 성능 테스트 방법
 
티켓몬스터를 위한 PHP 개발 방법
티켓몬스터를 위한 PHP 개발 방법티켓몬스터를 위한 PHP 개발 방법
티켓몬스터를 위한 PHP 개발 방법
 
유연하게 확장할 수 있는 PHP 웹 개발 이야기
유연하게 확장할 수 있는 PHP 웹 개발 이야기유연하게 확장할 수 있는 PHP 웹 개발 이야기
유연하게 확장할 수 있는 PHP 웹 개발 이야기
 
Microsoft Azure를 통한 Push와 DB 이용방법
Microsoft Azure를 통한 Push와 DB 이용방법Microsoft Azure를 통한 Push와 DB 이용방법
Microsoft Azure를 통한 Push와 DB 이용방법
 
iBeacons가 뭔가
iBeacons가 뭔가iBeacons가 뭔가
iBeacons가 뭔가
 
CentOS 에 MySQL 5.6 설치
CentOS 에 MySQL 5.6 설치CentOS 에 MySQL 5.6 설치
CentOS 에 MySQL 5.6 설치
 
마이크로소프트 Azure 에서 안드로이드 Push 구현과 Data 처리
마이크로소프트 Azure 에서 안드로이드  Push 구현과 Data 처리마이크로소프트 Azure 에서 안드로이드  Push 구현과 Data 처리
마이크로소프트 Azure 에서 안드로이드 Push 구현과 Data 처리
 
무선 랜으로 파일 전송할 때 왜 무선 마우스 랙이 발생할까
무선 랜으로 파일 전송할 때 왜 무선 마우스 랙이 발생할까무선 랜으로 파일 전송할 때 왜 무선 마우스 랙이 발생할까
무선 랜으로 파일 전송할 때 왜 무선 마우스 랙이 발생할까
 
PHP 개발 생산성을 높여주는 통합 개발 환경 - 이클립스 PDT
PHP 개발 생산성을 높여주는 통합 개발 환경 - 이클립스 PDTPHP 개발 생산성을 높여주는 통합 개발 환경 - 이클립스 PDT
PHP 개발 생산성을 높여주는 통합 개발 환경 - 이클립스 PDT
 
[협업 도구] 위키를 활용한 협업 노하우
[협업 도구] 위키를 활용한 협업 노하우 [협업 도구] 위키를 활용한 협업 노하우
[협업 도구] 위키를 활용한 협업 노하우
 
교육용 프로그래밍 언어 Small basic
교육용 프로그래밍 언어 Small basic교육용 프로그래밍 언어 Small basic
교육용 프로그래밍 언어 Small basic
 

ERD를 이용한 DB 모델링