인공지능 개발자 양성 과정

데이터베이스의 정석 요약 (ch.1데이터베이스개념/ch.2데이터베이스시스템/ch.3관계형데이터모델)

AI gina 2022. 4. 25. 10:45

ch1. 데이터베이스 개념

1. 데이터베이스와 정보 시스템
 - 더이상 쪼갤수 없는 의미있는 값 & 가장 작은 단위로 영구 보존 (원소)
 - 정보 시스템 안에는 가공 이전의 데이터나 가공 이후 생성된 정보 저장소가 반드시 필요
   -> 데이터베이스

1-2. 데이터와 정보 
 - 데이터 : 정형화 데이터, 데이터간의 관계를 맺어주는 관계형 데이터베이스(RMDB) MySQL(무료,서버 최대동접2만이내가능), Oracle(유료, 보안 및 성능 좋음), SQLite(모바일용)
 - 정보

데이터와 정보의 관계
데이터, 정보의 연쇄적 흐름
 - 보통 정보 시스템의 결과물이 특정 사용자의 의사 결정에 활용 될 수 있다면 정보로 간주
 - 데이터와 정보는 연쇄적인 처리 과정 안에 서로의 입.출력으로 반복 사용될 수 있다.

1.3. 정보 시스템의 발전
 - 정보시스템 : 데이터 수집, 저장해 두었다가 다양한 방식으로 처리 및 가공함으로써 의사결정에 
   필요한 정보를 생성하는 소프트웨어 체계

정보 시스템의 종류
정보 시스템의 발전 과정
 - 전통적 파일 정보 시스템의 처리방식
   -> 문제점1) 데이터 종속성의 증가
   -> 문제점2) 데이터 중복성의 증가
   -> 문제점
       - 데이터 중복성 문제는 줄어들 수 있지만 여전히 파일 단위의 동시 공유나 보안만 가능하여 다수의 사용자 지원에 제한됨
       - 대용량 데이터에 대한 공유나 보안, 장애 발생시 회복 등의 처리가 어려움
  - 데이터베이스 시스템의 등장
    -> 데이터 종속성 문제를 공통의 데이터 모델과 표준 데이터 언어를 이용하여 해결
    -> 데이터 중복성 문제를 통합 저장소를 이용하여 해결
    -> 데이터베이스 접근을 DBMS가 제공

1.4. 데이터베이스 시스템의 장단점 (p25~27 **읽어볼것**)
     - **무결성 (결점이 없는 성질을 갖고 있는 데이터, 제약 조건과 범위에 일치하는 정확성, 저장된 데이터 값이 실제 값과 얼마나 정확히 일치하는 지 뜻하는 의미적 정확성)
     - 표준성 (ANSI, 어떤 언어에서도 접근이 가능하고 일관된 데이터를 보내줘야 함)
     - 통합성 
     - 안정성 (Hadoop 이용해서 개발, 백업과 회복)
     - 가용성 (해당 데이터를 언제 어디서나 접근 가능해야 함, 클라우드)
       *Cloud (Private, Public 영역으로 나뉨)
       *블록체인 (LG CNS에서 블록체인 기술 플랫폼 운영 **확인해볼것**)


2. 데이터베이스의 기본 개념      
2-2. 데이터베이스의 정의
  - 공용 데이터의 저장소
  - 통합 데이터의 저장소
  - 운영 데이터의 저장소
  - 저장 데이터의 저장소

2.3. 데이터베이스의 특성 (=필수조건)
  - 실시간 접근
  - 끊임없는 변화
  - 동시 공용 
    (*단, 권한부여 통해서 일반, 관리자 접근 차등해야 함)
  - 내용 기반 참조

==========================================================

ch.2. 데이터베이스 시스템
1. 데이터베이스 시스템의 구성요소
1.1 데이터베이스 시스템의 개념
  - 데이터베이스 (DB)
  - 데이터베이스 관리 시스템 (DBMS)
  - 데이터베이스 시스템 (DBS)

1.2 데이터베이스 사용자
  - 일반 사용자 = 최종 사용자 (end user)
  - 응용 프로그래머
  - 데이터베이스 관리자 (DBA, super user)

데이터베이스 관리자
  - DBA의 주요 역할

