SlideShare une entreprise Scribd logo
1  sur  34
Télécharger pour lire hors ligne
데이터베이스개론데이터모델링과ERD 
NHN NEXT 정호영 
나눔고딕및나눔고딕코딩글꼴을설치해주세요.
오늘배울것 
-데이터모델링 
-ER다이어그램 
-관계형데이터모델
데이터모델링이란? 
-현실세계에서 
-응용에필요한데이터를잘고르고다듬어서 
-DBMS에저장하는방법
데이터모델링과정 
1. 요구사항분석(Requirements Analysis) 
2. 개념적설계(Conceptual Database Design) 
3. 논리적설계(Logical Database Design) 
4. 물리적설계(Physical Database Design)
*데이터모델링과정 
1. 요구사항분석(Requirements Analysis) 
2. 개념적설계(Conceptual Database Design) 
3. 논리적설계(Logical Database Design) 
4. 스키마정제(Schema Refinement) 
5. 물리적설계(Physical Database Design) 
6. 응용및보안설계(Application and Security Design)
산출물로본개발단계 
요구사항분석요구사항분석서 
개념적설계ERD 
논리적설계관계형데이터모델(Relationaldatamodel) 
물리적설계SQL
첫번째:요구사항분석 
앱의요구사항을데이터의관점에서바라본다. 
-사용자/앱이데이터베이스에게요구하는것은무엇인가? 
-무엇을어떻게저장할것인가?
회사운영SW요구사항분석:(1)회사분석 
회사는부서로구성되어있다. 
부서는부서이름과부서번호,한명의부장을가진다. 
부장의업무시작날짜를기록한다. 
부서는하나이상의장소에있을수있다.
회사운영SW요구사항분석:(2)프로젝트 
부서는여러프로젝트를관리한다. 
프로젝트는고유번호,고유이름,위치정보를가진다. 
한프로젝트는하나의부서에만속한다.
회사운영SW요구사항분석:(3)사원 
사원은한부서에속한다. 
사원은하나이상의프로젝트에참여한다. 
사원데이터는사번,이름,주소,성별,주소,연봉정보등이다. 
각사원은프로젝트에참여한시간을관리한다. 
각사원은1또는0명의직속상관이있다.
회사운영SW요구사항분석:(4)–부양가족(Dependants) 
사원들의경조사등을위해가족정보를유지한다. 
가족구성원에대해이름,성별,생일,관계만저장한다.
두번째:개념적설계 
요구사항을조금더정형화하기위해사용 
-입력:요구사항분석서 
-출력:ERD(Entity–RelationshipDiagram) 
-수작업또는프로그램(ERWin등)사용
개체와속성(EntityandAttribute) 
개체 
-실제현실에서독립적으로존재하는어떤것 
-직사각형으로표현 
속성 
-개체를설명할수있는특성 
-타원으로표현 
-키속성:개체마다고유한값을가지는속성 
밑줄로표현하며하나이상존재가능 
부서 
부서번호 
부서위치
실습:Entity표현해보기 
종이를꺼내서요구사항분석을보며Entity를그려봅시다.
Relationship:관계 
개체와개체사이의관계를나타냄 
관계도애트리뷰트를가질수있음 
관계에는1:1,1:M,M:N의세가지가존재 
반드시필요한관계는겹줄로표현 
예)사원-부서,부서-매니저,사원-프로젝트 
Department 
Employee 
Works 
1 
N
약개체와식별관계 
부양가족의경우키가없습니다. 
키가없는개체를약개체(weakentity)라고합니다. 
약개체와부모개체와의관계를 
식별관계(identifyingrelationship)라고합니다. 
가족 
사원
실습:Relationship표현해보기 
Entity를그렸던곳에다Relationship도추가해봅시다.
세번째:논리적설계 
ERD의결과를직접SQL로바꾸기는어렵습니다. 
관계데이터모델로변경합니다. 
입력:ERD 
출력:관계데이터모델(논리스키마)
간단한규칙1번:개체테이블 
기본적으로 
ERD의개체는R모델에서테이블(릴레이션)이됩니다. 
사원(ID, … ) 
부서(ID, … ) 
가족(이름, …) 
프로젝트(PID, … )
1:1관계 
관계를맺는개체(테이블)로들어갑니다. 
어떻게해야할까요? 
사원--1 --관리(시작일) == 1 == 부서 
사원(ID, … ) 
부서(ID, … )
1:1관계 
관계를표현하기위해외래키(ForeignKey)를사용합니다. 
테이블이다른테이블의키속성을가지면외래키입니다.
1:1관계 
(1)관계를맺는테이블에외래키를추가합니다. 
(2)관계의속성도테이블의속성으로추가합니다. 
*사원릴레이션에들어가면안되나요? 
사원--1 --관리(시작일) ==1 == 부서
참조무결성제약조건 
외래키의값을제한하는제약조건 
1.외래키는참조하는테이블의기본키를가져옴 
2.반드시NULL이거나 
3.부모테이블에존재하는값이어야함 
위조건을참조무결성제약조건이라고부름 
시험에100%나옵니다.
1:M관계 
1:1관계와비슷하게처리가능 
관계를맺는릴레이션중한쪽에들어가야함 
사원== N== 일한다(배치날짜)== 1 == 부서 
사원(ID, … ) 
부서(ID, … ,부장ID, 부서시작일)
1:N관계 
사원의외래키로부서를추가합니다. 
관계의속성도사원의속성으로추가합니다. 
부서쪽에사원이들어갈수있나요?WHY? 
사원== N== 일한다(배치날짜)== 1 == 부서 
사원(ID, … ,부서ID, 배치날짜) 
부서(ID, … ,부장ID, 부서시작일)
M:N관계는어떻게해야할까요? 
부서== M == 관리한다(시작일)== N == 프로젝트 
부서(ID, … ,부장ID, 부서시작일) 
프로젝트(PID, …)
M:N관계는어떻게해야할까요? 
M:N관계를해소하기위해서는새로운테이블을만들어야합니다. 
새로운테이블의기본키는두테이블의외래키의복합키(?!)입니다. 
부서== M == 관리한다(시작일)== N == 프로젝트 
부서(ID, … ,부장ID, 부서시작일) 
부서_프로젝트관리(DID,PID, 시작일) 
프로젝트(PID, …)
약개체는태생적으로문제점을가지고있습니다. 
부양가족개체부양가족테이블이 
되려면어떤문제가있을까요? 
부양가족(이름, 성별, 생일)
약개체는태생적으로문제점을가지고있습니다. 
부양가족테이블에는키가없습니다. 
테이블은반드시기본키를가져야합니다. 
사원--1 --부양한다(관계)== N == 부양가족 
사원(EID, …) 
부양가족(이름, 성별, 생일)
약개체는태생적으로문제점을가지고있습니다. 
사원의EID와부양가족의이름을합쳐서기본키가됩니다. 
약개체와의관계를식별관계라고합니다. 
식별관계도시험단골문제로나옵니다. 
사원--1 --부양한다(관계)== N == 부양가족 
사원(EID, …) 
부양가족(EID,이름, 성별, 생일)
관계스키마를직접완성해봅시다.
THANK YOU!!!

