< 데이터베이스 설계 >

1. 요구사항 분석

2. 개념적 설계

3. 논리적 설계

4. 물리적 설계와 구현

 

▷ 데이터 베이스 설계 : 사용자(클라이언트 = 고객)의 다양한 요구사항을 고려하여 데이터 베이스를 생성하는 과정

▷ 관계데이터베이스의 대표적인 설계 방법

  - E-R 모델과 변환 규칙을 이용한 설계 (Entity-Relationship Diagram)

  - 정규화를 이용한 설계

 

 ▶ E-R 모델과 릴레이션 변환 규칙


< 데이터베이스 설계 >
1.  요구사항 분석결과물 : 요구사항 명세서

     : 사용자의 요구사항을 수집하고 분석 (업무에 필요한 데이터가 무엇인지)

 

▷ 주요 작업

  1) 데이터베이스를 실제로 사용할 주요 사용자의 범위 결정

  2) 사용자가 조직에서 수행하는 업무를 분석

  3) 면담(인터뷰), 설문조사, 업무관련 문서 분석등의 방법을 이용해 요구사항 수집

  4) 수집된 요구사항에 대한 분석결과를 요구사항 명세서로 작성

※ 검증할수 있는 도구 : USECASE 다이어그램(UML:Unified Modeling Language)

 

2. 개념적 설계  결과물 : E-R 다이어그램(개념적 스키마)
    : 요구사항을 분석한 결과에 따른 데이터베이스의 구성요소들을 판별

      개념적 데이터 모델을 이용해 개념적 구조로 표현 ( 일반적으로 E-R 모델 이용)

      요구사항 분석결과를 기반으로 중요한 개체(Entity)를 추출하고 개체간의 관계를 결정하여

      E-R 다이어그램으로 표현

 

*   E-R 다이어그램은 많은 공간을 차지한다.

 

▷ 주요 작업

  1) 개체(Entity) 추출, 각 개체의 주요 속성과 키 속성 선별 

  2) 개체간의 관계(Relationship) 결정

  3)  E-R 다이어그램으로 표현(= 개념적 스키마)

 

 (1) 개체 추출

* 개체 : 저장할만한 가치가 있는 중요 데이터를 가진 사람이나 사물을 나타내는 명사 추출
 (고유명사 제외, 광범위한 의미의 명사는 제외, 의미가 같은 여러명사 여러개는 대표 하나만)

ex ) 한빛 마트에 회원으로 가입하려면 회원아이디, 비밀번호, 이름, 나이, 직업을 입력       가입한 회원에는 등급적립금이 부여된다. 회원은 회원아이디로 식별한다.

☞ 결과 

    개체 : 회원

    '회원' 개체의 속성 : 회원아이디(식별자), 비밀번호, 이름, 나이, 직업, 등급, 적립금

    '회원' 개체의 키 속성(식별자) : 회원아이디

 (2) 개체간 관계 결정

    : 동사를 찾아라. (2개의 명사 사이에서 기술하는 동사)

      찾아낸 관계에 대해 매핑 카디널리티(차수) 특성 결정 = 1 : 1(일대일), 1 : n (일대다), n: m(다대다)

      ※ 다대다 관계는 개념적 모델에서만 가능하다.

ex ) 회원은 여러상품을 주문할 수 있고, 하나의 상품을 여러 회원이 주문할 수 있다.

       회원이 상품을 주문하려면 주문에 대한 주문번호, 주문수량, 배송지, 주문일자 정보를 유지해야한다.

☞ 결과 

회원 - 상품 ( 1: n 일대다)

관계 = '주문'  / 관계는 속성을 가질수 있다.

'주문'-관계의 속성 : 주문번호, 주문수량, 배송지, 주문일자

 

3. 논리적 설계  결과물 : 논리적 스키마 = 릴레이션 스키마(표)

  - 개념적 설계의 결과물인 E-R다이어그램(개념적 스키마)을 사용
  - DBMS에 적합한 논리적 스키마 설계

  - 릴레이션(표)을 만듦. --------->> 추후 정규화 과정이 중요함. 정규화과정을 거쳐서 오류를 없앰
  - DBMS의 종류가 설정됨 및 속성의 데이터 타입이 결정됨.

   (데이터타입, 데이터 저장 길이, Null값 허용여부, Defualt 기본값, 제약조건 등)

 

