SlideShare a Scribd company logo
1 of 30
Download to read offline
DB
39ghwjd@naver.com
Contents
1. DB?
2. Entity
3. Normalization
DB
Database
: 전자적으로 저장되고 액세스되는 데이터의 조직화된 모음
File System, Cluster, Cloud etc…
하지만, 우리는 DB를 직접 만지는가? ㄴㄴ
참고
왜 DB를 알아야 하는가?
- Persistence –
- 컴퓨터 전기 나가서 데이터 날아가면 님이 책임? -
DB에선…
Dirty Write + Transaction Journaling
참고
왜 DB를 알아야 하는가?
- Persistence / Dirty Writes –
마지막 쓰기 이후에 수정된 => Dirty
시스템 상태 부분만 저장소에 쓰는 것 => Write
Ex) 문서 편집 – 마지막 저장 이후에 실제로 변경된 문서 부분만 저
장함
참고
왜 DB를 알아야 하는가?
- Persistence / Journaling –
각 이벤트가 시스템에 적용되기 전에
로그(Journal)에 이벤트를 저장하는 프로세스
시작 시 저널을 읽고, 각 이벤트를 시스템에 다시 적용해
시스템 장애 or 종료 시 데이터 손실 방지
참고
왜 DB를 알아야 하는가?
- Persistence / Journaling –
Ex) 파일에 기록 – 사진 편집 프로그램
“실행 취소 / 다시 실행“ 이력은
언제든지 편집된 상태를 복구할 수 있는 저널을 구성
Transaction Log / Redo Log
참고
ENTITY
Entity
1. 명사 (사람, 장소, 물건, 사건, 개념 등)
2. 업무상 관리가 필요한 관심사
=> 업무에 필요하고 유용한 정보를 저장 & 관리하기 위한 집합적인 것
Entity 특징
1. 업무에서 필요로 하는 정보
ex) 환자 - 인사업무 영역에서 관리 X, 병원에서는 가장 중요한
Entity가 됨
2. 식별이 가능해야 함
ex) 직원을 구분할 수 있는 방법 - 이름은 X, 사원번호는 가능
3. 인스턴스의 집합
- 하나의 엔터티는 여러 개의 인스턴스를 포함
Entity 특징
4. 업무프로세스가 그 엔터티를 반드시 이용해야 함
5. 속성을 포함
6. 관계의 존재
- 다른 Entity와 최소 한 개 이상의 관계가 존재해야 함
정규화
정규화 기본
DB에서 데이터 처리할 때 성능이라고 하면?
조회 성능 / 입력, 수정, 삭제 성능
- 정규화 수행 -
데이터를 결정하는 결정자에 의해 함수적 종속을 가지고 있는 일반
속성을 의존자로 해
입력,수정,삭제 이상을 제거하는 것
정규화 기본
테이블을 수정(갱신, 삽입, 삭제)시,
충분히 정규화되지 않은 테이블에서 부작용 발생 가능
- 갱신 이상, 삽입 이상, 삭제 이상 -
참고
정규화 기본
Update anomaly (갱신 이상)
참고
같은 정보가 복수개의 행에서 표현됨
(갱신 - 논리적인 모순)
ex) 특정 직원의 주소 변경 시, 여러 개의
레코드를 수정해야 함
why? 그 직원이 속한 모든 주소가 바뀌어
야 함
성공적인 갱신이 이루어지지 않을 경우
(일부만 변경이 되는 경우),
테이블은 모순 상태가 되는 것
정규화 기본
Insertion anomaly (삽입 이상)
참고
어떠한 특정 사실은 전혀 기록되지 않는 경
우
ex) 새 교수를 고용하였을 경우, 그가 아직
맡은 강의가 없어 강의 코드를 null로 하
지 않는 이상
새 교수를 테이블에 추가할 수 없음
정규화 기본
Deletion anomaly (삭제 이상)
참고
데이터의 삭제가 전혀 다른 사실에 대한
데이터의 삭제도 필요로 하게 되는 현상
ex) 한 교수가 임시로 강의를 중단하고자
할 때, 그가 기록된 레코드를 삭제하고자
하면
교수 자체가 사라지게 됨
정규화 기본
정규화 : 점진적이고, 이전 수준이 충족되지 않으면 높은 수준의 DB
정규화를 달성할 수 없음
- 4NF 이상의 정규형은 해결해야 할 문제가 실제로 거의 나타나
지 않음 (학문적 관심!)
참고
정규화 기본
- 전제조건(관계형 모델을 준수하기 위한) : 테이블에는 행을 고유하게
식별하는 기본키가 있어야 함
- ISBN 번호는 책을 고유하게 식별(기본 키 가능)
참고
Title Author Author
Nationalit
y
Format Price Subject Pages Thickness Publisher Publisher
Country
Publicatio
n Type
Genre ID Genre
Name
Beginnin
g
MySQL
Chad
Russell
American Hardcove
r
49.99 520 Thick Apress USA E-book 1 Tutorial
Mysql
Database
Design
정규화 기본
참고
Title Author Author
Nationalit
y
Format Price Subject Pages Thickness Publisher Publisher
Country
Publicatio
n Type
Genre ID Genre
Name
Beginnin
g
MySQL
Chad
Russell
American Hardcove
r
49.99 520 Thick Apress USA E-book 1 Tutorial
Mysql
Database
Design
ISBN Title Author Author
Nationali
ty
Format Price Subject Pages Thicknes
s
Publishe
r
Publishe
r
Country
Publicatio
n Type
Genre
ID
Genre
Name
1590593
324
Beginnin
g
MySQL
Chad
Russell
America
n
Hardcov
er
49.99 520 Thick Apress USA E-book 1 Tutorial
Mysql
Database
Design
제 1 정규화
- 테이블의 각 열에 하나의 값이 있어야 함
(값 집합 or 중첩된 레코드가 포함된 열은 허용 X)
참고
ISBN Title Author Author
Nationali
ty
Format Price Subject Pages Thicknes
s
Publishe
r
Publishe
r
Country
Publicatio
n Type
Genre
ID
Genre
Name
1590593
324
Beginnin
g
MySQL
Chad
Russell
America
n
Hardcov
er
49.99 520 Thick Apress USA E-book 1 Tutorial
Mysql
Database
Design
제 1 정규화
해결책 -> 별도의 Subject 테이블로 빼자
참고
ISBN Title Author Author
Nationali
ty
Format Price Subject Pages Thicknes
s
Publishe
r
Publishe
r
Country
Publicatio
n Type
Genre
ID
Genre
Name
1590593
324
Beginnin
g
MySQL
Chad
Russell
America
n
Hardcov
er
49.99 520 Thick Apress USA E-book 1 Tutorial
Mysql
Database
Design
ISBN Title Auth
or
Auth
or
Natio
nality
Form
at
Price Pages Thick
ness
Publis
her
Publis
her
Count
ry
Public
ation
Type
Genr
e ID
Genr
e
Name
15905
93324
Begin
ning
MySQ
L
Chad
Russe
ll
Ameri
can
Hardc
over
49.99 520 Thick Apres
s
USA E-
book
1 Tutor
ial
Mysql
Database
Design
Subject
Book
제 1 정규화
(추출된 행의 기본키를 참조하는) 외래키 열을 추가해야 함
참고
ISBN Title Auth
or
Auth
or
Natio
nality
Form
at
Price Pages Thick
ness
Publis
her
Publis
her
Count
ry
Public
ation
Type
Genr
e ID
Genr
e
Name
15905
93324
Begin
ning
MySQ
L
Chad
Russe
ll
Ameri
can
Hardc
over
49.99 520 Thick Apres
s
USA E-
book
1 Tutor
ial
ISBN# Subject
1590593324 Mysql
1590593324 Database
1590593324 Design
Subject
Book
제 2 정규화
(추출된 행의 기본키를 참조하는) 외래키 열을 추가해야 함
참고
Title Format Author Author
Nationality
Price Pages Thickness Genre ID Genre Name Publisher ID
Beginning
MySQL
Database
Design and
Optimization
Hardcover Chad
Russell
American 49.99 520 Thick 1 Tutorial 1
Beginning
MySQL
Database
Design and
Optimization
E-book Chad
Russell
American 22.34 520 Thick 1 Tutorial 1
The
Relational
Model for
Database
Management:
Version 2
E-book E.F.Codd British 13.88 538 Thick 2 Popular
science
2
The
Relational
Model for
Database
Management:
Version 2
Paperback E.F.Codd British 39.99 538 Thick 2 Popular
science
2
제 2 정규화
후보 키의 일부가 아닌 모든 속성은 제목에 종속되지만, 가격만 형식에도 종속됨
제 2 정규화 준수 & 중복성 제거
=> 후보 키가 아닌 모든 속성이 후보 키의 일부가 아니라 전체 후보 키에 종속되어야 함
이 Table을 정규화 =>
1. Title을 후보키(기본키)로 만들어 후보 키가 아닌 모든 속성이 전체 후보 키에 종속되도록
2. Price를 별도의 테이블로 추출해 Format에 대한 종속성을 가질 수 있도록 함
참고
제 2 정규화
(추출된 행의 기본키를 참조하는) 외래키 열을 추가해야 함
참고
Title Author Author
Nationalit
y
Pages Thickness Genre ID Genr
e
Name
Publisher
ID
Beginning
MySQL
Database
Design
and
Optimizati
on
Chad
Russell
American 520 Thick 1 Tutor
ial
1
The
Relational
Model for
Database
Manageme
nt: Version
2
E.F.Codd British 538 Thick 2 Popul
ar
scien
ce
2
Title Format Price
Beginning
MySQL
Database
Design and
Optimizatio
n
Hardcover 49.99
Beginning
MySQL
Database
Design and
Optimizatio
n
E-book 22.34
The
Relational
Model for
Database
Managemen
t: Version 2
E-book 13.88
The
Relational
Model for
Database
Managemen
t: Version 2
Paperback 39.99
제 3 정규화
Author Nationality는 Author에 종속되고, 이는 Title에 종속됨
Genre도 마찬가지 => Genre Name은 Title에 종속된 Genre ID에 종속됨
해결책 - Author Nationalty, Genre Name을 각각의 테이블에 배치해
이행적 기능 종속성을 제거
참고
제 3 정규화
Book 테이블에는 여전히 이행적 종속 기능 존재
참고
Title Author Pages Thickness Genre ID Publisher ID
Beginning
MySQL
Database
Design and
Optimization
Chad
Russell
520 Thick 1 1
The Relational
Model for
Database
Management:
Version 2
E.F.Codd 538 Thick 2 2
Title Format Price
Beginning
MySQL
Database
Design and
Optimization
Hardcover 49.99
Beginning
MySQL
Database
Design and
Optimization
E-book 22.34
The
Relational
Model for
Database
Management:
Version 2
E-book 13.88
The
Relational
Model for
Database
Management:
Version 2
Paperback 39.99
Author Author
Nationality
Chad
Russell
American
E.F.Codd British
Genre ID Genre
Name
1 Tutorial
2 Popular
science
Thank you
39ghwjd@naver.com
Database Entity, 정규화에 대해 알아보자.pdf