Contenu connexe

Tendances

Tendances (20)

The Advantages of Using SASS and Gulp
The Advantages of Using SASS and GulpThe Advantages of Using SASS and Gulp
The Advantages of Using SASS and Gulp
 
서비스중인 게임 DB 설계 (쿠키런 편)
서비스중인 게임 DB 설계 (쿠키런 편)서비스중인 게임 DB 설계 (쿠키런 편)
서비스중인 게임 DB 설계 (쿠키런 편)
 
Using runbot to test all your developments automatically
Using runbot to test all your developments automaticallyUsing runbot to test all your developments automatically
Using runbot to test all your developments automatically
 
Nodejs Session01
Nodejs Session01Nodejs Session01
Nodejs Session01
 
Angular 10 course_content
Angular 10 course_contentAngular 10 course_content
Angular 10 course_content
 
MongoDB Aggregation Framework
MongoDB Aggregation FrameworkMongoDB Aggregation Framework
MongoDB Aggregation Framework
 
RPC에서 REST까지 간단한 개념소개
RPC에서 REST까지 간단한 개념소개RPC에서 REST까지 간단한 개념소개
RPC에서 REST까지 간단한 개념소개
 
파이썬 데이터베이스 연결 1탄
파이썬 데이터베이스 연결 1탄파이썬 데이터베이스 연결 1탄
파이썬 데이터베이스 연결 1탄
 
Introduction to Node.js
Introduction to Node.jsIntroduction to Node.js
Introduction to Node.js
 
What’s New in Angular 14?
What’s New in Angular 14?What’s New in Angular 14?
What’s New in Angular 14?
 
Asp.net MVC training session
Asp.net MVC training sessionAsp.net MVC training session
Asp.net MVC training session
 
Mongoose and MongoDB 101
Mongoose and MongoDB 101Mongoose and MongoDB 101
Mongoose and MongoDB 101
 
Angular - Chapter 3 - Components
Angular - Chapter 3 - ComponentsAngular - Chapter 3 - Components
Angular - Chapter 3 - Components
 