1.3 데이터 언어
  - SQL
    1) 데이터 정의어(DDL) 
       - 새로운 데이터베이스 구조를 정의하고 데이터베이스 구조를 변경하는 명령어 집합
       - 데이터베이스 스키마를 명세하기 위해 사용
       - CREATE, ALTER, DROP

    2) 데이터 조작어(DML) 
        - 데이터베이스 안의 데이터를 실제 조작하는 명령어 집합
        - DBMS에게 데이터의 입력, 수정, 삭제 및 검색을 요청하기 위해 사용
        - INSERT, UPDATE, DELETE, SELECT 
          *******외우기******
          insert into 테이블명 (컬럼명 리스트...) values (데이터리스트...)
          update 테이블명 set 컬럼명 = 값 (**= 할당의 의미)
          delete from 테이블명
          select 컬럼명 리스트 from 테이블명
          *ANSI SQL (데이터베이스 종류에 상관없이 모두 적용되는 언어)
 
          조건 : where 컬럼명 = 데이터 (**= 같다는 의미)


    3) 데이터 제어어(DCL)
        - 데이터베이스를 제어하고 통제하기 위해 사용하는 명령어 집합
        - DBMS가 데이터베이스를 올바르게 관리하도록 함
        - GRANT, REVOKE, CREATE USER, 
          COMMIT, ROLLBACK  <- Transaction

1.4. 데이터베이스 관리 시스템

DBMS의 필수기능
 - 정의 기능
 - 조작 기능
 - 제어 기능

사용자 유형별 활용 SQL 및 DBMS 기능

1.5 데이터베이스 서버
 - 데이터베이스 서버
   -> 데이터베이스(소프트웨어)가 구동되는 서버의 역할을 하는 컴퓨터.
 - 클라이언트/서버 컴퓨팅 환경
   -> 데이터베이스 서버 안에는 데이터베이스가 물리적으로 저장됨.
        *server(컴퓨터) -> UNiX, ZENiX(운영체제) 병렬처리방식 갖고 있음. => LiNUX

1.5 데이터 모델
 - 데이터 모델
   -> 데이터 구조를 만들기 위한 개념 틀. concept framework.
  - 데이터 모델의 종류
   -> 계층형
   -> 네트워크형
   -> 관계형
   -> 객체 지향형
   -> 객체 관계형 **많이 쓰임

데이터 모델의 종류
   1) 계층형 데이터 모델 (HDM)
      - 트리 형태의 계층 구조 : 하나의 상위 부모와 여러 개 하위 자식들을 갖는 구조
      - 1:n 관계 대용량 데이터베이스 처리 유리
   2) 네트워크형 데이터 모델(NDM)
      - 네트워크 형태로 변환한 모델
      - m:n 표현이 용이함 
   3) 관계형 데이터 모델(RDM)
      - 테이블 형태의 저장 구조, 테이블의 키(key) 열을 통해 표현하는 저장 방식
      - 기본키(중복x)와 외래키를 통해 논리적 관련성을 표현함으로써 유연하고 이해하기 쉬움 
        **기본키와 외래키는 테이블 생성할때 미리 지정. (어떤 칸에 어떤 키를 참조할 것인지 미리 선언)
        **참조되는 테이블을 먼저 생성. / 삭제할 때는 참조하는 데이블 먼저 삭제.

     4) 객체 지향형 데이터 모델(OODM)
       - 객체 단위 저장 구조, 연관된 데이터 사이의 관계를 객체 식별자로 표현하는 저장 방식.
       - *클래스(설계도 개념), *상속, *자료추상화 
         -> 설계도로 만들어진 것이 객체
         -> 클래스를 통해서 객체를 만드는 과정 -> instance화 과정
         -> 상속은 부모 기능을 자식쪽에 물려주는 개념. (자식쪽은 기능 추가 가능)
         -> 캡슐화는 최소단위로 클래스를 설계한다는 개념. 

      5) 객체 관계형 데이터 모델 (ORDM)
        - 관계형 데이터 모델을 기본 개념으로 하고, 객체 데이터 모델의 객체 특성을 일부 반영.
        - 범용적인 관계형 데이터모델을 기반으로 하고, 필요시 특정 분야 위해 객체 개념 추가.

2. 3단계 데이터베이스
2.1 스키마(schema)
   - 데이터베이스 안에 저장되는 데이터 구조와 제약 조건 등을 정의한 것.
   - 동일한 데이터 베이스라도 접근 관점에 따라 스키마는 다를 수 있음.
   - 주로 데이터 구조에 관심을 가지므로, 대부분 스키마의 세부 제약조건보다 
     릴레이션 구조만 간략히 명세함