More Related Content

Similar to Database Entity, 정규화에 대해 알아보자.pdf

[211] HBase 기반 검색 데이터 저장소 (공개용)
[211] HBase 기반 검색 데이터 저장소 (공개용)[211] HBase 기반 검색 데이터 저장소 (공개용)
[211] HBase 기반 검색 데이터 저장소 (공개용)NAVER D2
 
Amazon aurora 2
Amazon aurora 2Amazon aurora 2
Amazon aurora 2EXEM
 
[스프링 스터디 1일차] 템플릿
[스프링 스터디 1일차] 템플릿[스프링 스터디 1일차] 템플릿
[스프링 스터디 1일차] 템플릿AnselmKim
 
101102 endofdb select.1_rdbms
101102 endofdb select.1_rdbms101102 endofdb select.1_rdbms
101102 endofdb select.1_rdbmssung ki choi
 
Fundamentals of Oracle SQL
Fundamentals of Oracle SQLFundamentals of Oracle SQL
Fundamentals of Oracle SQLJAEGEUN YU
 
실전 DataSnap!
실전 DataSnap!실전 DataSnap!
실전 DataSnap!Devgear
 
MariaDB 마이그레이션 - 네오클로바
MariaDB 마이그레이션 - 네오클로바MariaDB 마이그레이션 - 네오클로바
MariaDB 마이그레이션 - 네오클로바NeoClova
 