Node.js Express Tutorial | Node.js Tutorial For Beginners | Node.js + Expres...
Node.js Express Tutorial | Node.js Tutorial For Beginners | Node.js +  Expres...Node.js Express Tutorial | Node.js Tutorial For Beginners | Node.js +  Expres...
Node.js Express Tutorial | Node.js Tutorial For Beginners | Node.js + Expres...
 
Angular introduction students
Angular introduction studentsAngular introduction students
Angular introduction students
 
진화하는 컴퓨터 하드웨어와 게임 개발 기술의 발전
진화하는 컴퓨터 하드웨어와 게임 개발 기술의 발전진화하는 컴퓨터 하드웨어와 게임 개발 기술의 발전
진화하는 컴퓨터 하드웨어와 게임 개발 기술의 발전
 
ASP.NET Core
ASP.NET CoreASP.NET Core
ASP.NET Core
 
Overview Of JDBC
Overview Of JDBCOverview Of JDBC
Overview Of JDBC
 
Security: Odoo Code Hardening
Security: Odoo Code HardeningSecurity: Odoo Code Hardening
Security: Odoo Code Hardening
 
Django admin site 커스텀하여 적극적으로 활용하기
Django admin site 커스텀하여 적극적으로 활용하기Django admin site 커스텀하여 적극적으로 활용하기
Django admin site 커스텀하여 적극적으로 활용하기
 

En vedette (7)

암달의 법칙과 쿼리튜닝 기초
암달의 법칙과 쿼리튜닝 기초암달의 법칙과 쿼리튜닝 기초
암달의 법칙과 쿼리튜닝 기초
 
MySQL JOIN
MySQL JOINMySQL JOIN
MySQL JOIN
 
MySQL Select (1)
MySQL Select (1)MySQL Select (1)
MySQL Select (1)
 
2. MySQL DataTye Basic
2. MySQL DataTye Basic2. MySQL DataTye Basic
2. MySQL DataTye Basic
 
데이터베이스 베이직 소개
데이터베이스 베이직 소개데이터베이스 베이직 소개
데이터베이스 베이직 소개
 
Mymysql basic sql
Mymysql basic sqlMymysql basic sql
Mymysql basic sql
 
MySQL Create Table
MySQL Create TableMySQL Create Table
MySQL Create Table
 

Similaire à 데이터베이스 모델링

Sqlp 스터디
Sqlp 스터디Sqlp 스터디
Sqlp 스터디
lee4339
 
[NDC08] 최적화와 프로파일링 - 송창규
[NDC08] 최적화와 프로파일링 - 송창규[NDC08] 최적화와 프로파일링 - 송창규
[NDC08] 최적화와 프로파일링 - 송창규
ChangKyu Song
 

Similaire à 데이터베이스 모델링 (20)

Sqlp 스터디
Sqlp 스터디Sqlp 스터디
Sqlp 스터디
 
Deep learning framework 제작
Deep learning framework 제작Deep learning framework 제작
Deep learning framework 제작
 
2016년 인문정보학 Sql세미나 1/3
2016년 인문정보학 Sql세미나 1/32016년 인문정보학 Sql세미나 1/3
2016년 인문정보학 Sql세미나 1/3
 
m5 모델링 v0
m5 모델링 v0m5 모델링 v0
m5 모델링 v0
 
Natural intelligence 최종발표ppt_ver13
Natural intelligence 최종발표ppt_ver13Natural intelligence 최종발표ppt_ver13
Natural intelligence 최종발표ppt_ver13
 
LDA : latent Dirichlet Allocation (Fairies NLP Series) - Korean Ver.
LDA : latent Dirichlet Allocation (Fairies NLP Series) - Korean Ver.LDA : latent Dirichlet Allocation (Fairies NLP Series) - Korean Ver.
LDA : latent Dirichlet Allocation (Fairies NLP Series) - Korean Ver.
 
Workshop 210417 dhlee
Workshop 210417 dhleeWorkshop 210417 dhlee
Workshop 210417 dhlee
 
Linked Open Data
Linked Open DataLinked Open Data
Linked Open Data
 
[NDC08] 최적화와 프로파일링 - 송창규
[NDC08] 최적화와 프로파일링 - 송창규[NDC08] 최적화와 프로파일링 - 송창규
[NDC08] 최적화와 프로파일링 - 송창규
 
ERD를 이용한 DB 모델링
ERD를 이용한 DB 모델링ERD를 이용한 DB 모델링
ERD를 이용한 DB 모델링
 
메이크챗봇 자연어기초
메이크챗봇 자연어기초메이크챗봇 자연어기초
메이크챗봇 자연어기초
 
