본문 바로가기
DB

DB 3-7/4-1/4-2/4-3/4-4/5-1

by 자바꿈나무00 2023. 1. 19.

3-7

1, 2차 정규화 과정

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

 

 


[자바/DataBase] DB (Chap04-1. 물리적 모델링)

물리적 모델링 개요

 

물리적 모델링?

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

 

논리적 DB설계(데이터 모델링) 물리적 DB설계
DBMS의 종류나 제품에 상관없이 진행(ERD는 어떤 데이터베이스를 사용해도 적용가능) 특정 DBMS를 전제로 진행(적용 DBM의 특성을 고려)

    순서

  1. 사용자 DBMS 결정
  2. 데이터 타입 크기 결정 및 업무분석
  3. 반정규화
  4. 무결성 제약조건 정의
  5. 뷰, 인덱스 정의
  6. 데이터 베이스 생성

ERD 요소 전환

 

 

oracle 데이터 타입

문자형 데이터 타입
숫자형 데이터 타입
이진 데이터 타입


엔티티 도출 실습

 

1. 사원 엔티티 생성

 

2.부서 엔티티 생성

 

클릭
3. 설정 - 타입, 기본값 체크 - 저장
4. 데이터타입, 크기  지정
5. 하단의 '내보내기' 버튼 클릭
6. oracle-> oracle
7. 체크 다 해제

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

 

초록색 버튼쪽 한 번 씩 눌러보고 확인해보기


[자바/DataBase] DB (Chap04-2. 물리적 모델링 실습)요소전환

 

기존에 작업했던 엔티티들이 한 ERD에 한꺼번에 있으면 SQL문 추출 시 같이 추출되니까 새로운 ERD만들어서 논리, 물리 만들어봅시다.

1. 논리,물리 같이 보이게 설정 후 시작

요소 전환

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.  슈퍼타입, 서브타입을 각 테이블로 변환

  • 슈퍼타입 테이블과 서브타입 테이블 간에 필수 혹은 선택의 관계로 구성
  • 소모임 테이블에는 소모임구분 컬럼이 있어 각각의 레코드가 어느 테이블과 연관되는지 구별 가능
  • 레코드- 관계형 데이터 모델에서의 행 또는 튜플에 해당된다. 

방법 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관계가 있다.)

'관계' 개념 설명 그림
'카디널리티' 개념 설명 그림

 

 

 

엔티티 도출 과정

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

엔티티 도출 과정 예시
엔티티 기술서

 

 

ERD란? 

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

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의 요소들을 관계형 데이터베이스의 요소들로 전환하는 것

논리적DB와 물리적DB 특징
물리 모델링 과정

 

 

반정규화(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