PostgreSQL Deep Internal
PostgreSQL Deep InternalPostgreSQL Deep Internal
PostgreSQL Deep InternalEXEM
 
비동기 파일 로딩
비동기 파일 로딩비동기 파일 로딩
비동기 파일 로딩Bongseok Cho
 
Intro KaKao ADT (Almighty Data Transmitter)
Intro KaKao ADT (Almighty Data Transmitter)Intro KaKao ADT (Almighty Data Transmitter)
Intro KaKao ADT (Almighty Data Transmitter)I Goo Lee
 
스프링 데이터 레디스 엘라스틱 발표자료
스프링 데이터 레디스 엘라스틱 발표자료스프링 데이터 레디스 엘라스틱 발표자료
스프링 데이터 레디스 엘라스틱 발표자료라한사 아
 
안드로이드 DB, 서버 연동하기
안드로이드 DB, 서버 연동하기안드로이드 DB, 서버 연동하기
안드로이드 DB, 서버 연동하기은아 정
 
Spring batch와 함께 하는 TDD
Spring batch와 함께 하는 TDDSpring batch와 함께 하는 TDD
Spring batch와 함께 하는 TDDSanghyuk Jung
 
Ndc2011 성능 향상을_위한_데이터베이스_아키텍쳐_구축_및_개발_가이드
Ndc2011 성능 향상을_위한_데이터베이스_아키텍쳐_구축_및_개발_가이드Ndc2011 성능 향상을_위한_데이터베이스_아키텍쳐_구축_및_개발_가이드
Ndc2011 성능 향상을_위한_데이터베이스_아키텍쳐_구축_및_개발_가이드cranbe95
 
