앱)아는만큼 보이는 데이터베이스 설계와 구축 요약2

Posted by HULIA(휴리아)
2018. 2. 21. 17:58 백엔드개발/데이터베이스
12. 데이터 독립성의 실무 적용

데이터 독립성 <-> 데이터 종속성

종속의 주체는 애플리케이션

데이터 독립성 필요이유
-유지보수비용 증가
-데이터 중복성 증가
-데이터 복잡도 증가
-요구사항 대응 저하

데이터 독립성의 핵심목적
DB에 대한 사용자의 VIEW와 DB가 실제 표현되는 VIEW를 분리하여 변경에 따른 간섭을 줄이는 것

데이터 독립성 확보시의 장점
-각 VIEW의 독립성 유지, 계층별 VIEW에 영향을 주지 않고 변경할 수 있음
-단계별 SCEMA에 따라 데이터 정의어(DDL)와 데이터 조작어(DML)가 달라짐

데이터 독립성 ANSI 표준 모델
-구조
-독립성
-사상

사용자 ->외부단계->{논리적 데이터 독립성} -> 개념적 단계 -> {물리적 데이터 독립성} -> 내부적 단계 -> DB

데이터 독립성의 구성요소
데이터 베이스 스키마 구조는 3단계로 구분되며 각각은 상호 독립적인 의미를 가지고 고유한 기능을 갖고 있다

외부 스키마(사용자관점, 접근하는 특성에 따른 스키마 구성)
-VIEW단계 여러개의 사용자 관점으로 구성
-사용자 단계로서 개개 사용자가 보는 개인적 DB 스키마
-DB의 개개 사용자나 응용 프로그래머가 접근하는 DB 정의


개념스키마(통합 관점)
-개념 단계 하나의 개념적 스키마로 구성
-모든 사용자 관점을 통합한 조직 전체의 DB를 기술하는 것
-모든 응용 시스템이나 사용자들이 필요로 하는 데이터를 통합한 조직 전체의 DB를 기술한 것으로 DB에 저장되는 데이터와 그들간의 관계를 표현하는 스키마

내부 스키마(물리적 저장 구조)
-내부단계, 내부 스키마로 구성
-DB가 물리적으로 저장된 형식
-물리적 장치에서 데이터가 실제적으로 저장되는 방법을 표현하는 스키마


논리적 독립성
-개념 스키마가 변경되어도 외부 스키마에는 영향을 미치지 않도록 지원하는 것
-논리적 구조가 변경되어도 응용 프로그램에 영향이 없음

물리적 독립성
-내부 스키마가 변경되어도 외부 스키마와 개념 스키마는 영향을 받지 않도록 지원하는 것
-저장 장치의 구조 변경은 응용프로그램과 개념 스키마에 영향이 없음

외부적/개념적 사상(논리적 사상)
-외부적 뷰와 개념적 뷰의 상호 관련성을 정의함

개념적/내부적 사상(물리적 사상)
-개념적 뷰와 저장된 데이터베이스의 상호관련성을 정의함


13. 데이터 무결성의 실무 적용
무결성을 정의할때 가장 중요한 것은 무엇으로부터의 무결성인지를 먼저 결정해야 한다는 것
-> 무결성을 지키려 할때 무결성을 요구하는 주체가 무엇이냐를 먼저 결정해야 한다는 의미

구축하고자 하는 비즈니스의 무결성이다

데이터베이스 설계시 데이터 무결성을 설계하지 않을 경우 문제점
-데이터베이스 테이블에 중복된 데이터가 존재할 수 있게 된다
-참조 무결성 제약 조건에 의해 지켜져야 할 부모와 자식 데이터의 논리적인 관계가 깨지게 된다
-컬럼 무결성 제약 조건에 의해 지켜져야 할 컬럼의 기본값, NULL 값 등이 비정상적으로 데이터베이스에 존재하게 된다


데이터 무결성 : 데이터의 정확성과 일관성이 보장된 상태