▷ 주요 작업 : E-R 다이어그램을 릴레이션 스키마(표)로 변환
  1) 규칙 1 : 모든 개체는 릴레이션으로 변환한다.

                   개체의 이름-> 릴레이션의 이름/식별자->기본키(pk)
                   복합속성인 경우 단순속성만 릴레이션으로 변환 
                   주소(복합속성): 기본주소(단순)+상세주소(단순) => 주소를 지우고 단순속성만

  2) 규칙 2 : 다대다(n:m) 관게는 릴레이션으로 변환한다 (개념적 설계에서만 표현 가능)

                   관계의 이름 : 릴레이션 이름

                   관계의 속성 : 릴레이션의 속성

  3) 규칙 3 : 일대다(1:n) 관계는 왜래키(fk)로 표현한다

  4) 규칙 4 : 일대일(1:1) 관계는 왜래키(fk)로 표현한다

  5) 규칙 5 : 다중 값 속성은 릴레이션으로 변환한다. (제1정규화의 일부)

 

4. 물리적 설계  결과물 : 물리적 스키마 

DBMS로 구현 가능한 물리적 구조 설계

=> 분할된 테이블이 적절하게 분할 되었는지확인. 분할과 통합과정
     테이블 설계에 대해서 경험과 지식이 겸비되었을때 할 수 있음.
    한글 -> 실제로 구현시킬 영문명으로 바꿈


5. 구현 : SQL 문을 작성한 후 이를 DBMS에서 실행하여 데이터 베이스 생성


번외1)
2. 개념적 설계 
회원->상품 1:다 상품->회원 1:다 => 다:다
주문서-결제(1:1) 혼인(1:1) 
차수(카디널리티) : 1:1, 1:다, 다:다
E-R다이어그램 : 사각형 : 엔터티 / 마름모 : 관계(릴레이션쉽) / 타원 : 속성
소속 관계, 전체 차수 표현(부서->사원 1:다)
고객-상품(주문이라는 관계) 전체차수 다:다 = M : M


상품번호 : 상품을 구별하기위해 만듦 : 인조키
상품번호를 미리 만들수도 있다


요구사항에서 ->명사(주어, 목적어)로 추출 => 엔터티와 속성이 됨.
주종관계 주인: 엔터티(고유명사, 제외, 동의어는 한개만) , 종속된 것이 속성



회원-상품 동사 : 주문하다(상품, 회원-명사2개)=> 관계OK, 유지하다(주문-명사1개)=> 관계X


상품(엔터티)은 상품번호(식별자)로 식별한다.
제조업체(엔터티)는 제조업체명(식별자)으로 식별한다.
게시글(엔터티)은 글번호(식별자)로 식별한다.


번외2)

* 프로토타입 : 비용과 시간문제로 잘 안씀
* 한번에 모든것을 끝낼수는 없다.
* 개정이력 작성
* SVN 서버 : 개발 처음~끝까지 히스토리가 들어있음(두번째 프로젝트에 쓸것). 코드관리.버전관리
* 기준을 클라이언트(사용자) 위주로 생각하자


 

< 데이터베이스 모델링 E-R  설계 도구 설치 및 실습 >

EXERD 검색 -> 이클립스 기반 지능형 E-R 모델링도구
https://www.exerd.com
다운로드-플러드인->링크주소복사->이클립스 실행
->워크스페이스 주소 : D:\A_TeachingMaterial\02_Oracle 변경
->화면우측상단 워크벤치WORKBench?
help메뉴-인스톨 뉴 소프트웨어-Work with : http://exerd.com/update/exerd/3.x 
이름 : eXERD 주소 : http://exerd.com/update/exerd/3.x
체크박스 체크 후 next-> 동의 -> finsh -> intalling software(설치중 확인)
이클립스에서 수행하는 작업의 종류
NEW-EXERD File-새프로젝트
다른 모델링 도구 엔코아 DA#5 (개념 모델링까지 지원 가능, BUT 어려움)
경고 메세지 => 이클립스만 RESTART? => RESTART NOW 선택

작업단위 퍼세티브 OPEN Perspective => eXERD 현재 등록안됨...=> 추후 재시도
D드라이브- 설치- 26 이클립스

 

 