새로쓴 대용량 데이터베이스 솔루션 1분리형일체형테이블
새로쓴 대용량 데이터베이스 솔루션 1분리형일체형테이블새로쓴 대용량 데이터베이스 솔루션 1분리형일체형테이블
새로쓴 대용량 데이터베이스 솔루션 1분리형일체형테이블Gordon Lee
 
R 프로그램의 이해와 활용 v1.1
R 프로그램의 이해와 활용 v1.1R 프로그램의 이해와 활용 v1.1
R 프로그램의 이해와 활용 v1.1happychallenge
 

Similar to Database Entity, 정규화에 대해 알아보자.pdf (20)

[211] HBase 기반 검색 데이터 저장소 (공개용)
[211] HBase 기반 검색 데이터 저장소 (공개용)[211] HBase 기반 검색 데이터 저장소 (공개용)
[211] HBase 기반 검색 데이터 저장소 (공개용)
 
Amazon aurora 2
Amazon aurora 2Amazon aurora 2
Amazon aurora 2
 
[스프링 스터디 1일차] 템플릿
[스프링 스터디 1일차] 템플릿[스프링 스터디 1일차] 템플릿
[스프링 스터디 1일차] 템플릿
 
101102 endofdb select.1_rdbms
101102 endofdb select.1_rdbms101102 endofdb select.1_rdbms
101102 endofdb select.1_rdbms
 
6.테이블만들기
6.테이블만들기6.테이블만들기
6.테이블만들기
 
엑셀왕국
엑셀왕국엑셀왕국
엑셀왕국
 
Fundamentals of Oracle SQL
Fundamentals of Oracle SQLFundamentals of Oracle SQL
Fundamentals of Oracle SQL
 
실전 DataSnap!
실전 DataSnap!실전 DataSnap!
실전 DataSnap!
 
MariaDB 마이그레이션 - 네오클로바
MariaDB 마이그레이션 - 네오클로바MariaDB 마이그레이션 - 네오클로바
MariaDB 마이그레이션 - 네오클로바
 
PostgreSQL Deep Internal
PostgreSQL Deep InternalPostgreSQL Deep Internal
PostgreSQL Deep Internal
 
Git - Level 2
Git - Level 2Git - Level 2
Git - Level 2
 
Database design
Database designDatabase design
Database design
 
비동기 파일 로딩
비동기 파일 로딩비동기 파일 로딩
비동기 파일 로딩
 
Intro KaKao ADT (Almighty Data Transmitter)
Intro KaKao ADT (Almighty Data Transmitter)Intro KaKao ADT (Almighty Data Transmitter)
Intro KaKao ADT (Almighty Data Transmitter)
 
스프링 데이터 레디스 엘라스틱 발표자료
스프링 데이터 레디스 엘라스틱 발표자료스프링 데이터 레디스 엘라스틱 발표자료
스프링 데이터 레디스 엘라스틱 발표자료
 