2.2 3단계 데이터베이스의 구조
    - 외부 스키마, 개념 스키마, 내부 스키마

스키마의 종류
  1) 외부스키마
   - 사용자가 외부에서 바라보는 관점에서 개인적 데이터베이스 구조 정의한 것. 
   - 데이터베이스 전체가 아닌 일부만 대상으로 한정하여 명세한 구조.
   - 각 사용자별로 외부에서 보는 관점 다양하므로 여러 외부 스키마 존재.
  
   2) 개념스키마
   - 모든 사용자들의 관점을 통합하여 전체 조직관점에서 데이터베이스 구조 정의한 것.
   - 통합된 데이터베이스의 논리적 부분을 표현.
   - 조직이나 기관의 데이터베이스 전체를 명세한 구조로서 간단히 스키마라고 부름. 
   - 데이터베이스에는 하나의 개념 스키마만 존재**

   3) 내부스키마
   - 저장 장치의 관점에서 전체 데이터베이스의 내부 구조를 정의.
   - 개념 스키마에 대한 시스템 내부의 저장 방식을 표현 
   - 내부 레코드의 형식이나 배치 방법, 인덱스 등에 대한 명세 포함
   - 내부 스키마도 데이터베이스 당 하나만 존재 **

2.3 데이터 사전
   - DBMS는 스키마와 스키마 사상 정보를 데이터 사전이라는 별도 저장소에 관리
   - 데이터 사전
     -> 다양한 데이터베이스 객체에 관한 모든 데이터를 포함,
         DBMS가 스스로 생성하고 유지,
         사용자뿐만 아니라 시스템 관리 위해서도 필요한 저장 공간으로 그 자체가 하나의 데이터베이스
    - 사용자 데이터베이스
    - 시스템 데이터베이스 (시스템 카탈로그) : 데이터 디렉토리, 데이터 사전
    - 메타 데이터 : 데이터베이스 자체에 관한 데이터

2.4 데이터 독립성
   - 데이터베이스 구조의 특징 : 응용 프로그램과 데이터 사이의 독립성을 제공
   - 데이터의 논리적 구조나 물리적 구조가 변경되더라도 응용 프로그램이 영향을 직접 받지 않는 특성
    

ch3. 관계형 데이터 모델
1. 관계형 데이터 모델
1.1. 데이터 모델 구성요소
  - 데이터 모델의 3요소
     -> 데이터 구조 (data structure)
     -> 연산 (operation) : 데이터를 어떤 방식으로 처리하는지 표현
     -> 제약조건 (constraint) ** : 데이터구조 안에 데이터 저장할때의 
         구조적 제약사항과 연산 적용할때 행위적 제약사항 표현

1.2 관계형 데이터 모델의 구성 요소
 - 관계형 데이터 모델
    -> 테이블 형태의 '릴레이션'을 통해 데이터를 저장하고, 데이터 간의 관련성도 표현. 
 - 관계형 데이터 모델의 3요소
    -> 데이터를 저장하는 기본 데이터 구조는 릴레이션(테이블 형태)
    -> 릴레이션의 데이터를 처리하는 연산은 관계 대수를 사용
    -> 제약 사항을 무결성 제약 조건으로 명세

2. 관계형 데이터 구조
 - 릴레이션(relation)
    -> 관계형 데이터 모델의 핵심 요소로 특별한 의미를 갖는 '테이블'
        단순 테이블처럼 보이지만 테이블 이상의 많은 의미와 제약사항이 숨겨져 있음.
    -> 관련된 여러 릴레이션들로 데이터베이스를 구성