NDC 2016, [슈판워] 맨땅에서 데이터 분석 시스템 만들어나가기
NDC 2016, [슈판워] 맨땅에서 데이터 분석 시스템 만들어나가기NDC 2016, [슈판워] 맨땅에서 데이터 분석 시스템 만들어나가기
NDC 2016, [슈판워] 맨땅에서 데이터 분석 시스템 만들어나가기
 
산동네 게임 DBA 이야기
산동네 게임 DBA 이야기산동네 게임 DBA 이야기
산동네 게임 DBA 이야기
 
[PyCon KR 2018] 땀내를 줄이는 Data와 Feature 다루기
[PyCon KR 2018] 땀내를 줄이는 Data와 Feature 다루기[PyCon KR 2018] 땀내를 줄이는 Data와 Feature 다루기
[PyCon KR 2018] 땀내를 줄이는 Data와 Feature 다루기
 
Spark & Zeppelin을 활용한 머신러닝 실전 적용기
Spark & Zeppelin을 활용한 머신러닝 실전 적용기Spark & Zeppelin을 활용한 머신러닝 실전 적용기
Spark & Zeppelin을 활용한 머신러닝 실전 적용기
 
정보검색과 Elasticsearch (크몽)
정보검색과 Elasticsearch (크몽)정보검색과 Elasticsearch (크몽)
정보검색과 Elasticsearch (크몽)
 
Machine Learning with Apache Spark and Zeppelin
Machine Learning with Apache Spark and ZeppelinMachine Learning with Apache Spark and Zeppelin
Machine Learning with Apache Spark and Zeppelin
 
데이터를 비즈니스에 활용하기 왜 어려울까?
데이터를 비즈니스에 활용하기 왜 어려울까?데이터를 비즈니스에 활용하기 왜 어려울까?
데이터를 비즈니스에 활용하기 왜 어려울까?
 
DDD로 복잡함 다루기
DDD로 복잡함 다루기DDD로 복잡함 다루기
DDD로 복잡함 다루기
 
분석과 설계
분석과 설계분석과 설계
분석과 설계
 

Plus de Hoyoung Jung

Plus de Hoyoung Jung (20)

철권 1단에서 벗어나기
철권 1단에서 벗어나기철권 1단에서 벗어나기
철권 1단에서 벗어나기
 
코딩 공부 시작하기
코딩 공부 시작하기코딩 공부 시작하기
코딩 공부 시작하기
 
내 질문에는 왜 답변이 달리지 않을까
내 질문에는 왜 답변이 달리지 않을까내 질문에는 왜 답변이 달리지 않을까
내 질문에는 왜 답변이 달리지 않을까
 
entry를 이용한 코딩 교육1
entry를 이용한 코딩 교육1entry를 이용한 코딩 교육1
entry를 이용한 코딩 교육1
 
Github Markdown
Github MarkdownGithub Markdown
Github Markdown
 
stored procedure2 + jdbc
stored procedure2 + jdbcstored procedure2 + jdbc
stored procedure2 + jdbc
 
mysql stored procedure
mysql stored proceduremysql stored procedure
mysql stored procedure
 
mysql 서브쿼리
mysql 서브쿼리mysql 서브쿼리
mysql 서브쿼리
 
GROUP BY, CASE WHEN
GROUP BY, CASE WHENGROUP BY, CASE WHEN
GROUP BY, CASE WHEN
 
트랜잭션
트랜잭션 트랜잭션
트랜잭션
 
데이터베이스 정규화
데이터베이스 정규화데이터베이스 정규화
데이터베이스 정규화
 
MySQL 인덱스의 기초
MySQL 인덱스의 기초MySQL 인덱스의 기초
MySQL 인덱스의 기초
 
tomcat jdbc mysql 프로그래밍
tomcat jdbc mysql 프로그래밍tomcat jdbc mysql 프로그래밍
tomcat jdbc mysql 프로그래밍
 
MySQL delete.update
MySQL delete.updateMySQL delete.update
MySQL delete.update
 
4. 함수포인터
4. 함수포인터4. 함수포인터
4. 함수포인터
 
Crontab 간단 사용법
Crontab 간단 사용법Crontab 간단 사용법
Crontab 간단 사용법
 
3.포인터
3.포인터3.포인터
3.포인터
 
포인터의기초 (2) - 포인터 사용하기1
포인터의기초 (2) - 포인터 사용하기1포인터의기초 (2) - 포인터 사용하기1
포인터의기초 (2) - 포인터 사용하기1
 
포인터의 기초(1)
포인터의 기초(1)포인터의 기초(1)
포인터의 기초(1)
 
우분투에 시스템콜 추가하기
우분투에 시스템콜 추가하기우분투에 시스템콜 추가하기
우분투에 시스템콜 추가하기
 

데이터베이스 모델링