안드로이드 DB, 서버 연동하기
안드로이드 DB, 서버 연동하기안드로이드 DB, 서버 연동하기
안드로이드 DB, 서버 연동하기
 
Spring batch와 함께 하는 TDD
Spring batch와 함께 하는 TDDSpring batch와 함께 하는 TDD
Spring batch와 함께 하는 TDD
 
Ndc2011 성능 향상을_위한_데이터베이스_아키텍쳐_구축_및_개발_가이드
Ndc2011 성능 향상을_위한_데이터베이스_아키텍쳐_구축_및_개발_가이드Ndc2011 성능 향상을_위한_데이터베이스_아키텍쳐_구축_및_개발_가이드
Ndc2011 성능 향상을_위한_데이터베이스_아키텍쳐_구축_및_개발_가이드
 
새로쓴 대용량 데이터베이스 솔루션 1분리형일체형테이블
새로쓴 대용량 데이터베이스 솔루션 1분리형일체형테이블새로쓴 대용량 데이터베이스 솔루션 1분리형일체형테이블
새로쓴 대용량 데이터베이스 솔루션 1분리형일체형테이블
 
R 프로그램의 이해와 활용 v1.1
R 프로그램의 이해와 활용 v1.1R 프로그램의 이해와 활용 v1.1
R 프로그램의 이해와 활용 v1.1
 

More from Ho Jeong Im

Packet에 대해서 알아보자.pdf
Packet에 대해서 알아보자.pdfPacket에 대해서 알아보자.pdf
Packet에 대해서 알아보자.pdfHo Jeong Im
 
REST에 대해 알아봅시다.pdf
REST에 대해 알아봅시다.pdfREST에 대해 알아봅시다.pdf
REST에 대해 알아봅시다.pdfHo Jeong Im
 
HTTP2에 대해서 알아보자.pdf
HTTP2에 대해서 알아보자.pdfHTTP2에 대해서 알아보자.pdf
HTTP2에 대해서 알아보자.pdfHo Jeong Im
 
허프만 코드에 대해 그림으로 알아보자.pdf
허프만 코드에 대해 그림으로 알아보자.pdf허프만 코드에 대해 그림으로 알아보자.pdf
허프만 코드에 대해 그림으로 알아보자.pdfHo Jeong Im
 
Browser Principle에 대해 알아보자.pdf
Browser Principle에 대해 알아보자.pdfBrowser Principle에 대해 알아보자.pdf
Browser Principle에 대해 알아보자.pdfHo Jeong Im
 
CPU Scheduling 알고리즘에는 무엇이 있을까? .pdf
CPU Scheduling 알고리즘에는 무엇이 있을까? .pdfCPU Scheduling 알고리즘에는 무엇이 있을까? .pdf
CPU Scheduling 알고리즘에는 무엇이 있을까? .pdfHo Jeong Im
 
HTTP가 가지는 특징에는 무엇이 있을까.pdf
HTTP가 가지는 특징에는 무엇이 있을까.pdfHTTP가 가지는 특징에는 무엇이 있을까.pdf
HTTP가 가지는 특징에는 무엇이 있을까.pdfHo Jeong Im
 
DP 알고리즘에 대해 알아보자.pdf
DP 알고리즘에 대해 알아보자.pdfDP 알고리즘에 대해 알아보자.pdf
DP 알고리즘에 대해 알아보자.pdfHo Jeong Im
 
OS Process, Thread, CPU Scheduling에 대해 알아봅시다.pdf
OS Process, Thread, CPU Scheduling에 대해 알아봅시다.pdfOS Process, Thread, CPU Scheduling에 대해 알아봅시다.pdf
OS Process, Thread, CPU Scheduling에 대해 알아봅시다.pdfHo Jeong Im
 
HSTS, Tunneling에 대해 알아보자 .pdf
HSTS, Tunneling에 대해 알아보자 .pdfHSTS, Tunneling에 대해 알아보자 .pdf
HSTS, Tunneling에 대해 알아보자 .pdfHo Jeong Im
 

More from Ho Jeong Im (11)

Prefix_sum.pdf
Prefix_sum.pdfPrefix_sum.pdf
Prefix_sum.pdf
 
Packet에 대해서 알아보자.pdf
Packet에 대해서 알아보자.pdfPacket에 대해서 알아보자.pdf
Packet에 대해서 알아보자.pdf
 