데이터 무결성의 종류
-엔티티 무결성:한 엔티티는 중복과 누락이 있을수가 없음. 즉 동일 PK를 가질수 없거나, PK의 속성이 NULL을 허용할 수 없음
-참조 무결성:FK가 참조하는 다른 개체의 PK에 해당하는 값이 PK 값이나 NULL이어야 함
-속성 무결성:속성의 값은 기본값, NULL 여부, 지정된 도메인(데이터타입, 길이)규칙을 준수하여 존재해야 함
-사용자 무결성:사용자의 의미적 요구사항 준수


제약명
-엔티티 무결성:PK, 유니크키
-속성 무결성 : CHECK, NULL/NOT NULL, DEFAULT
-참조 무결성:FK
-사용자 정의 무결성:TRIGGER, USER DEFINE DATA TYPE

DBMS요소
-PK : 지정된 컬럼들이 유일성이 위배되는 일이 없음을 보장
NULL값이 될수 없음

-UI(유니크키): 다중의 보조키 개념을 지원함
지정된 컬럼들이 유일성이 위배되는 일이 없음을 지원함
NULL  허용

-FK:테이블간 논리적 관계가 유지됨을 보장함
FK값은 반드시 참조하는 테이블의 PK값으로 나타나야 함
FK값은 NULL 값을 가질수 있음
CASCADED OPTION:MASTER 삭제시 레코드가 함께 삭제됨
NULLFILELD OPTION:MASTER 삭제시 해당 값을 NULL로 세팅함
RESTRICTED OPTION:FK가 존재하면 MASTER 레코드를 삭제할 수 없음

-DATA TYPE
데이터형을 제한함으로써 데이터 무결성을 유지함

-CHECK CONSTRAINT
데이터를 추가할때마다 SQL 서버가 해당 값이 해당 컬럼들에 지정된 CHECK 제약을 위배하는지를 검사함으로써 데이터 무결성 유지

-DEFAULT
특정 컬럼에 대해 명시적으로 값을 입력하지 않은 경우에 SQL 서버가 자동적으로 지정된 값을 삽입할 수 있도록 함으로써 데이터 무결성 유지
INSERT또는 UPDATE에서 DEFAULT 키워드를 사용할 수 있음

-TRIGGER
테이블의 내용을 변경하려는 특정 사건(DB연산)에 대해서 DBMS가 미리 정의된 일련의 행동(DB 연산)들을 수행하는 매커니즘
DBMS서버에 의해 자동적으로 호출됨
데이터에 대한 변경을 시도할때마다 자동적으로 호출됨(데이터의 변경 전 상태와 변경후의  상태를 사용)
트랜젝션의 철회와 같은 동작을 수행할 수 있음
저장프로시저의 특별한 형태로서 SQL의 모든 기능을 이용할 수 있음
참조 무결성을 위해 사용할수도 있음, 참조 무결성이 위배되는 경우엔 원하는 동작을 하도록 트리거를 구성하면 됨


14. 트랜젝션 관리의 실무적용
트랜젝션이란
데이터 베이스에 행해지는 작업의 논리적인 단위이다

트랜젝션의 특징
트랜젝션이라고 불리기 위해서는 ACID라 불리는 4가지 속성을 가져야 한다
-ATOMICITY(원자성)
트랜젝션은 분해가 불가능한 최소의 단위로서 연산 전체가 처리되거나 전체가 처리되지 않아야 함 - COMMIT/ROLLBACK 연산
-CONSISTENCY(일관성)
트랜젝션이 실행을 성공적으로 완료하면 언제나 모순 없이 일관성 있는 데이터베이스 상태를 보존함
-ISOLOATION(고립성)
트랜젝션이 실행 중에 생성하는 연산의 중간 결과를 다른 트랜젝션이 접근할 수 없음
-DURABILITY(영속성)
성공이 완료된 트랜젝션의 결과는 영속적으로 데이터베이스에 저장됨

프로젝트를 할때 트랜젝션을 분석하는 가장 중요한 이유는 데이터에 대한 업무적인 무결성을 유지할 수 있도록 프로세스와 데이터 설계 사상에 반영하기 위해서이다
그 다음 이유는 데이터베이스에 발생되는 처리량을 분석하여 용량 산정의 근거 자료로 삼아 성능이나 자원을 배치할때 효율성을 높이기 위해서다