< exerd 실습>
테이블 누르고 - 사원 -테두리 선택된 채로 스페이스바 : 속성
논리이름: 한글 /물리이름 : 영어
컬럼 : 기본키 더블클릭 : pk /열쇠모양 / 데이터타입 : char(n->4)
사원이름 데이터타입 : varchar2(30)
부서명 데이터타입 : varchar2(50)
N.N : not null 
null : null을 허용하겠습니다.
사업장
사업장번호 데이터타입 : number(4)

=> 릴레이션 스키마로 변경
다대다 관계는 릴레이션으로 변경
부모키-자식키로 가져오면서 자식키의 기본키가 됨 : 왜래키(f)
사업장번호 : 고동색(기본키) / f: 왜래키 / 근무의 사원번호 : 일반 컬럼(f) 군청색
사업장이 부모이고 사업장 자재가 자식(1:다 => 다 : 자식)
사업장 자재명코드로 이미 구별할 수 있기 때문에 사업장-사업장자재는 비식별 관계이다
=> 논리설계 끝

exerd 메뉴
포워드 엔지니어링 : 순공학 => 테이블을 만들수 있는 코드가 나온다
리버스 엔지니어링 : 역공학 

※ 데이터 입력할때도 부모키 먼저 입력하고 자식키 입력

 

< 관계형 데이터모델 개념 >

▶ 관계형 데이터 모델

 - 현재 가장 많이 사용되는 데이터베이스 모딜

 - 데이터가 최소한의 의미를 가지는 테이블(표) 형태로 표현

 - 사용자가 데이터를 쉽게 다룰수 있도록 해주는 구조적 질의어(SQL)를 제공


■ 릴레이션(relation)

 - 테이블이 되는 개체 

 - 관계형 데이터 베이스에서 정보를 구분하여 저장하는 기본단위
 - 동일한 데이터베이스 내에서는 같은 이름을 갖는 릴레이션이 존재할 수 없다 

 - 테이블의 행(튜플) 과 열(컬럼) 


■ 튜플(tuple :행) 

 -실제 데이터가 저장되어있는 행.

 - 자바 객체지향언어에서는 '인스턴스' 라고 부름
 - 개체에 속한 구성원들의 개개의 정보를 표현
           고정된 갯수를 가진게 아니라 다양하다. 

            튜플은 하나도 존재하지 않을 수도 있다(데이터 0) (튜플은 0개 이상 / 속성은 1개 이상)
           
■ 속성(attribute / 값) 

 - 릴레이션에서 관리하는 구체적인 정보 항목(필드)

 - 관리해야 할 필요가 있는 속성들만을 선택하여 릴레이션에 포함

 - 속성은 고유한 이름을 가지며 동일 릴레이션 내에는 같은 이름의 속성이 존재할 수 없음

 - 릴레이션 안에 속성은 1개 이상 있어야함. 

  나중에 컬럼이 됨. 결정자(x)의 값이 변하면 종속자(y)의 값이 변한다.
  테이블에서 결정자(x) 역할을 해주는 컬럼= 기본키(pk) = 기본키가 변하면 다른 속성들도 변한다.
 

■ 도메인(domain)

- 각 속성들이 가질수 있는 집합의 범위

  성별 : 남, 여  => 데이터베이스 설계자가 설계할 때 도메인으로

                             'Gender'라는 도메인의 값은 {남, 여} 로 정의

 

 

 

E.F.Codd의 용어 File 시스템의 용어  자주 사용되는 용어
릴레이션 파일 테이블
속성 필드 열(컬럼)
튜플 레코드 행(row)

※ E.F.Codd : 통계학자


< 키(KEY) >

 -  중복여부를 효과적으로 알수 있도록 하는 수단

 

■ 키(KEY) 의 종류

 - 기본키(Primary key : pk)

 - 후보키(Candidaate key)

 - 대체키(Alternate key)

 - 복합키(Composite key)

 - 왜래키(Foreign key)

 

 키 종류 : 기본키(도지사1), 후보키(도지사 후보자3-Candidate) 
  대체키 : 기본키가 안되는 나머지 키 (후보자2)
  프라이머리키= 기본키 (기본키 + 대체키 = 후보키)

 

