[ 정보 환경 ]

 

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

 

  • 데이터베이스(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
데이터베이스(DB) 기초  (0) 2020.10.17
JEB java.lang.NullPointerException 오류 해결 방법  (0) 2020.07.19
Git 사용법  (0) 2020.06.21
코드 작성 기초 (Basic Coding)  (0) 2020.06.02