15. 정규화의 실무적용
데이터베이스에 정규화를 수행하지 않으면 도대체 무슨일이 발생하는 것일까?
-데이터를 입력할 때 불필요한 데이터와 같이 입력을 해야 한다
-데이터를 수정할때 한건의 데이터만 수정하고 싶어도 불필요하게 여러 건의 데이터를 수정해야 하는 경우가 생긴다
-데이터를 삭제하기 원할때 원하지 않는 데이터까지 삭제되려고 하기 때문에 정상적으로 데이터를 삭제하지 못하고 수정으로 삭제를 처리해야 하는 경우가 생긴다
-부가적으로 과다하게 중복된 데이터가 여러 테이블에 분산되어 있기 때문에 데이터 저장공간이 너무 커져 스토리지의 낭비가 나타난다

정규화 이론
-실세계에서 발생하는 데이터들은 수학적인 방법에 의해 구조화시켜 체계적으로 데이터를 관리할 수 있도록 하는 것

정규화 정의
-속성들 간의 종속성을 분석해서 기본적으로 하나의 종속성이 하나의 릴레이션으로 표현되도록 분해해 나가는 과정
-데이터 처리의 입력이상, 수정이상, 삭제이상을 제거하기 위해 데이터의 함수적 종속성이나 조인속성을 이용하여 분리, 통합하는 방법
-다양한 유형의 검사를 통해 데이터 모델을 더 구조화시키고 개선시켜나가는 절차에 관련된 이론

정규화의 기본원칙
-정보가 손실되지 않아야 하고 중복성이 감소되어야 하며 테이블이 분리되어야 한다는 것(5차 정규화의 경우에는 통합)

정보의 무손실:분해된 릴레이션이 표현하는 정보는 분해되기 전의 정보를 모두 포함하고 있어야 하며, 더 바람직한 구조여야 함
데이터 중복성 감소:중복으로 인한 이상 현상 제거
분리의 원칙: 하나의 독립된 관계성은 하나의 독립된 릴레이션으로 분리하여 표현해야 함


1차 정규화: 복수의 속성값을 갖는 속성을 분리함
2차 정규화:주식별자에 종속(DEPENDENCY)적이지 않은 속성을 분리함
부분 종속(DEPENDENCY) 속성을 분리함
3차 정규화 : 속성에 종속(DEPENDENCY)적인 속성을 분리함
이전 종속(DEPENDENCY) 속성을 분리함
보이스-코드 정규화 : 다수의 주식별자를 분리함
4차 정규화:다가(MULTI-VALUED) 종속(DEPENDENCY) 속성 분리
5차 정규화:결합 종속(DEPENDENCY)일 경우 두개 이상의 N개로 분리함


*위의 개념을 함수적 종속성에 근거하여 표현 하면 다음과 같이 표현됨
함수적 종속성
1)함수적 종속성(FUNCTIONAL DEPENDENCY)
-릴레이션의 한속성 X가 다른 속성 Y를 결정지을 때 Y는 X에게 함수적으로 종속됨. X->Y
-X는 결정자 Y는 종속

2)부분함수적 종속성(2NF)
-X->Y에서도 Y가 X의 부분 집합에 대해서도 함수적으로 종속되는 경우

3)이행함수적 종속성(3NF)
-릴레이션 R에서 속성A->X이고 X->Y이면 A->Y임

4)결정자 함수적 종속성(BCNF)
-함수적 종속이 되는 결정자가 후보키가 아닌 경우
-즉, X->Y에서 X가 후보키가 아님

다중값 종속성(MULTIVALUED DEPENDENCY, 4NF)
-한 관계에 둘 이상의 독립적 다중값 속성이 존재하는 경우
-X, Y, Z 세개의 속성을 가진 릴레이션 R에서, 속성쌍(X,Z) 값에 대응하는 Y값의 집합이 X값에만 종속되고 Z값에는 독립이면 Y는 X에 다중값 종속된다고 하고 X->Y로 표기함

조인종속성(JOIN DEPENDENCY, 5NF)
-둘로 나눌 때에는 원래의 관계로 회복할 수 없으나 셋 또는 그 이상으로 분리시킬 때에는 원래의 관계를 복원할 수 있는 특수한 경우임


정규화에 대해 자세히는
한빛미디어 데이터베이스 설계와 구축이라는 책을 참조