[ 정보 환경 ]

 

  • 데이터 : 실세계에서 관찰 또는 측정된 사실 또는 값
  • 정보 : 상황에 따라 적절한 결정을 할 수 있게하는 지식

 

  • 데이터베이스(DB) : 한 조직의 여러 응용 프로그램들이 공유하여 사용하는 통합하고 저장된 운영 데이터의 집합
  • 데이터베이스 관리 시스템(DBMS) : 데이터베이스를 사용할 수 있게 하는 소프트웨어

 

데이터베이스 조건

  • 통합된 데이터
    • 최소의 중복
    • 통제된 중복
  • 저장 데이터
    • 컴퓨터가 접근할 수 있는 매체에 저장되어야 함
  • 운영 데이터
    • 조직의 업무를 위한 데이터
  • 공용 데이터
    • 조직의 여러 사람들과 응용 프로그램이 공유하여 사용

 

데이터베이스 특성

  • 온라인 접근성
    • 질의에 대한 온라인 실시간 응답
  • 계속적인 변화
    • 지속적으로 데이터 삽입, 갱신, 삭제
  • 동시 공용
    • 여러 사용자가 동시에 데이터를 접근할 수 있음
  • 내용에 의한 참조
    • 데이터의 조건 또는 특성만 알려주면 그것을 접근이 가능
    • 데이터의 주소 또는 위치를 알 필요는 없어야 함

 

데이터 구성

  • 개체
    • 현실 세계의 개념 또는 정보의 단위 (ex. 사람, 학생, 교수, 강의실 등)
    • 속성 들로 구성
  • 관계
    • 개체(집합)들 간의 관계

 

데이터베이스 구조

  • 논리적 구조
    • 일반 사용자 또는 응용 프로그래머 입장의 데이터베이스 구조
    • 관계형 데이터베이스의 경우 레코드들로 이루어진 테이블
  • 물리적 구조
    • 저장 장치에 기록되는 물리적인 배치 구조
    • ex. 디스크 블록, 포인터 체인, 인덱스, 오버플로우

 

 

[ 데이터베이스 관리 시스템 ]

 

파일을 이용한 데이터 처리의 문제점

  • 데이터  종속성
    • 파일의 내부 구조에 응용 프로그램이 영향을 받음
  • 데이터 중복성
    • 동일한 내용의 데이터가 중복해서 관리
    • 데이터 중복으로 인한 문제점
      • 데이터 일관성 상실
      • 보안성 취약
      • 경제성 취약
      • 데이터 무결성 취약

 

데이터베이스 관리시스템

  • DBMS 필수 기능
    • 데이터 정의 기능
      • 사용할 데이터의 구조를 정의할 있어야
    • 데이터 조작 기능
      • 데이터의 검색, 삽입, 삭제, 갱신
    • 데이터 제어 기능
      • 데이터 무결성 유지 기능
      • 권한과 보안 기능
      • 동시 사용에 따른 병행 제어 기능
  • 데이터베이스 관리시스템 (DBMS) 장단점
    • 장점
      • 데이터 중복 최소화
      • 데이터의 공유 사용
      • 데이터 무결성 유지
      • 데이터의 보안 보장
      • 조직 데이터의 표준화
      • 데이터 요구의 조정
    • 단점
      • 운영비 증대
      • 특정 응용 프로그램의 복잡화
      • 복잡한 백업과 회복
      • 시스템 취약성 ( DBMS 장애는 업무 중단 )

 

데이터 독립성

  • 데이터베이스의 논리적 또는 물리적 구조가 변경되더라도 응용 프로그램이 영향을 받지 않게함
    • 논리적 데이터 독립성
    • 물리적 데이터 독립성
  • 데이터 구조간에 사상 기능이 필요

 

 

[ 데이터베이스 시스템의 구성 ]

 

데이터베이스 시스템

  • 데이터베이스 시스템의 구성요소
    • 데이터베이스 (DB) ( 스키마 + 실제 데이터 )
    • 데이터베이스 관리시스템 (DBMS)
    • 데이터베이스 언어 (DB Language)
    • 데이터베이스 사용자 (User)
    • 데이터베이스 관리자 (DB Adminitrator)
    • 데이터베이스 컴퓨터 (H/W)
    • 데이터베이스 도구 (Tool/Utility)

 

스키마 (Schema)

  • 데이터베이스 = 스키마 + 데이터
  • 스키마
    • 데이터베이스 내의 데이터의 구조, 관계, 제약조건에 대한 명세
  • View 따라 스키마는 달리 보여질 있음
    • 응용 프로그램 관점
    • 조직(기관) 전체의 관점
    • 물리적 저장 장치 수준의 관점
  • 스키마 구조 (3단계)
    • 외부 스키마 ( = 서브 스키마 )
      • 개개의 사용자 또는 응용 프로그램 수준의 스키마
    • 개념 스키마
      • 조직 전체 수준의 스키마
      • 외부 스키마들의 통합
    • 내부 스키마
      • 개념 스키마의 저장 구조를 정의

 