릴레이션 관련 용어
  1) 속성과 튜플
    - 속성(attribute)
      -> 테이블의 열(column) -> field 라고도 함.
      -> 데이터를 표현하는 가장 작은 논리적 단위.
      -> 의미적으로 더 이상 분해할 수 없는 원자 값만 사용.
      -> 릴레이션이 표현하는 대상의 주요 특성들을 서로 다른 이름으로 구별하여 표현.

     - 튜플(tuple)
      -> 테이블의 각 행(row) -> 관측치, record 라고도 함.
      -> 현실 세계의 개체(entity)를 표현
      -> 각 속성 값(attribute value)들의 조합으로 구성
      -> '학생' 릴레이션에서 하나의 튜플은 학생 개체 한 명의 정보를 표현

   2) 도메인(domain)
    - 각 속성이 취할 수 있는 모든 값들의 집합을 정의한 것 -> 명세서 라고도 함.
    - 데이터 값들의 '유형과 크기, 범위'를 '정의'
    - 관계형 데이터 모델은 속성 이름과는 별개로 각 도메인을 고유한 이름으로 정의
    - 속성 이름은 각 도메인이 릴레이션에서 담당하는 역할의 이름을 지정
    - 같은 릴레이션 안의 속성들은 같은 이름을 사용할수 없기 때문에 
      도메인이 같더라도 속성이름은 서로 달라야 함.
    - 하나의 도메인이 둘 이상의 속성에 사용 될 수 있기 때문에 속성 이름이 다르더라도 
      도메인이 같다면 속성들의 값 비교 가능.
p69 - 도메인 정의 예)
직원 개체의 나이 속성, '학생' 개체의 '학년' 속성을 고려
- 나이 속성의 도메인 AGE : 1~150 정수값 집합
- 학년 속성의 도메인 SYEAR : 1~5 정수값 집합

**관계형 데이터베이스에서는 튜플(레코드)의 순서가 없다.
**튜플의 속성을 나타내는 유니크한 값이 반드시 필요하다.
**CHAR(4) : 문자가 4byte까지 허용 (나머지 공간도 유지)
**VARCHAR(4) : 저장후 나머지 공간 없어짐 (가변성)
**한글 자음(2byte), 모음(2byte), 자음+모음(2byte), 오라클에서 3byte
**INT : 뒤에 괄호 없으면 기본 4byte로 잡음
 
    3) 카디널리티와 차수
      - 카디널리티(cardinality)
        : 릴레이션 안의 전체 튜플의 개수, 입력, 수정, 삭제 등 통해 계속 변화. 동적특성

      - 차수(degree)
        : 릴레이션을 구성하는 전체 속성의 개수, 정적특성

**DB 용어
  relation, tuple ->cardinality(tuple 개수), attribute -> degree(attribute 개수) 

  SQL 용어
  table, record, column(field)
 
  R 용어
  D.F(d.s), 관측치, 변수


2.2 릴레이션의 구성 요소
  - 릴레이션
    -> '릴레이션 스키마'와 '릴레이션 인스턴스' 2가지 요소로 구성

릴레이션 스키마
 - 릴레이션의 이름과 릴레이션 안에 포함된 모든 속성의 이름들로 정의
 - 테이블 첫번째 행인 헤더 부분에 표현
 - 릴레이션 내포(relation intension) 라고도 부름
 - 정적

릴레이션 인스턴스
 - 어느 한 시점에 릴레이션에 존재하는 튜플들의 집합
 - 헤더부분 제외한 나머지 모든 행들의 집합
 - 릴레이션 외연(relation extension) 이라고도 부름
 - 동적

데이터베이스 스키마와 데이터베이스 인스턴스
 - 데이터베이스 스키마
 - 데이터베이스 인스턴스

2.3 릴레이션의 특성
 1) 튜플의 유일성
   - 릴레이션 안에는 똑같은 튜플이 존재할 수 없음
   - 하나의 릴레이션은 튜플들의 집합이기 떄문에 모든 튜플은 서로 달라야 함
   - 모든 튜플은 다른 튜플과 구별되는 유일한 속성 값이 있어야 함
 2) 튜플의 무순서성
   - 릴레이션의 튜플 사이에 순서는 의미가 없음
   - 집합은 포함한 원소들 사이에 순서가 없음
   - 튜플의 집합인 릴레이션 역시 튜플 사이에 순서를 갖지 않음
 3) 속성의 무순서성
   - 속성 값은 속성의 순서가 아닌 속성 이름에 의해 참조됨
 4) 속성의 원자성
   - 릴레이션을 구성하는 모든 속성 값은 의미적으로 더이상 분해할 수 없는 하나의 원자 값만 갖음
   - 릴레이션은 다중 값 속성이나 복합 속성을 허용하지 않음

