[공공 데이터 개발] 0515 sql 데이터 모델링

송경근·2023년 5월 15일
0

DB 배우기

목록 보기
8/8
post-thumbnail

데이터 모델링 과정

1. 초기 사용자의 요구사항에 따른 필요한 데이터 추출
2. 데이터 생성 밑 업데이트
3. 데이터에 수정 삽입 삭제
4. 이후 123번 이 반복됨

데이터의 생명주기
라고 한다

모델링의 중요성

데이터 모델링을 잘못하게 되면 프로젝트 전체가 흔들릴 수 있다!
코드 > 배포 후
필요한 어떤 값이 테이블에 안들어간다면 수정하는데 어마어마한 비용이 들 수 있음

신뢰도에 큰 영향을 준다!

클래스 다이어그램처럼 직접 만들 수 있어야한다.

ER 다이어그램

가장 많이 쓰이는 모델

데이터 모델링:

(자바의 객체와 유사한 개념)
현실 세계의 복잡한 개념을 단순화하고 추상화시켜 데이터베이스화 하는 과정
최종적으로 구축된 데이터베이스는 현실 세계의 개념과 일치

데이터 베이스 생명 주기
	DB 생성과 운영에 관련된 특징

1. 요구사항 수집 및 분석
	a. 요구사항을 드도 분석하여 DB구축의 범위를 정하는 단계
	
2. 설계
	a. 요구사항을 기초로 주요 개념과 업무 프로세스 등을 식별(개념적설계)
	b. 사용하는 DBMS의 종류에 맞게 변환(논리적 설계)
	c. DB 스키마 도출(물리적설계)
	
3. 구현
	a. 생성한 스키마를 DBMS에 적용하여 테이블 객체 생성
	
4. 운영
	a. 구현된 데이터베이스를 기반으로 소프트웨어 구축 서비스 제공
	
5. 감시 및 개선
	a. DB운영에 따른 시스템 무넺 관찰, 자체의 문제점 파악하여 개선

설계 부분

몇 종류의 테이블이 필요한지, 어떤 값을 넣을지 > 개념
상세 속성의 정의(어떤 도메인을 쓸지) 어떤 기본키를 쓸지 정규화를 어떻게 할지 > 논리
인덱스 등 실질적 구현 > 물리

간단하게 설명

구축 > 사용 > 개선 > 재구축 반복!
위에서 말했다
이후에 관계 데이터모델 그리는 방법을 더 자세히 배워야한당..!

요구사항 수집방법

사용자의 요구사항을 명확하게 파악하고 모호성을 제거해 구체적으로 정리해야한다. 

가장 기초적인 내용에 중점을 두고 진행해야 한다

개념적 모델링

설계 할 때 어떤 관계가 있을 지, 어떤 엔티티들이 연관있는지 설계
전체적인 뼈대를 만드는 과정
개체(ENTITY) : 구체적으로 표현할 수 있는 실체 (OBJECT와 유사한 개념, 엄밀히는 다름)
ER 다이어그램 : 개체들의 관계에 대한 도표

논리적 모델링

ER 다이어그램을 사용하려는 DBMS에 맞게 매핑하여 실제 DB로 구현하기 위한 모델을 만드는 과정

과정
	개념적 모델링에서 추출하지않았던 상세 속성까지 추출
	정규화 수행 : 
		DB설계 과정에서 중복 최소화, 데이터 일관성 유지
	데이터 표준화 수행

물리적 모델링

실제 컴퓨터의 저장장치에 저장하기 위한 물리적 구조를 정의하고 구현하는 과정
DBMS의 특성에 맞게 저장구조를 정의해야 DB가 최적의 성능을 낼 수 있음

트랜잭션, 저장공간 설계 측면에서 고려할 사항
	1. 응답시간 최소화
	2. 얼마나 많은 트랜잭션을 동시에 발생시킬 수 있는지 검토
	3. 데이터가 저장될 공간을 효율적으로 배치

트랜잭션: 
	DB에서 일어나는 논리적인 작업 단위
	쿼리나 명령어가 하나의 작업으로 묶여있는 경우 전체가 트랜잭션
	-> 데이터 일관성과 무결성 유지(신뢰도를 높이기 위한 작업)
	
	>트랜잭션에 포함된 코드가 한줄이라도 에러를 일으킬 시 취소
	
	트랜잭션이 시작되면 해당 작업이 모두 완료되어야만 DB에 반영
	만약 하나라도 실패하면 이전 상태로 되돌림(롤백)
	모든 변경사항이 취소

ER 모델

개체(ENTITY) 관계(RELATIONSHIP) 모델