시스템 카탈로그

  • 스카마 정보, 사상 정보 등을 저장한 시스템 데이터베이스 ( = 데이터 사전 )
    • 데이터베이스 시스템이 사용하는 데이터를 유지하는 시스템용 데이터베이스
    • 메타 데이터를 유지
    • 일반 사용자도 접근 가능
  • 데이터 디렉토리
    • 시스템 카탈로그를 접근하기 위한 정보
    • 사용자 접근 불가능
    • 시스템만 접근 가능

 

데이터 언어

  • 데이터 정의어 (Data Definition Language)
    • 데이터베이스를 정의하는 용도
  • 데이터 조작어 (Data Manipulation Language)
    • 데이터의 추가, 조회, 갱신, 삭제 용도
  • 데이터 제어어 (Data Control Language)
    • 데이터의 보안, 무결성, 병행제어, 회복을 위한 언어

 

데이터베이스 도구

  • 대량 적재 도구
  • Import / Export Tool
  • 백업 도구
  • 파일 재조직 도구
  • 성능 모니터링 도구

 

 

[ 관계 데이터베이스 ]

 

  • 릴레이션 = 릴레이션 스키마 + 릴레이션 인스턴스
  • 릴레이션 스키마
    • 속성들의 집합으로 릴레이션의 논리적 구조
    • 릴레이션 스킴 또는 릴레이션 내포이라고도
    • 시간에 따라 변하지 않음
  • 릴레이션 인스턴스
    • 일정 시점에서의 투플(Tuple)들의 집합
    • 시간에 따라 변함
  • 투플
    • 속성에 해당하는 데이터의 모임
  • 속성
    • 단순 속성
      • 단일값
    • 복합 속성
      • 단순 도메인의 결합으로 이루어진 속성 ( ex. DATA YEAR, MONTH, DAY 결합 )
      • 일반적으로 하나의 속성값으로 취급
    • 속성의 값은 분해할 없는 원자값
  • 도메인
    • 속성이 취할 있는 원자값들의 집합

 

릴레이션의 수학적 의미

  • 릴레이션은 도메인 순서쌍 집합의 부분 집합
  • 릴레이션의 차수 (Degree)
    • 릴레이션을 이루는 속성의 개수
  • 카디널러티 (Cardinality)
    • 릴레이션에 포함된 투플의 개수 ( 인스턴스의 개수 )

 

(Null)

  • 정보의 부재를 나타내는 특수한
    • 아직 알려지지 않은
    • 값이 있지만 아직 모르는
  • 공백(Blank) 또는 (Zero)와는 다름

 

릴레이션 특성

  • 투플의 상이성
    • 릴레이션에 포함된 투플은 모두 상의
    • 모든 속성의 값이 동일한 투플이 존재해서는 않됨
  • 투플의 무순서성
    • 릴레이션 내의 투플들 간에는 순서가 없음
  • 속성의 무순서성
    • 릴레이션 내의 속성들간에는 순서가 없음
  • 속성의 원자성
    • 모든 속성의 값은 원자값
    • 관계 데이터 모델은 정규화 릴레이션만을 대상으로

 

데이터베이스 (Key)

  • (Key)
    • 릴레이션 내의 투플을 항상 유일하게 식별할 있는 속성들의 집합
    • = 투플 식별자
  • 후보키 (Candidate Key)
    • 다음 조건을 모두 만족하는
      • 유일성
      • 최소성 ( 하나의 속성이라도 제외하면 키가 되지 못함 )
    • 모든 릴레이션은 적어도 하나의 후보키를 갖음
  • 수퍼키 (Super Key)
    • 유일성은 만족하나 최소성은 만족하지 못하는

 

  • 기본키 (Primary Key, PK)
    • 후보키들 중에서 설계자가 특별히 지정한
    • Null 값을 가질 없음
    • 데이터 접근 방법과 관련하여 중요한 의미를 가짐
  • 대체키 (Alternate Key)
    • 기본키로 지정되지 않은 후보키

 

무결성 제약

  • 개체 무결성 제약
    • 기본키에 해당하는 속성은 Null 값이 없음
  • 참조 무결성 제약
    • 참조할 없는 외래키 (FK) 값을 가져서는 안됨
    • 참조 릴레이션의 외래키 값은 Null 또는 반드시 피참조 릴레이션 기본키로 존재하는 값이어야

 

 

