3-7
1, 2차 정규화 과정
- 부모-자식 관계로 고민해서 엔티티 추출
- 필수/선택 관계 고민
- 비-식별관계라고 적어둔 후에 식별관계(주식별자 역할)고민

[자바/DataBase] DB (Chap04-1. 물리적 모델링)
물리적 모델링 개요
물리적 모델링?
논리적 설계의 산출물인 ERD의 요소들을 관꼐형 데이터베이스의 요소들로 전환하는 것
논리적 DB설계(데이터 모델링) | 물리적 DB설계 |
DBMS의 종류나 제품에 상관없이 진행(ERD는 어떤 데이터베이스를 사용해도 적용가능) | 특정 DBMS를 전제로 진행(적용 DBM의 특성을 고려) |
순서
- 사용자 DBMS 결정
- 데이터 타입 크기 결정 및 업무분석
- 반정규화
- 무결성 제약조건 정의
- 뷰, 인덱스 정의
- 데이터 베이스 생성

oracle 데이터 타입



엔티티 도출 실습








물리DB의 작업은 테이블 기술서를 할 수 있어서 유용하다.

[자바/DataBase] DB (Chap04-2. 물리적 모델링 실습)요소전환
기존에 작업했던 엔티티들이 한 ERD에 한꺼번에 있으면 SQL문 추출 시 같이 추출되니까 새로운 ERD만들어서 논리, 물리 만들어봅시다.


요소 전환
1. 테이블명, 컬럼명 지정
* 현재 작성된것과 같은 이름으로 할 필요 없다.
고객
MEMBER
MEM_NAME
ADDRESS
품목
PRO_NO
PRO_.. 이런 식으로 하나씩 지정되지 않은 것들 변경해주기
2. 데이터 타입, 크기 지정
* 관계 설정이 외래식별자로 되어 있는 것은 이름은 달라도 타입은 같아야한다.
3. 내보내기


[자바/DataBase] DB (Chap04-3. 반정규화) De-Nomalization
반정규화란?
- 정규화 작업이 완료된 후 데이터 물리 모델링 과정 중 시스템의성능 향상과 개발 과정의 필요성, 운영의 단순화 추구
- 중복은 감수하고 대신 데이터베이스의 성능 향상 (조회/검색 속도에 초점)
- 정규화를 통한 데이터 무결성도 중요하지만, 다수 사용자가 동시 이용하는 환경에서 일정 성능을 유지하는 것도 매우 중요
CASE 1. 엔티티의 통합 (두 엔티티의 통합에 의한 반정규화)
- 항상 / 대부분 조인에 의한 검색을 하고, 검색이 빈번히 이뤄지는 두 개의 엔티티를 대상으로 함.

(정규화)쪼개놔야 데이터 중복 가능성을 감소시킬 수 있는데, 사용량이 늘 것 같아서 합쳐두면(반정규화) 데이터 중복이 존재할 수 있다.
그래서 데이터 불일치가 일어나지 않도록 대안이 잘 마련되어 있어야 한다.
CASE 2. 수직 분할에 의한 반정규화
- 엔티티의 튜플 수 및 속성의 수가 매우 많고, 엔티티의 속성들이 그룹화되어 각 그룹이 특정 부서 혹은 응용 프로그램에 의해서만 사용될 때

CASE 3. 수평 분할에 의한 반정규화
- 한 테이블 내에서 튜플의 조회 빈도에 따라 엔티티를 분할

[자바/DataBase] DB (Chap04-4. 아크관계)
아크관계(Arc relationship)
- 어떤 엔티티가 두 개 이상의 엔티티의 합집합과 관계를 갖는 걸 배타적 관계(Exclusive relationship) 혹은 아크관계(Arc relationship)라고 한다. 이러한 아크 관계는 동일한 관계가 서로 다른 한 개 이상의 엔티티와 배타적으로 관계를 지닐 때 단일화 하면서 발생한다.
- 한 순간에 한 가지만 들어온다는 의미이다.
- 늘 optional표시가 되어야 한다.

방법1. 슈퍼타입을 통한 테이블로 변환
- 서브 타입에 있는 모든 컬럼을 슈퍼타입에 하나로 통합하고, 각각의 서브타입 정보를 구분하기 위한 구분 컬럼인 '소모임분류명'이 필요하다.