개체 :
	독립적인 의미를 지니고 있는 유무형의 사람 또는 사물, 개체의 특성을 나타내는 속성에 의해 식별
	개체끼리 서로 관계를 가짐

DBMS와 관계 없이 작성 가능

개체:

유무형의 정보를 가지고 있는 독립적인 실체


속성

개체가 가진 성질

값의 형태에 따라 여러 유형으로 구분이 가능함
단순 속성 : 더이상 분해가 불가능
복합 속성 : 독립적인 의미를 가진 속성으로 분해가 가능(단순 속성이 여러 개)
저장 속성 : 다른 속성의 영향없이 단독으로 저장되는 속성
유도 속성 : 다른 저장 속성으로부터 계산되어진 속성 > 점선타원으로 표시
단일값 속성 :  속성
다중값 속성 : 복합 속성은 아니지만 여러 개의 값이 있을 수 있는 속성 > 타원 두개로 표현

관계와 관계 타입

차수에 따른 유형
	관계 집합에 참가하는 개체 타입의 수를 관계 타입의 차수 라고 함 

관계 대응수
	카디널리티 : 두 개체 타입의 관계에 실제로 참여하는 개별 개체 수
	
	>써줘야됨 언제? 이후 ER 다이어그램을 그릴 때

관계 대응수의 최소값과 최대값
	관계에 참여하는 개체의 최소값을 표시하지않는다는 단점을 보완하기 위해 다이어그램에서는 대응수 외에 최소값과 최대값을 관계실선위에 표시함
	

IS - A 관계
	속성 상속이 발생

참여 제약 조건
	개체 집합 내 모든 개체가 관계에 참여하는지 유무에 따라 전체 참여, 부분 참여로 구분

역할
	개체 타입 간의 관계를 표현할 때 각 개체들은 고유한 역할을 담당함
	관계선위에 명시
	일반적으로 관계만으로 알 수 있는 정보라면 생략 가능
	
순환적 관계
	하나의 개체 타입이 동일한 개체 타입과 순환적으로 관계를 가지는 형태

약한 개체 타입
	상위 개체 타입이 결정되지않으면 개별 개체를 식별할 수 없는 종속된 개체 타입
	(독립적인 키로는 존재할 수 없지만 상위 개체 타입의 키와 결합하여 약한 개체타입의 개별 개체를 고유하게 식별)하는 속성을 식별자, 혹은 부분키라고 함

IE 표기법

ER 다이어그램을 더 축약하여 쉽게 표현 > 새 발 표기법

관계는 실선, 점선으로 표기함

강한 관계는 점선으로, 약한 관계는 실선으로 표기함

매핑

완성된 ER 모델을 보고 논리적 모델링 단계를 거칠 때 이루어지는 과정

개체>관계>속성의 순서로 작성

논리적 모델링 과정

값이 들어가지 않은 틀을 만드는 과정

5단계에서 자주 사용할 테이블이라면 쿼리문에서 필요없는 조건문이 늘어날 수 있기 때문에 따로 수업 테이블을 만들어 효율적으로 쿼리를 이용할 가능성을 높일 수 있다

ER 다이어그램

트랜잭션, 동시성 제어, 회복

트랜잭션
	DBMS에서 데이터를 다루는 논리적인 작업 단위
정의하는 이유
	장애가 일어날 때 데이터를 복구하는 작업 단위가 되기 때문.
	DB에서 여러 작업이 동시에 같은 데이터를 다룰 때 작업을 서로 분리하는 단위가 됨
	
>JSP의 AJAX를 통해 구현할 것이다~
	트랜잭션은 전체가 수행되거나 또는 전혀 수행되지 않아야 함

	트랜잭션의 ACID 성질
	
	원자성(ATOMICITY):
		트랜잭션에 포함된 작업은 전부 수행되거나 전부 수행되지않아야함

	일관성(CONSISTANCY):
		수행하기 전이나 후나 DB는 항상 일관된 상태를 유지해야함
		변경 전과 변경 후의 값이 일치해야 한다

	고립성(ISOLATION):
		수행중인 트랜잭션에 다른 트랜잭션이 끼어들어 변경 중인 데이터 값을 훼손하는 일이 없어야 함.
		여러 트랜잭션이 동시에 수행됨.
		동시에 수행되는 트랜잭션은 상호 존재를 모르고 독립적으로 수행 > 고립성
		고립성 유지를 위해서는 트랜잭션이 변경 중인 임시 데이터를 다른 트랜잭션이 읽고 쓸 때 제어가 필요함

	지속성(DURABILITY):
		수행을 성공적으로 완료한 트랜잭션은 변경한 데이터를 영구히 저장해야함