3. 제약조건
3.1. 릴레이션의 키(key)
 - 각 튜플을 유일하게 식별할 수 있는 하나 이상의 속성 집합
   -> 릴레이션은 항상 투플의 유일성 규칙을 충족하므로 중복 튜플 허용하지 않음
   -> 결과적으로 모든 튜플은 속성 값이 하나 이상이 서로 다름.
 - 키 선정
   -> 릴레이션 인스턴스는 계속 변화하므로, 미래의 입력 값까지를 포함한 속성의 본질적인 의미를
      고려하여 키 지정 여부를 결정
 - 키 종류 : 후보키, 슈퍼키, 기본키, 대체키, 외래키 등


슈퍼키(SK: Super Key)
 - 튜플을 유일하게 식별할 수 있는 속성 집합
  -> 유일성 조건만 만족하면 됨
  -> 릴레이션 안에 여러 후보키가 있을 수 있고 모든 후보키는 슈퍼키임
  -> 후보키를 포함하는 속성 집합도 모듀 슈퍼키가 됨

후보키(CK: Candidate Key)
 - 튜플을 유일하게 식별할 수 있는 속성들의 최소 집합
 - **유일성과 **최소성 조건 **모두 만족해야 함.
 - 키 속성 중에서 속성을 하나라도 생략하면 튜플을 유일하게 식별할 수 없게 되는
   꼭 필요한 최소한의 속성만으로 구성된 키

기본키(PK: Primary Key)
 - 튜플을 대표하도록 선정된 후보키
 - 후보키가 하나일 경우, 바로 기본키가 됨
 - 후보키가 여러 개일 경우, 다음 기준 충족하는 후보키 우선적 고려 
   -> 값이 자주 변경 되지 않는 정적인 속성
   -> 널 값을 가질 수 없는 속성
   -> 속성 개수가 작은 후보키
   -> 속성 값의 물리적 크기가 작은 후보키

대체키 (AK: Alternate Key)
 - 기본키로 선정되지 못한 후보키
 - 릴레이션 안에서 기본키는 하나지만 대체키는 여러개 존재할 수 있음

외래키(FK: Foreign Key)
 - 특정 릴레이션의 기본키를 참조하는 속성 집합
 - 외래키의 값은 참조되는 기본키 값 중에서 값 하나를 참조하여 취함
 - 외래키 값은 동일한 값을 기본키 값으로 갖는 튜플과의 관계를 자연스럽게 표현
 - 기본키와 외래키는 관계형 데이터 모델의 핵심 개념.

##1. P.K -> 테이블 생성
    2. F.K 참조하는 테이블 생성

기본 무결성 제약 조건
 - 개체 무결성 제약조건
   -> 기본키로 지정한 모든 속성은 널 값을 가질 수 없고, 릴레이션 안에서 중복되지 않는 유일한 값을 가져야 한다는 제약사항
   -> 기본키 제약조건
   -> 개체의 유일성을 선언하는 제약 조건
   -> DBMS에게 기본키를 선언함으로써 즉시 적용


 - 참조 무결성 제약 조건
   -> 외래키로 지정한 속성은 참조하는 릴레이션의 기본키 속성 값과 일치하는 값이나 널값만을
      가져야 한다는 제약 사항
    -> 외래키 제약 조건
    -> 개체의 참조 관계를 선언하는 제약 조건
    -> 의미적으로 연관된 두 릴레이션 튜플 사이의 일관성 유지를 위해 사용

추가적인 제약 조건
 - 도메인 무결성 제약 조건 : 튜플의 모든 속성 값이 각 속성의 도메인에 속한 값만을 취해야 한다
 - 유일성 제약 조건 (키 제약조건) : 모든 키 속성 값이 서로 중복되지 않고 유일해야 한다

4. 관계 연산
 - 관계연산(relation operation)
   -> 관계형 데이터 모델에서 릴레이션을 조작하기 위한 연산

 - 관계 연산의 대표적인 2가지 표현 방법
   - 관계 대수
     -> 사용자가 필요로 하는 데이터를 획득하는 절차 (즉, "연산들의 적용 순서를 명세")
     -> 실행 순서를 순차적으로 명세하는 절차적 표현 방법
   - 관계 해석
     -> 사용자가 필요한 데이터가 무엇인지, "연산들의 최종 결과만을 명세"
   - 관계 대수와 관계 해석
     -> 둘다 기능이나 표현력은 동등함
     -> SQL 언어의 작성 방법이나 내부 처리 방식의 이론적 기반을 제공

 

*출처: MySQL과 모바일 웹으로 만나는 데이터베이스의 정석 (배움터)