▷후보키 (Candidaate key)

 - 테이블에서 각 튜플을 구별하는데 기준이 되는 하나 혹은 그 이상의 컬럼(열)들의 집합

   후보키는 테이블에 있는 각 튜플을 고유하게 식별할 수 있어야함.

 - 후보키는 기본키, 대체키로 구분

 

▶ 기본키 (Primary key : pk)  :  튜플을 식별하는 기준으로 사용

 - 후보키들 중 하나

 - 중복된 튜플이 입력되는 것 방지

 - 기본키가 되는 조건 : 속성 값이 'Null' 이어선 안됨 (데이터 없음), 중복 된 속성 값X

 

※ 후보키들 중 기본키로 선택하는 기준은?

 - 해당 테이블을 대표 할 수 있는 것

 - 데이터의 길이가 짧은 것

 - 빈번히 사용되는 컬럼(열)

 

▷ 복합키 (Composite key)

  : 하나의 컬럼이 후보키의 역할을 하지 못하고 두개 이상의 컬럼(열)이 합쳐져야

   후보키의 역할을 하는 경우 (2개의 컬럼이 튜플을 식별)

 

  ※ 복합키 : 하나가지고는 중복이 발생되어서 컬럼이 두개는 있어야 중복이 안됨

▶ 왜래키 (Foreign key)

 - 관계가 있는 테이블들 사이에서 데이터의 일관성을 보장해 주는 키

 - 두 테이블 사이에 존재하며 부모 - 자식 관계이다

    부모테이블의 기본키(pk) = 자식테이블의 왜래키(fk)로 전이된다.

 

관계가 맺어짐 : 서로 공통의 컬럼을 공유한다
   왜래키(foreign key) : 관계를 맺는 역할을 하는. 자식의 역할을 하는 키 = 왜래키
   기본키(primary key) : 주민등록번호 (겹쳐지지 않음)

 

 

※ 데이터의 무결성

 - 참조 무결성

   : 자식테이블에 데이터를 입력하거나 수정 할때 부모테이블에 해당 데이터가 있는지를 검증

     부모테이블의 데이터를 수정하거나 삭제할때 자식테이블에 해당 데이터를 사용하는지를 검증

 - 개체 무결성

 - 도메인 무결성


▶ 관계형 데이터 모델의 구성요소

 - 데이터의 구조 (릴레이션 - 튜플/속성)

 - 관계연산 (집합연산/ 관계연산)

 - 제약조건 (무결성의 규칙 - 참조 무결성 등)

 

→ 릴레이션(표) = 튜플(행) 과 속성(컬럼)의 집합으로 구성
→ 릴레이션 스키마 (제일 첫번째 행)
→ 전체 표 = 테이블 스키마
→ 릴레이션에 저장된 튜플은 유일한 값을 가져야 함
→ 행의 순서 상관없음
→ 모든 속성 값은 원자값이어야한다(atomic value) : 더이상 나뉘어 질 수 없는 논리적인 최소 단위

 

 

▷ 관계형 데이터모델의 성공요인
 1) 단순하고 이해하기 쉬운모델
 2) 수학적 이론을 기반으로 한 모델
 3) 비절차적인 질의어 지원(SQL) /  변수없음, 반복문 없음, 상수 없음
 4) 지속적인 투자와 기술 지원


< 데이터베이스 설계 및 구현 >

1. 요구사항 분석

2. 데이터 모델링

3. 테이블 설계

4. ER-Win 이용한 모델링 /eXERD



I.E표기 방법 (릴레이션 이름 : 회원 (기본키) / 릴레이션 : 회원번호(일반항목, 일반 속성))
<< 사진첨부 예정
Baker식 표기 방법 : #(기본키 : 회원번호), *(필수항목 : 회원명) 0공백(선택항목 : 전화번호)
관계는 마름모로 표기 (회원 -◇- 상품) 마름모 : 관계 / 타원 : / 엔터티 : 개념모델
다 : 다 관계 없앰 => 회원/상품(부모pk) - 주문(자식pk) : 상속이 됨 (회원번호, 상품번호 =>묶여서 pk)
직선으로 연결되면 부모의 pk->자식 pk 
점선으로 연결되면 부모의 pk->자식의 속성이됨(fk : foregin key 참조 당하는)
1개이상의 컬럼으로 만들어지는 키 : 복합키
주문이라는 릴레이션 -> 속성 : 수량, 날짜
<< 사진첨부 예정