슈퍼타입 이용의 장단점
장점 | 단점 |
1. 서브타입 구분 없는 데이터 접근이 편함 -> select할 때 조인이 필요 없다. 2. view를 활용해 각 서브타입 조회 및 수정 가능하다. |
1. 테이블의 컬럼 수가 증가된다. 2. 처리할 때 마다 서브타입의 구분이 필요한 경우가 많다. 3. 특정한 서브타입을 NOT NULL로 제한할 수 없다. (언제 null이 들어갈지 모르니까) 대신 분류명은 추가해줘야 한다. |
방법2. 각 서브타입 테이블로 변환
- 각 서브타입 컬럼에 슈퍼타입에 있는 모든 속성을 포함하도록 구성한다.


서브타입 이용의 장단점
장점 | 단점 |
1. 처리할 때 서브타입의 유형 구분이 필요하다. 2. 단위 테이블의 크기가 감소한다. 3. 불필요한 컬럼이 줄어든다. |
1. 전체적인 데이터를 처리하는 경우 UNION이 발생한다. 2. 여러 테이블을 합친 VIEW는 조회만 가능하다. -> UID 유지관리가 어렵다. 3. 복잡한 처리의 SQL 통합이 어렵다. |
방법3. 슈퍼타입, 서브타입을 각 테이블로 변환
- 슈퍼타입 테이블과 서브타입 테이블 간에 필수 혹은 선택의 관계로 구성
- 소모임 테이블에는 소모임구분 컬럼이 있어 각각의 레코드가 어느 테이블과 연관되는지 구별 가능
- 레코드- 관계형 데이터 모델에서의 행 또는 튜플에 해당된다.

무조건 1:1관계, 참여도는 선택
방법3. 슈퍼타입과 서브타입을 각 테이블로 변환하는 방법의 장단점
장점 | 단점 |
1. 저장 공간이 상대적으로 적음 2. 서브타입에 해당하는 속성 정보만 조회하는 경우 SQL 작성이 편함 -> 공통 속성인 슈퍼타입과 서브타입의 각 속성을 구분하기 편함 3. 서브타입의 컬럼 수가 많은 경우 유리 -> 통합하면 컬럼 수가 너무 많아지니까 |
1. 슈퍼타입의 속성과 서브타입의 정보를 같이 처리하면 항상 조인이 발생하여 성능 저하 2. 관리해야 할 테이블 객체가 많아져 테이블의 구조를 변경하기 어려움 -> Merge /Migration 등의 개선작업이 어려움 |
배타적 관계의 예)외국인 - 내국인 등등 평소에 생각해보기
[자바/DataBase] DB (Chap05-1. DB 모델링 종합설명)
소프트웨어 개발과정(개발 프로세스)

DB 모델링의 주요 개념
1) 개념적 설계
: 요구분석 단계에서 정의된 핵심 개체와 그들 간의 관계를 바탕으로 ERD를 생성하는 단계
2) 논리적 설계
: 개념 설계에서 추상화된 데이터를 구체화하여 개체, 속성을 테이블화하고 상세화 하는 과정
3) 물리적 설계
: 논리적 설계 단계에서 표현된 데이터(ERD)를 실제 컴퓨터의 저장장치에 어떻게 표현할 것인가(관계형 데이터 베이스로 전환)
- 엔티티(Entitiy) : 업무의 관심 대상이 되는 정보를 갖고 있거나 그에 대한 정보를 관리할 필요가 있는 유형, 무형의 사물(개체) (유형, 무형, 문서, 이력, 코드)
- 속성(Attribute) : 엔티티에서 관리해야 할 최소 단위 정보 항목(관심이 있는 항목)을 말하며 엔티티는 하나 이상의 속성을 포함(기본, 유도, 설계)
- 인스턴스(Instance): 엔티티의 속성으로 실제로 구현된 하나의 값
- 관계(Relationship) : 두 엔티티 사이의 관련성을 나타낸다.
- 카디널리티(Cardinality) : 각 엔티티에 속해 있는 인스턴스들 간에 수직적으로 어떤 관계에 있는지를 나타낸다. (종류로는 1:1, 1:N, M:N관계가 있다.)