동시성 제어

트랜잭션이 동시에 수행될 때 일관성을 해치지 않도록 트랜잭션의 데이터 접근을 제어하는 DBMS의 기능

갱신손실
	두개의 트랜잭션이 동시에 갱신할 때 발생
	DB에서 절대 발생하면 안되는 현상

	덮어쓰기가 되면서 하나의 트랜잭션이 날아간 경우

락의 개념

서블릿에서 직접 해 볼 것이다~
락과 언락을 기억해 둘 것

2단계 락킹 기법
(기억해둘것)

오손 읽기
	작업 중인 트랜잭션 2가 어떤 이유에서 ROLLBACK 한 경우 트랜잭션 1은 무효가 된 데이터를 읽고 잘못된 결과를 도출하는 현상
	
	트랜잭션 1,2가 하나는 읽고, 하나는 쓸 때 발생
	
반복 불가능 읽기
	트랜잭션 1이 읽고, 트랜잭션 2가 쓸 때 1이 다시한번 데이터를 읽으면 생기는 문제
	이전 결과와 다른 결과가 나오는 현상

유령 데이터 읽기
	트랜잭션 1이 읽고, 트랜잭션 2가 데이터를 삽입하고 트랜잭션 1이 다시한번 데이터를 읽을 때 생기는 현상
	이전에 없던 데이터가 나타나는 현상을 유령 데이터 읽기 현상

로그 :

트랜잭션 고립 수준 명령어
	DBMS는 트랜잭션을 동시에 실행시키면서 락보다 좀 더 완화된 방법으로 문제를 해결하기 위해 제공하는 명령어

로그 :

동작을 기록한 것

회복:
데이터베이스에 문제가 생겼을 때 일관성있는 상태로 되돌리는 DBMS 기능
DB 시스템에서 발생할 수 있는 장애 유형

  시스템 충돌 :
  하드웨어, 소프트웨어의 오류로 주기억장치가 손실되는 것
  미디어 장애:
      헤드의 충돌이나 읽기 장애에 의하여 보조기억장치 일부 데이터가 손실되는 것

응용소프트웨어오류:
DB에 접근하는 소프트웨어의 논리적인 오류로 트랜잭션의 수행이 실패하는 것
자연재해:
화재, 홍수, 지진, 정전 등에 의해 컴퓨터 시스템이 손상되는 것
부주의 혹은 태업:
운영자나 사용자의 부주의로 데이터가 손실되거나 의도적인 손상을 입는 것

로그파일

트랜잭션이 반영한 모든 데이터의 변경사항을 데이터베이스에 기록하기 전에 미리 기록해두는 별도의 DB
DBMS는 트랜잭션이 수행중이거나 수행이 종료된 후 발생하는 DB 손실을 방지하기 위해 트랜잭션의 DB 기록을 추적하는 로그파일을 사용
안전한 하드디스크에 저장되며 전원과 관계없이 기록이 남아있다.

로그파일을 이용한 회복

트랜잭션이 장애로 다시 가동되었을 때 DBMS에서 트랜잭션의 종료나 중단 여부를 판단하여 종료 확정을 하기 위해 REDO재실행을 진행하고, 중단된 트랜잭션은 없던일로 돌리기 위해 UNDO 취소를 진행한다.

재실행(REDO)
	로그파일에 시작이 있고 종료가 있는 경우

 취소(UNDO)
	로그파일에 시작만 있고 종료가 없는 경우.
	트랜잭션이 한 일을 모두 취소시킴

로그 파일을 이용한 회복

즉시 갱신 방법
갱신 데이터 > 로그, 버퍼> 데이터베이스 작업이 부분완료 전에 동시에 진행될 수 있으며, 부분완료가 되면 갱신 데이터는 로그에 기록이 끝난 상태

지연 갱신 방법

체크포인트를 이용한 회복

로그파일 동기화 후 동기화한 시점을 로그파일에 기록해두는 방법을 체크포인트라고한다.

DB 보안과 관리

데이터 베이스 관리 업무

데이터 베이스 접근 권한



역할

데이터베이스 객체에 대한 권한을 모아둔 집합


롤 생성부터 사용자 추가까지의 단계

1. CREATE ROLE
2. GRANT - 만들어진 롤에 권한 부여
3. GRANT - 사용자에게 롤 부여

백업과 복원

워크 밴치에서
SERVER > DATA EXPORT > DATA IMPORT
profile
개발자가 되려는 학생입니다

0개의 댓글