식별자 관계 : 부모가없어지면 자식이 아무 의미가 없어짐(주문서->결제)
비식별자 관계 : 부모가 없어지더라도 자식이 그대로 남아있음
관계가 맺어진 테이블은 삭제 불가능(delete) -> 관계를 없애야 삭제 가능


delete on cascade: 자식테이블 먼저 지우고 부모테이블에서 지움
부서코드를 110으로 하려면 부모에서 110번을 추가하고 자식에서 110으로 바꾸고 부모100을 삭제함
참조 무결성이 안됨 => 삭제연산을 거절
참조 무결성 : 자식테이블에 데이터를 입력하거나 수정할 때 부모테이블 검증
      부모테이블에 데이터를 입력하거나 삭제할 때 부모테이블 검증
=> 개체 무결성
=> 도메인 무결성

 

제약조건 :무결성의 규칙, 유일성, 최소성
참조 무결성의 규칙 
도메인의 무결성 규칙 (대학교 : 1~6학년, 범위 값을 넘어가면 잘못됨. 나이 제한 사이트, 데이터 타입)
 - 속성에서 허용한 가능한 값의 범위를 지정하기위한 제약 조건
 - 속성의 데이터 타입, 길이, 기본키, 유일성, null허용, 허용 값의 범위와 같은 제약 조건 지정 가능


 

< SQL > (Structured Query Langauage) : 구조적 질의 언어

 - 사용자들이 쉽게 사용할 수 있음.

 - 대부분의 DBMS 제품에 동일하게 적용

 - SQL 은 비 절차적언어이다.

   절차적 언어(preocedural language) : 순서,문제지향언어. 변수, 함수, 조건 연산자, 반목문 등 
   비절차적 언어(non- preocedural language) : 컴퓨터의 실행 순서에 관계없이 처리내용을

                                                                          기술할 수 있는 언어(함수x, 변수x)
                                                                           


번외)

 

* 정규화 과정 (6개의 과정) 속성들이 pk에 완전 종속이 되어야 하고 중복이 없어야함. 
조건을 만족하기 위해 테이블을 세분화 한다. -> 관계를 맺어야 함(릴레이션쉽)

 


※정렬 - 어센딩(asc), 디센딩(desc)
입사일이 빠른사람이 작은값(어센딩, 오름차순)
급여가 많은사람부터 적은사람(디센딩, 내림차순)

※디폴트(asc) default value : 생략
제임스 고슬링 : 자바를 만든 사람

 

※ 인덱스 : 키와 주소로 구성(기본키pk 기준으로 인덱스가 만들어짐). 빨리 찾기 위해서(재구성하는데 시간이 걸림)

 

- 프로그램 설치 - 
▷ E-R WIN
CA AllFusion ERwin Data Modeler r7 설치
시리얼 :RPQEU NL3L7 PWQTU 4KBMW C232A
파일-new-logical/Physical(오라클)-ok
로지컬 옆-선택툴키,엔터티,
모델-프로퍼티스-natation 표현방법->IE 로지컬, 피지컬 둘다 (오리발식 표현) 확인=>바커식으로 표현할수 없음
------------------------------------------------------------------------------------------


▶ EXERD 검색 -> 이클립스 기반 지능형 E-R 모델링도구 (이클립스 구버전에 설치)
https://www.exerd.com
다운로드-플러드인->링크주소복사->이클립스 실행->워크스페이스 주소 : D:\A_TeachingMaterial\02_Oracle 변경
->화면우측상단 워크벤치WORKBench?
help메뉴-인스톨 뉴 소프트웨어-Work with : http://exerd.com/update/exerd/3.x 
이름 : eXERD

 

< 데이터 베이스 개론 시작 >

- 제 1장 : 데이터베이스 기본개념

1. 개요

2. 데이터베이스 정의

3. 데이터 처리 시스템

4. 파일관리 시스템 vs 데이터베이스 관리 시스템(DBMS)

5. 데이터 베이스 시스템역사


1.1 데이터와 정보

1) 데이터(data) : 현실세계로부터 관찰이나 측정 등의 수단을 통해 수집한 사실(facts)이나 값(values)

2) 정보(information)