REST에 대해 알아봅시다.pdf
REST에 대해 알아봅시다.pdfREST에 대해 알아봅시다.pdf
REST에 대해 알아봅시다.pdf
 
HTTP2에 대해서 알아보자.pdf
HTTP2에 대해서 알아보자.pdfHTTP2에 대해서 알아보자.pdf
HTTP2에 대해서 알아보자.pdf
 
허프만 코드에 대해 그림으로 알아보자.pdf
허프만 코드에 대해 그림으로 알아보자.pdf허프만 코드에 대해 그림으로 알아보자.pdf
허프만 코드에 대해 그림으로 알아보자.pdf
 
Browser Principle에 대해 알아보자.pdf
Browser Principle에 대해 알아보자.pdfBrowser Principle에 대해 알아보자.pdf
Browser Principle에 대해 알아보자.pdf
 
CPU Scheduling 알고리즘에는 무엇이 있을까? .pdf
CPU Scheduling 알고리즘에는 무엇이 있을까? .pdfCPU Scheduling 알고리즘에는 무엇이 있을까? .pdf
CPU Scheduling 알고리즘에는 무엇이 있을까? .pdf
 
HTTP가 가지는 특징에는 무엇이 있을까.pdf
HTTP가 가지는 특징에는 무엇이 있을까.pdfHTTP가 가지는 특징에는 무엇이 있을까.pdf
HTTP가 가지는 특징에는 무엇이 있을까.pdf
 
DP 알고리즘에 대해 알아보자.pdf
DP 알고리즘에 대해 알아보자.pdfDP 알고리즘에 대해 알아보자.pdf
DP 알고리즘에 대해 알아보자.pdf
 
OS Process, Thread, CPU Scheduling에 대해 알아봅시다.pdf
OS Process, Thread, CPU Scheduling에 대해 알아봅시다.pdfOS Process, Thread, CPU Scheduling에 대해 알아봅시다.pdf
OS Process, Thread, CPU Scheduling에 대해 알아봅시다.pdf
 
HSTS, Tunneling에 대해 알아보자 .pdf
HSTS, Tunneling에 대해 알아보자 .pdfHSTS, Tunneling에 대해 알아보자 .pdf
HSTS, Tunneling에 대해 알아보자 .pdf
 