[ 관계 대수와 관계 해석 ]

 

  • 관계 대수 ( 절차 언어 )
    • 릴레이션에 대한 연산의 결과는 릴레이션
    • 연산자의 종류
      • 일반 집합 연산자 ( 합집합, 교집합, 차집합, 카티션 프로덕트 )
      • 순수 관계 연산자 ( 실렉트, 프로젝트, 조인, 디비전 )
  • 관계 해석 ( 비절차 언어 )
    • = 투플 관례 해석
    • 투플 단위의 연산을 나타내는 관계해석식으로 질의문 표현
    • 기능적으로는 관계 대수와 동등
    • 비절차적 특성 관계대수는 절차적
  • 도메인 관계 해석
    • = 도메인 해석
    • 질의문을 도메인 해석식으로 나타냄
    • 도메인 변수를 사용하여 해석식 표현
    • 관계 해석 투플 변수 사용

 

 

[ SQL ]

 

  • 테이블(릴레이션) 생성 : create table <테이블 이름> ( 컬럼 자료형 );
  • 테이블 삭제 : drop table <테이블 이름>;
  • 데이터 삽입 : insert into <테이블 이름> values ( 컬럼값 );
  • 데이터 검색 : selext * from <테이블 이름> where <조건식>

 

데이터 조작언어 (DML)

  • 데이터 조작을 위해서는 CRUD 연산이 가능해야
    • 데이터의 생성 (Create)
    • 읽기, 조회, 검색 (Read)
    • 갱신 (Update)
    • 삭제 (Delete)
  • SQL DML insert, select, update, delete 명령문에 해당

 

명령어

  • insert 명령
    • 테이블에 레코드를 컬럼 순서대로 삽입
      • insert into <테이블 이름> values ( … )
    • 컬럼 명을 지정하여 삽입
      • insert inro <테이블 이름>(<컬럼명>) values (<컬럼명>)
    • select 결과 삽입
      • insert into <테이블 이름> select
  • update 명령
    • update <테이블 이름> set <컬럼명=컬럼값> [where 조건식]
  • delete 명령
    • 테이블 내의 행을 삭제하고 테이블 정의는 유지
    • 테이블 내의 모든 삭제
      • delete <테이블 이름>
    • 조건에 해당하는 행들만 삭제
      • delete <테이블 이름> where 조건식
  • commit / rollbak 명령
    • commit
      • 트랜잭션 커밋
      • 이전 커밋시점부터 현재 커밋 명령 실행 시점까지의 변경 내역을 디스크에 기록
    • rollback
      • 이전 커밋시점부터 현재 롤백 명령 실행 시점까지의 변경 내역을 모두 취소
      • 서버 또는 클라이언트 프로그램이 비정상 종료되면 현재까지의 작업 내용은 자동적으로 롤백
    • DDL 명령 (create, alter, drop ) DCL 명령 (grant, revoke )은 자체가 commit 명령을 포함
      • DDL, DCL 명령의 실행 결과, 이전의 갱신 내역은 취소 불가
    • commit, rollback = DCL 명령 ( NOT DML )
  • select 명령
    • 단일 테이블에 대한 검색
    • select [컬럼] 또는 * from <테이블명> [where 조건식]
  • where 조건식
    • where 조건식 [ and | or 조건식 ]*
  • select distinct 명령
    • 중복된 레코드는 한번만 출력
    • select distinct [컬럼] 또는 * from <테이블명> [where 조건식]
  • order by 구문
    • select 결과를 정렬하여 출력
      • asc (오름차순, 디폴트)
      • dsc (내림차순)
    • select * from <테이블 > order by [<컬럼> [ asc | dsc ]]*
  • like 연산자
    • 문자열 패턴 검색
      • % : 임의의 길이 임의의 문자 의미
      • _ : 단일한 임의의 문자 의미
  • in 연산자
    • 주어진 값들에 포함되는 것만을 검색
    • ex. select * from STUDENT where year in (1, 2);
  • between 연산자
    • 값의 범위에 따른 검색
    • ex. select * from STUDENT where year between 1 and 3
  • alias
    • 테이블 또는 컬럼의 이름을 주어진 이름으로 지정
    • ex. select sno as 학번, sname as name from STUDENT
  • group by
    • 컬럼값이 같은 것들을 묶어 집계함수를 적용
    • 사용 예시 1 : 학과별로 개설된 과목의 개수를 구하라
      • select dept, count(*) as 과목수from COURSE group by dept;
    • 사용 예시 2 : 과목별로 기말고사의 평균을 구하라
      • select cno, avg(finterm) as 기말평균from ENROL group by cno;
  • having
    • 그룹에 대해 조건식을 적용
      • group by 절에 없는 경우에도 전체 테이블이 대상
    • 사용 예시 : 3명이상 수강하는 과목의 기말평균을 계산하라
      • select cno, avg(finterm) as 기말평균 from ENROL group by cno having count(*) >= 3;

 

 

 

'Memo' 카테고리의 다른 글

pypy3 Install  (0) 2020.12.13
Hyperledger Indy SDK Build (삽질중)  (0) 2020.12.01
JEB java.lang.NullPointerException 오류 해결 방법  (0) 2020.07.19
Git 사용법  (0) 2020.06.21
코드 작성 기초 (Basic Coding)  (0) 2020.06.02