- 데이터는 사실들 그 자체에 대한 일차적인 표현

- 사실들과 이들로부터 유도될 수 있는 유추된 사실들

- 틀정 상황에 대한 의사결정을 내릴수 있는 유용한 해석이나 데이터 상호간의 관계를 의미함.

 

※ 데이터(원본자료)와 정보(추출된 데이터)

 

1.2 메타데이터(Metadata)

- 데이터에 대한 데이터 (데이터 of 데이터 : 핵심데이터만 보관)

- 데이터의 구조(structure)나 제약사항(constraints) 등과 같은 속성(properties)이나

특성(characteristics)을 기술하는 것

 

 

 

('이름' - 속성 attribute-> 컬럼

행 (row, 튜플) , 열(colum, 컬럼)

각 열의 값들의 집합 = 도메인

유형은 사용되어지는 dbms에 따라서 명칭이 달라짐.)

 

1.3 지식(Knowlede) - 기계학습(ai 분야 쪽 사용)


2. 데이터베이스의 정의와 특성

 

2.1 데이터베이스의 정의

: DataBase

중복에 의한 데이터 불일치 최소화시키는 것.

특정 조직내에 다수의 사용자들이 공유할 수 있도록 통합시키고 컴퓨터 저장장치에

저장시킨 운영 데이터의 집합

 

 1) 통합된 데이터(Integrated Data) : 자료의 중복을 배제한 데이터 모임

 2) 저장된 데이터(Stored Dta):컴퓨터가 접근할 수 있는 저장매체에 저장된 자료

 3) 운영 데이터(Operational Data) : 조직의 고유한 업무를 수행하는데 존재가치가 확실하고

                                                        없어서는 안될 반드시 필요한 자료

 4) 공용 데이터(Sharaed Data) : 여러 응용시스템들이 공동으로 소유하고 유지하는 자료

 

※ SQL : 구조적 질의어. 사용자가 얻고싶은 자료를 얻을수 있도록 내리는 명령어.

         (반복실행X/한번 실행하면 끝남. 기능이 약함.이해가 쉽지만 기능 한계점)

※ PLSQL : 변수 사용가용, 분기문, 반복문 사용 가능

데이터들은 명령에 의해 삽입, 삭제 할 수 있음.(조작어 수행) -> 데이터 변경

내용 변경이 휘발되기전에 하드디스크에 저장 시켜야 함. (comit/롤백rollback)

 

2.2 데이터베이스 특징

 1) 실시간 접근(Real-Time Accessibility)

   : 검색이나 조작을 요구하는 질의가 있을 때 현재 데이터 베이스에 수록된 데이터베이스를 사용하여

     실시간으로 처리하고 응답하는 데이터베이스 시스템의 특성.

 2) 계속적인 변화(Continuous Evolution)

   : 데이터베이스의 상태는 동적임. 새로운 데이터의 삽입(Insert), 삭제(Delete), 갱신(Update)으로

     항상 최신의 데이터를 유지

 3) 동시 공유(Concurrent Sharing)

   : 데이터베이스는 서로 다른 목적을 가진 여러 응용자들을 위한 것으로 다수의 사용자가 동시에 

     같은 내용의 데이터를 이용할 수 있어야 함.

 4) 내용에 의한 참조(Content Reference)

   : 데이터베이스에 있는 데이터를 참조할 때 데이터 레코드의 주소나 위치에 의해서가 아니라

     사용자가 요구하는 데이터 내용으로 데이터를 찾는다.


3. 데이터 처리 시스템

3.1 일괄처리 시스템 VS 온라인 처리 시스템

  1) 일괄처리 시스템 : 일정기간동안 데이터를 모아서 일시에 작업을 처리하는 시스템

  2) 온라인 처리 시스템 : 작업 처리요구가 발생하면 즉시 시스템에서 처리함

 

3.2 오프라인 처리 시스템 VS 온라인 처리 시스템

  1) 오프라인처리 시스템 : 특정작업을 처리하는 도중에 저장 데이터에 접근할 수 없는 시스템

  2) 온라인 처리 시스템 : 작업 처리중 저장 데이터를 접근하여 사용할 수 있는 시스템

 