엔티티 도출 과정
- 업무 분석 단계 이후, 분석 자료(업무 기술서, 장부, 전표 등)로부터 엔티티 도출.
- 정해진 공식은 없으나 경험이 없으면 다음의 과정들을 거쳐서 엔티티 기술서를 작성하길 권장한다.
- 엔티티 후보 풀과 엔티티 리스트를 그린다.
- 분석 대상 문서를 보고 명사를 찾아 표시한다.
- 명사 하나하나에 대해 속성인지 엔티티인지 구분한다.
- 중복된 명사나 유사한 의미의 명사는 하나로 정리한다.
- 엔티티 후보 풀에 있는 명사들을 검토한다.
- 도출된 엔티티에 대하여 구축될 시스템에 데이터를 관리할 필요가 있는지 판단한다.


ERD란?
개체 관계라고도 하며 요구 분석사항에서 얻어낸 엔티티와 속성들을 그림으로 그려서 그 관계를 도출한 것이다.

주식별자(Primary Identifier)
- 엔티티에 소속된 인스턴스들을 구별하는 기준 역할을 하는 속성
- 주식별자는 유일성, 최소성, 불변성, 존재성의 특징이 있다.
- 주식별자는 하나가 아닌 여러 속성일 수 있다. (복합키)
- 엔티티의 속성 중 주식별자 속성이 없다면 새로운 속성을 만들어준다. (인위적 주식별자)
외래식별자(Foreign Identifier)
- 관계가 있는 두 엔티티를 부모, 자식 엔티티로 구분한 후 부모의 주식별자와 공통 속성이 자식에게도 존재하면 속성을 외래식별자로 지정한다.
- 자식 엔티티에 부모 엔티티 주식별자 공통 속성이 없을 경우 자식에게 속서을 추가한 후 외래식별자로 지정한다.
엔티티 간의 부모-자식관계
- 상호 관계가 있는 두 엔티티 중에서 어느 쪽의 정보가 먼저 생성이 되는가에 따라 결정
- 부모 엔티티의 정보가 있어야만 존재 가능한 것이 자식 엔티티
참여도
- 참여도에는 필수(mandatory),선택(optional) 두 가지가 있다.
- 어떤 기준이 되는 엔티티가 있을 때 반드시 대응되는 엔티티가 존재해야 한다면 필수, 존재할 수도 있고 아닐 수도 있는 건 선택
카디널리티
- 두 개의 엔티티 간의 관계에서 엔티티에 속해 있는 인스턴스들을 수적으로 표현한 것이다.
- 인스턴스가 1개와 대응된다면 '|' 로 표시한.
- 인스턴스가 다수와 대응된다면 까마귀발 표기법을 사용한다.

식별관계(Identifying Relationship)
- 1:N관계에서 외래 식별자가 자식 엔티티의 주식별자의 일부가 되는 관계이다.
- PEK로 표시된다. (외래 식별자가 주식별자의 역할도 한다.)
비식별관계(Non-Identifying Relationship)
- 1:N관계에서 외래 식별자가 자식 엔티티의 주식별자 역할을 하지 못하고 단순히 새로운 속성으로 추가되는 관계
- FK로 표시된다. (단지 외래식별자의 역할만 한다.)
- 점선으로 관계를 표시한다.

엔티티 관계 설정

데이터 모델링 목적

논리적 모델링
정규화와 정규화의 목적

논리적 모델링 제 1 정규화
: 엔티티에서 하나의 속성이 복수의 값을 갖도록 설계되었을 때 하나의 속성이 단일 값을 갖도록 하는 것

논리적 모델링 제 1 정규화 순서

논리적 정규화 제 2 정규화
: 주식별자가 아닌 속성 중에서 주식별자 전체가 아닌 일부 속성에 종속된 속성을 찾아 제거하는 것

논리적 정규화 제 2 정규화 순서

논리적 정규화 제 3 정규화
: 주식별자가 아닌 속성들 중에서 종속 관계에 있는 속성을 찾아 제거하는 것

논리적 정규화 제 3 정규화 순서

물리적 모델링이란?
: 논리적 설계의 산출물인 ERD의 요소들을 관계형 데이터베이스의 요소들로 전환하는 것


반정규화(CTRL + F누르고 검색해서 위에서 찾기)
'DB' 카테고리의 다른 글
DB가 뭘까 (0) | 2023.01.22 |
---|---|
DB3-1~3-4 (0) | 2023.01.15 |
ERD 1-1~2-4 (0) | 2023.01.15 |