Database Entity, 정규화에 대해 알아보자.pdf

  • 3. DB Database : 전자적으로 저장되고 액세스되는 데이터의 조직화된 모음 File System, Cluster, Cloud etc… 하지만, 우리는 DB를 직접 만지는가? ㄴㄴ 참고
  • 4. 왜 DB를 알아야 하는가? - Persistence – - 컴퓨터 전기 나가서 데이터 날아가면 님이 책임? - DB에선… Dirty Write + Transaction Journaling 참고
  • 5. 왜 DB를 알아야 하는가? - Persistence / Dirty Writes – 마지막 쓰기 이후에 수정된 => Dirty 시스템 상태 부분만 저장소에 쓰는 것 => Write Ex) 문서 편집 – 마지막 저장 이후에 실제로 변경된 문서 부분만 저 장함 참고
  • 6. 왜 DB를 알아야 하는가? - Persistence / Journaling – 각 이벤트가 시스템에 적용되기 전에 로그(Journal)에 이벤트를 저장하는 프로세스 시작 시 저널을 읽고, 각 이벤트를 시스템에 다시 적용해 시스템 장애 or 종료 시 데이터 손실 방지 참고
  • 7. 왜 DB를 알아야 하는가? - Persistence / Journaling – Ex) 파일에 기록 – 사진 편집 프로그램 “실행 취소 / 다시 실행“ 이력은 언제든지 편집된 상태를 복구할 수 있는 저널을 구성 Transaction Log / Redo Log 참고
  • 9. Entity 1. 명사 (사람, 장소, 물건, 사건, 개념 등) 2. 업무상 관리가 필요한 관심사 => 업무에 필요하고 유용한 정보를 저장 & 관리하기 위한 집합적인 것
  • 10. Entity 특징 1. 업무에서 필요로 하는 정보 ex) 환자 - 인사업무 영역에서 관리 X, 병원에서는 가장 중요한 Entity가 됨 2. 식별이 가능해야 함 ex) 직원을 구분할 수 있는 방법 - 이름은 X, 사원번호는 가능 3. 인스턴스의 집합 - 하나의 엔터티는 여러 개의 인스턴스를 포함
  • 11. Entity 특징 4. 업무프로세스가 그 엔터티를 반드시 이용해야 함 5. 속성을 포함 6. 관계의 존재 - 다른 Entity와 최소 한 개 이상의 관계가 존재해야 함
  • 13. 정규화 기본 DB에서 데이터 처리할 때 성능이라고 하면? 조회 성능 / 입력, 수정, 삭제 성능 - 정규화 수행 - 데이터를 결정하는 결정자에 의해 함수적 종속을 가지고 있는 일반 속성을 의존자로 해 입력,수정,삭제 이상을 제거하는 것
  • 14. 정규화 기본 테이블을 수정(갱신, 삽입, 삭제)시, 충분히 정규화되지 않은 테이블에서 부작용 발생 가능 - 갱신 이상, 삽입 이상, 삭제 이상 - 참고
  • 15. 정규화 기본 Update anomaly (갱신 이상) 참고 같은 정보가 복수개의 행에서 표현됨 (갱신 - 논리적인 모순) ex) 특정 직원의 주소 변경 시, 여러 개의 레코드를 수정해야 함 why? 그 직원이 속한 모든 주소가 바뀌어 야 함 성공적인 갱신이 이루어지지 않을 경우 (일부만 변경이 되는 경우), 테이블은 모순 상태가 되는 것
  • 16. 정규화 기본 Insertion anomaly (삽입 이상) 참고 어떠한 특정 사실은 전혀 기록되지 않는 경 우 ex) 새 교수를 고용하였을 경우, 그가 아직 맡은 강의가 없어 강의 코드를 null로 하 지 않는 이상 새 교수를 테이블에 추가할 수 없음
  • 17. 정규화 기본 Deletion anomaly (삭제 이상) 참고 데이터의 삭제가 전혀 다른 사실에 대한 데이터의 삭제도 필요로 하게 되는 현상 ex) 한 교수가 임시로 강의를 중단하고자 할 때, 그가 기록된 레코드를 삭제하고자 하면 교수 자체가 사라지게 됨
  • 18. 정규화 기본 정규화 : 점진적이고, 이전 수준이 충족되지 않으면 높은 수준의 DB 정규화를 달성할 수 없음 - 4NF 이상의 정규형은 해결해야 할 문제가 실제로 거의 나타나 지 않음 (학문적 관심!) 참고
  • 19. 정규화 기본 - 전제조건(관계형 모델을 준수하기 위한) : 테이블에는 행을 고유하게 식별하는 기본키가 있어야 함 - ISBN 번호는 책을 고유하게 식별(기본 키 가능) 참고 Title Author Author Nationalit y Format Price Subject Pages Thickness Publisher Publisher Country Publicatio n Type Genre ID Genre Name Beginnin g MySQL Chad Russell American Hardcove r 49.99 520 Thick Apress USA E-book 1 Tutorial Mysql Database Design
  • 20. 정규화 기본 참고 Title Author Author Nationalit y Format Price Subject Pages Thickness Publisher Publisher Country Publicatio n Type Genre ID Genre Name Beginnin g MySQL Chad Russell American Hardcove r 49.99 520 Thick Apress USA E-book 1 Tutorial Mysql Database Design ISBN Title Author Author Nationali ty Format Price Subject Pages Thicknes s Publishe r Publishe r Country Publicatio n Type Genre ID Genre Name 1590593 324 Beginnin g MySQL Chad Russell America n Hardcov er 49.99 520 Thick Apress USA E-book 1 Tutorial Mysql Database Design
  • 21. 제 1 정규화 - 테이블의 각 열에 하나의 값이 있어야 함 (값 집합 or 중첩된 레코드가 포함된 열은 허용 X) 참고 ISBN Title Author Author Nationali ty Format Price Subject Pages Thicknes s Publishe r Publishe r Country Publicatio n Type Genre ID Genre Name 1590593 324 Beginnin g MySQL Chad Russell America n Hardcov er 49.99 520 Thick Apress USA E-book 1 Tutorial Mysql Database Design
  • 22. 제 1 정규화 해결책 -> 별도의 Subject 테이블로 빼자 참고 ISBN Title Author Author Nationali ty Format Price Subject Pages Thicknes s Publishe r Publishe r Country Publicatio n Type Genre ID Genre Name 1590593 324 Beginnin g MySQL Chad Russell America n Hardcov er 49.99 520 Thick Apress USA E-book 1 Tutorial Mysql Database Design ISBN Title Auth or Auth or Natio nality Form at Price Pages Thick ness Publis her Publis her Count ry Public ation Type Genr e ID Genr e Name 15905 93324 Begin ning MySQ L Chad Russe ll Ameri can Hardc over 49.99 520 Thick Apres s USA E- book 1 Tutor ial Mysql Database Design Subject Book
  • 23. 제 1 정규화 (추출된 행의 기본키를 참조하는) 외래키 열을 추가해야 함 참고 ISBN Title Auth or Auth or Natio nality Form at Price Pages Thick ness Publis her Publis her Count ry Public ation Type Genr e ID Genr e Name 15905 93324 Begin ning MySQ L Chad Russe ll Ameri can Hardc over 49.99 520 Thick Apres s USA E- book 1 Tutor ial ISBN# Subject 1590593324 Mysql 1590593324 Database 1590593324 Design Subject Book
  • 24. 제 2 정규화 (추출된 행의 기본키를 참조하는) 외래키 열을 추가해야 함 참고 Title Format Author Author Nationality Price Pages Thickness Genre ID Genre Name Publisher ID Beginning MySQL Database Design and Optimization Hardcover Chad Russell American 49.99 520 Thick 1 Tutorial 1 Beginning MySQL Database Design and Optimization E-book Chad Russell American 22.34 520 Thick 1 Tutorial 1 The Relational Model for Database Management: Version 2 E-book E.F.Codd British 13.88 538 Thick 2 Popular science 2 The Relational Model for Database Management: Version 2 Paperback E.F.Codd British 39.99 538 Thick 2 Popular science 2
  • 25. 제 2 정규화 후보 키의 일부가 아닌 모든 속성은 제목에 종속되지만, 가격만 형식에도 종속됨 제 2 정규화 준수 & 중복성 제거 => 후보 키가 아닌 모든 속성이 후보 키의 일부가 아니라 전체 후보 키에 종속되어야 함 이 Table을 정규화 => 1. Title을 후보키(기본키)로 만들어 후보 키가 아닌 모든 속성이 전체 후보 키에 종속되도록 2. Price를 별도의 테이블로 추출해 Format에 대한 종속성을 가질 수 있도록 함 참고
  • 26. 제 2 정규화 (추출된 행의 기본키를 참조하는) 외래키 열을 추가해야 함 참고 Title Author Author Nationalit y Pages Thickness Genre ID Genr e Name Publisher ID Beginning MySQL Database Design and Optimizati on Chad Russell American 520 Thick 1 Tutor ial 1 The Relational Model for Database Manageme nt: Version 2 E.F.Codd British 538 Thick 2 Popul ar scien ce 2 Title Format Price Beginning MySQL Database Design and Optimizatio n Hardcover 49.99 Beginning MySQL Database Design and Optimizatio n E-book 22.34 The Relational Model for Database Managemen t: Version 2 E-book 13.88 The Relational Model for Database Managemen t: Version 2 Paperback 39.99
  • 27. 제 3 정규화 Author Nationality는 Author에 종속되고, 이는 Title에 종속됨 Genre도 마찬가지 => Genre Name은 Title에 종속된 Genre ID에 종속됨 해결책 - Author Nationalty, Genre Name을 각각의 테이블에 배치해 이행적 기능 종속성을 제거 참고
  • 28. 제 3 정규화 Book 테이블에는 여전히 이행적 종속 기능 존재 참고 Title Author Pages Thickness Genre ID Publisher ID Beginning MySQL Database Design and Optimization Chad Russell 520 Thick 1 1 The Relational Model for Database Management: Version 2 E.F.Codd 538 Thick 2 2 Title Format Price Beginning MySQL Database Design and Optimization Hardcover 49.99 Beginning MySQL Database Design and Optimization E-book 22.34 The Relational Model for Database Management: Version 2 E-book 13.88 The Relational Model for Database Management: Version 2 Paperback 39.99 Author Author Nationality Chad Russell American E.F.Codd British Genre ID Genre Name 1 Tutorial 2 Popular science