3.3 중앙집중처리 시스템 VS 분산 처리 시스템

  1) 중앙집중 처리 시스템 : 중앙 컴퓨터에 데이터를 집중시켜 처리하는 시스템

  2) 분산 처리 시스템 : 지역적으로 떨어져 있는 컴퓨터에 데이터를 분산시켜 처리하는 시스템


4. 파일관리 시스템 VS 데이터베이스 관리 시스템

4.1 파일관리 시스템 : 파일을 생성, 검색, 조작할 수 있는 소픝웨어 시스템 

 1) 파일관리 시스템 문제점

   - 데이터의 중복이 심각하게 발생

   - 데이터의 불일치가 발생 (삽입이상, 삭제이상, 갱신이상 등 오류 발생)

   - 응용 프로그램이 파일의 형식에 종속

   - 프로그래밍 언어마다 파일의 형식이 다름

 

※ 파일관리시스템을 개선.보완 => 데이터 베이스 관리 시스템

 

4.2 데이터베이스 관리 시스템(DBMS : DataBase Managment System)

 1) 데이터베이스 관리 시스템의 장점

   - 데이터의 중복이 줄어듬 (아예 없진 않음)

   - 데이터의 불일치를 피할 수 있음

   - 응용프로그램과 데이터의 독립성이 유지됨

   - 응용프로그램과 데이터 형식의 표준화를 가함

   - 데이터의 접근의 보안과 무결성 유지가 용이함

 

※ 참조 무결성 : 검색하고자 하는 데이터가 해당 테이블에 있는지 확인

 

 2) 데이터베이스 관리 시스템의 단점

   - 시스템을 이용하는 비용이 비쌈

   - 파일관리 시스템을 이용하는 것보다 상대적으로 속도가 느림

  (테스트 버전 출시 (처리데이터의 용량이 다를뿐 기능은 같음)/처리 속도가 느림)

 

※ 관계형 데이터베이스 시스템 : 테이블-테이블이 관계를 맺어야 하고. 동일한 칼럼(열)을 공유함

                                                     (부모-자식 테이블)

 

기본키가 있어야함 : null값이 아니여야함. 중복되서는 안됨

왜래키 : 자식테이블에서는 왜래키 사용

길이가 없는 데이터 : null (전체 컴퓨터 사용 개념) = white space

java 문자열 "" (쌍따옴표)

오라클 문자열 ''(그냥 따옴표)

다:다 개념적까지만 허용됨.

부모에 있는 기본키(상품번호/회원번호)를 자식(주문)이 기본키로 가져옴(중복 안됨)


5. 트랜잭션

   : 논리적 기능을 수행하는 일련의 연산 집합 작업 단위 (반드시 comit이나 롤백으로 끝나야함)

     회복 및 병행 수행시 처리되는 작업의 논리적 단위

※ 정상적 종료 : COMMIT(기억장치에 저장)

※ 비정상적 종료 : ROLLBACK. 트랜잭션 수행 전으로 돌아감

 

5.1트랜잭션의 특성

1) 원자성

   : 트랜잭션의 처리는 완전히 끝마치치 않을 경우 해당 수행이 이루어지지 않는 것과 같아야 함

     오류가 발생되면 그 트랜잭션은 모두 취소되야함.

    모든 명령어를 완벽히 수행하여 comit 되지 않으면 안된다. 중간에 오류가 발생되면 철회한다(aborted)

2) 일관성

   : 트랜잭션들 간의 영향이 한 방향으로만 전달되어야 한다.

     수행을 성공적으로 완료 한 후 고정요소는 변동이 없어야 한다

 

<하나의 트랜잭션 수행>

구매테이블 => 판매테이블 : 날짜, 상품번호, 수량 저장 => 재고테이블에서 재고 관리

=> 회원테이블에서 마일리지 처리

이 수행 과정에 회원번호, 상품번호(고정요소)가 바뀌면 안된다. => 일관성

 

3) 고립성

   : 하나의 트랜잭션이 수행되어 완료되지 않는 중간에 다른 트랜잭션이 접근하지 못하도록 한다

     한 회원이물건을 구매해서 장바구니에서 구매내역 테이블을 자동으로 만들어줌 = 트리거

4) 지속성 : 성공적인 트랜잭션의 수행 후에는 반드시 데이터베이스에 영원히 반영해야 한다.

 

 

 

 

+ Recent posts