1. 정보 시스템 : 데이터를 수집, 조직, 저장하고 정보를 생성, 분배

   1) 데이터 : 수집된 사실이나 값     

       처리 : 데이터 해석. 데이터 사이의 관계를 통해 의미와 유용한 정보를 찾음

       정보 : 수집된 데이터의 유용한 해석이나 데이터 상호관계. 지식으로 만들어진 것

   2) 정보가 유용성을 갖기 위한 2가지 조건 : 정확성, 현재성

 

 

2. 데이터처리 시스템

   1) 형태에 따른 분류

      -1 정형 데이터 : 미리 정해진 구조가 있음. (사무정보)

      -2 반정형 데이터 : 내용 안에 구조에 대한 설명이 있음 (JSON, XML)

      -3 비정형 데이터 : 정해진 구조 없음 (SNS)

 

   2) 특성에 따른 분류

      -1 범주형 데이터 : 종류를 나타내는 값

         (a) 명목형 데이터 : 서열 없음 (성별, 혈액형, 학과명, 거주지)

         (b) 순서형 데이터 ; 서열 있음 (학년, 학점, 회원등급)

      -2 수치형 데이터 : 크기 비교와 연산이 가능한 값

         (a) 이산형 데이터 : 개수를 세어봐야 함 (고객수, 반매량, 합격자수)

         (b) 연속형 데이터 : 측정을 해봐야 함 (, 몸무게, 온도, 점수)

 

   3) 데이터 처리 단위 : 트랜잭션 (하나의 단위로 처리되어야 하는 분리될 수 없는 그룹)

 

   4) 데이터가 조직되고 접근되는 방법에 따른 분류

      -1 일괄 저리

         (a) 시스템 중심

         (b) : 높은 시스템 성능과 낮은 비용처리

         (c) : 응답시간 길고 사전 준비 작업 요구

         (d) 순차 접근 방법

 

      -2 온라인 처리

         (a) 실시간 처리

         (b) : 빠른 응답시간, 사전 준비작업 불필요

         (c) : 낮은 시스템 성능과 높은 처리 비용, 원격 터미널들과 계쏙적인 통신 유지, 통신 제어기가 필요

         (d) 은행, 항공기 예약 시스템 등

 

      -3 분산 처리

         (a) 분산처리 목표 : 투명성 확보

         (b) 위치 투명성 : 액세스 하려는 DB의 실제 위치 알 필요 없이 DB의 논리적인 명칭만으로 액세스 가능

         (c) 중복 투명성 : 동일 데이터가 여러 곳에 중복되어 있더라도 사용자는 하나의 데이터만 존재하는 것처럼 사용

         (d) 단편화 투명성 : 하나의 릴레이션을 더 작은 조작으로 나누고 각 조각을 별개의 릴레이션으로 처리

            - 릴레이션의 단편화 방법 - 수평적 단편화 : 투플()단위로 분해

                                                     - 수직적 단편화 : 속성()단위로 분해

                                                     - 혼합적 단편화

                                   단편화 수행 조건 - 완전성 : 한 조각에는 속해야 함

                                                                  회복성 : 원래로 회복 가능

                                                                  분리성 : 중복되지 않게 분리

         (e) 병행 투명성 : 다수의 트랜잭션들이 동시에 실행되더라도 그 트랜잭션의 결과는 영향을 받지 않음

         (f) 장애 투명성 : 컴퓨터 장애에도 불구하고 트랜잭션을 정확하게 처리함

 

         (g) : 지역문제에 대한 파악과 신속한 조치, 자료의 공유성 향상, 새로운 응용에 대한 모듈식 구축 용이, 장애에 대한

                   신뢰성 및 가용성 증대, 시스템 운영에 영향을 주지 않고 노드의 폐쇄 및 확장 가능, 상이한 하드웨어 사용 가능

         (h) : DBMS가 수행할 기능이 복잡, 데이터베이스 설계가 어려움, 소프트웨어 개발 비용과 처리비용이 증가, 잠재적

                    오류 증가, 보안의 어려움

 

 

3. 데이터베이스의 정의

   1) 통합된 데이터 : 최소의 통제된 중복

   2) 저장된 데이터 : 컴퓨터가 접근 가능한 저장 매체에 저장

   3) 운영 데이터 : 고유 기능을 수행하기 위해 필요한 데이터

   4) 공용 데이터 : 공동으로 소유, 유지, 이용하는 데이터

 

 

4. 데이터베이스틔 특성

   1) 실시간 접근성

   2) 계속적인 변화 : 갱신, 삽입, 삭제 -> 정확성 유지

   3) 동시 공용

   4) 내용에 의한 참조

   5) 지속성

   6) 상호관련성

 

 

5. 데이터베이스의 개념적 구성 요소

   1) 개체 : 업무가 다루는 사물(대상) ,

   2) 관계 : 업무가 다루는 사물(대상)들 사이에 존재하는 연관,

   3) 속성 : 각 사물(대상)이 가지고 있는 상세한 특성,

 

 

6. 데이터베이스의 구조

   1) 논리적 구조

      -1 사용자의 관점에서 본 데이터의 개념적 구조

      -2 데이터의 논리적 배치

      -3 논리적 레코드

 

   2) 물리적 구조

      -1 저장 관점에서 본 데이터의 물리적 배치

      -2 저장장치에 저장된 데이터의 실제 구조

      -3 추가 정보 포함 : 인덱스, 포인터체인, 오버플로우 등

      -4 물리적 레코드

 

 

7. 3단계 데이터베이스

   1) 외부 스키마

      -1 개인 사용자나 응용 프로그래머가 접근하는 데이터베이스를 정의한 것

      -2 external schema, subschema, view

 

   2) 개념 스키마

      -1 범 기관적 입장에서 데이터베이스를 정의한 것

      -2 외부 스키마를 모아서 논리적으로 하나로 만든 것

      -3 conceptual schema, logical schema, schema

 

   3) 내부 독립성

      -1 저장 장치 입장에서 DB 전체가 저장되는 방법을 명세한 것

      -2 internal schema, physical schema

 

 

8. 데이터 독립성

   1) 논리적 데이터 독립성

      -1 데이터베이스의 논리적 구조를 변경시키더라도 기존 응용 프로그램들에 아무런 영향을 주지 않는 것을 말함

      -2 개념 시키마가 변경되더라도 어플리케이션에 영향을 덜 받게 하자

      -3 views : 가상 테이블

                       저장 장치 내에 물리적으로 전재하지 않지만, 사용자에게는 있는 것처럼 간주됨

 

   2) 물리적 데이터 독립성

      -1 데이터베이스의 물리적 구조를 변경시키더라도 기존 응용 프로그램이나 데이터베이스의 논리적 구조에 아무런

          영향을 주지 않는 것을 말함

      -2 내부스키마가 변경되더라도 프로그램에 영향 주지 않게 하자

1. EMP 테이블의 SAL에 UPDATE가 발생하면 로그를 저장하는 EMP_UP_SAL_LOG 테이블과 트리거를 작성하시오. SAL에 UPDATE가 발생하면 트리거에 의해 EMP_UP_SAL_LOG 테이블 에 UPDATE가 발생한 날짜, SAL가 변경 된 사원의 이름, 변경 전 SAL의 값, 변경 후SAL의 값, 증감율 ((변경 후 SAL-변경 전 SAL) / 변경 전 SAL) 값을 저장한다. 2개 이상의UPDATE 문을 수행하여 EMP_UP_SAL_LOG의 내용을 보이시오.

 

 

create table emp_up_sal_log (
    updateat date,
    ename varchar(10),
    old_sal decimal(7,2),
    new_sal decimal(7,2),
    rate decimal(5,2)
);


delimiter $$

create trigger trg_emp_sal_update
after update on emp
for each row
begin
    if new.sal <> old.sal then
        insert into emp_up_sal_log (
            updateat,
            ename,
            old_sal,
            new_sal,
            rate
        ) values (
            sysdate(),
            new.ename,
            old.sal,
            new.sal,
            (new.sal - old.sal) / old.sal
        );
    end if;
end $$

delimiter ;

select *
from emp;


update emp set sal = sal + 500 where ename = 'SMITH';
update emp set sal = sal + 1000 where ename = 'ALLEN';


select * 
from emp_up_sal_log;

 

 

 

 

 

 

 

 

2. 커서를 사용하여 EMP 테이블에서 늦게 입사한 순서대로 5명의 사원 이름(ENAME)을 출 력하는 emp_DateRank 프로시저를 작성하고 호출한 결과를 작성하시오.

 

select *
from emp;

delimiter $$

create procedure emp_daterank()
begin
    declare done int default false;
    declare emp_name varchar(10);
    declare cur cursor for 
        select ename
        from emp
        order by hiredate desc
        limit 5;
    declare continue handler for not found set done = true;
    
    open cur;
    
    emp_loop: loop
        fetch cur into emp_name;
        if done then
            leave emp_loop;
        end if;
        select emp_name;
    end loop;
    
    close cur;
    
end $$

delimiter ;

call emp_daterank();

 

 

 

 

 

 

 

1. EMP 테이블에서 EMPNO를 입력받아 입력된 사원의 COMM과, COMM이 NULL이면 ‘해 당 없음’, 600 미만이면 ‘GOOD’, 600이상 1200미만이면 ‘GREAT’, 1200이상이면 ‘PERFECT’를 출력하는 Stored Procedure를 작성하고 프로시저를 호출한 결과를 작성하 시오.

     (조건1) 프로시저 이름은 R_COMM으로 한다.

     (조건2) 입력받는 매개변수 이름은 r_empno, 데이터 형식은 INT로 한다.

     (조건3) COMM 정도(해당 없음, GOOD, GREAT, PERFECT)의 컬럼명은 commGrade로 설정 한다.

     (조건4) EMPNO가 각각 7369, 7521, 7654일 때의 프로시저를 호출한 결과를 출력한다.

 

결과 출력은 아래의 예시를 참조한다

 

delimiter $$

create procedure r_comm(in r_empno int)
begin
    declare commgrade varchar(10);
    declare comm_value decimal(10, 2);

    select comm into comm_value from emp where empno = r_empno;

    select case
        when comm_value is null then '해당 없음'
        when comm_value < 600 then 'good'
        when comm_value >= 600 and comm_value < 1200 then 'great'
        when comm_value >= 1200 then 'perfect'
        else 'unknown'
    end into commgrade;

    select comm_value as comm, commgrade as commgrade;
end $$

delimiter ;

call r_comm(7369);
call r_comm(7521);
call r_comm(7654);

 

 

 

 

 

2. WHILE문을 사용하여 입력 받은 값까지 짝수의 개수를 출력하는 Stored Procedure를 작 성하고 프로시저를 호출한 결과를 작성하시오.

     (조건1) 프로시저 이름은 C_PROC으로 한다.

     (조건2) 입력받는 매개변수 이름은 num, 데이터 형식은 INT로 한다.

     (조건3) 출력결과의 컬럼명은 evenNumCount로 설정한다.

     (조건4) 입력 값은 임의로 설정하여 프로시저를 호출한 결과를 출력한다.

 

결과 출력은 아래의 예시를 참조한다. 결과 출력은 아래의 예시를 참조한다.

 

delimiter $$

create procedure c_proc(in num int)
begin
    declare counter int default 1;
    declare evennumcount int default 0;
    
    while counter <= num do
        if counter % 2 = 0 then
            set evennumcount = evennumcount + 1;
        end if;
        
        set counter = counter + 1;
    end while;

    select evennumcount as evenNumCount;
end $$

delimiter ;

call c_proc(11);

 

 

 

 

 

 

 

3. 출생연도, 월, 일을 입력받아 현재 날짜를 기준으로 ‘만 나이’를 구하는 Stored Function 을 작성하고, 함수를 호출한 결과를 작성하시오.

     (조건1) 함수의 이름은 getAgeFun로 설정한다.

     (조건2) 입력받는 매개변수의 이름은 birdate, 데이터 형식은 date로 설정한다.

     (조건3) 현재 날짜를 반환하는 curdate() 함수를 이용한다.

     (조건4) 출력 결과는 아래와 같이 출력한다.

 

delimiter $$

create function getAgeFun(birdate date)
returns int
deterministic
begin
    declare age int;
    declare cur_date date;

    set cur_date = curdate();
    set age = year(cur_date) - year(birdate);

    if month(cur_date) < month(birdate) or (month(cur_date) = month(birdate) and day(cur_date) < day(birdate)) then
        set age = age - 1;
    end if;

    return age;
end $$

delimiter ;

select getagefun('2022-01-01');

 

1. 조인을 이용하여 커미션(COMM)이 NULL이 아닌 사원의 사원번호(EMPNO), 이름 (ENAME), 부서명(DNAME)을 출력하라.

 

select e1.empno, e1.ename, dname
from emp e1
join dept on dept.deptno = e1.deptno
where e1.comm is not null;

 

 

 

 

 

 

2. 조인을 이용하여 회사의 평균 급여보다 많이 받는 사원의 상관인 사람의 사원 번호 (EMPNO), 상관의 이름(ENAME), 상관의 부서명(DNAME)을 출력하라. (단, 상관이 없는 최고 직급은 출력하지 않는다.)

 

select distinct e2.empno, e2.ename, dname
from emp e1
join emp e2 
on e1.mgr = e2.empno
join dept 
on e2.deptno = dept.deptno
where e1.sal > (select avg(sal) from emp);

 

 

 

 

3. 1번으로 만들어진 테이블 데이터와 2번으로 만들어진 테이블 데이터를 묶어 하나의 테이 블 결과로 출력하라. (단, 결합된 테이블 데이터가 중복될 경우 중복을 허용하지 않는다.)

select distinct empno, ename, dname
from (
    select e1.empno, e1.ename, dname
    from emp e1
    join dept 
    on dept.deptno = e1.deptno
    where e1.comm is not null
    union
    select e2.empno, e2.ename, dname
    from emp e1
    join emp e2 
    on e1.mgr = e2.empno
    join dept 
    on e2.deptno = dept.deptno
    where e1.sal > (select avg(sal) from emp)
) combined_results;

 

 

 

 

 

4. [Players] 테이블을 생성하고 테이블의 구조를 첨부하시오

        조건 1) pid는 기본키이다 조건

                 2) pnum은 유일한 값을 가져야 한다 조건

                 3) pname은 null 값을 허용하지 않는다 

 

drop table players;
create table players (
    pid int primary key,
    pnum varchar(20) unique,
    pname varchar(20) not null,
    psport int,
    tnum int
);

 

1. 1981년 1월 1일부터 1983년 2월 1일까지 입사한 사원 중 이름에 ‘C'가 들어가거나 이름 두 번째 알파벳이 ’A'로 시작하는 사원의 이름(ENAME), 직책(JOB), 급여(SAL), 입사일 (HIREDATE)을 급여가 낮은 순으로 출력하는 SQL 문을 작성하고 결과를 보이시오. (단, 급여 가 같은 경우, 이름의 알파벳 순서로 출력한다.)

 

SELECT ENAME, JOB, SAL, HIREDATE
FROM emp
WHERE (ENAME LIKE '%C%' OR SUBSTRING(ENAME, 2, 1) = 'A')
  AND HIREDATE BETWEEN '1981-01-01' AND '1983-02-01'
ORDER BY SAL ASC, ENAME ASC;

 

 

 

 

 

 

2. 직책이 ANALYST인 사원 중 급여가 3000 이상인 사원의 이름(ENAME), 직책(JOB), 급여 (SAL), 입사일(HIREDATE)을 출력하는 SQL문을 작성하고 결과를 보이시오. (이때, 입사일은 다음의 형식에 맞춰 문자열로 변환한 값을 출력한다. ex) '2023-09-21'의 경우 ‘23 September 21th Thu‘로 변환)

 

SELECT 
    ENAME, 
    JOB, 
    SAL, 
    DATE_FORMAT(HIREDATE, '%y %M %D %a') AS HIREDATE
FROM emp
WHERE JOB = 'ANALYST'
  AND SAL >= 3000;

1. 관계 데이터 모델은 테이블 형태의 데이터 표현

      릴레이션 스키마 + 릴레이션 인스턴스

 

 

 

2. 릴레이션 특성

   1) 한 애트리뷰트 내의 값들은 모두 같은 타입을 가짐

   2) 동일한 투플이 두 개 이상 존재하지 않음

   3) 한 투플의 각 애트리뷰트는 원자 값을 가짐

   4) 각 애트리뷰터의 이름은 한 릴레이션 내에서만 고유 애트리뷰트나 투플들의 순서는 중요하지 않음

 

 

3. 데이터베이스 키 (릴레이션 키)

   1) 슈퍼키 (super key)

      -1 특정 투플을 고유하게 식별하는 하나의 애트리뷰트 (또는 애트리뷰트들의 집합)

      -2 필요하지 않은 애트리뷰트들을 포함할 수 있음

 

   2) 후보키 (candidate key)

      -1 각 투플을 고유하게 식별하는 최소한의 애트리뷰트들의 모임

      -2 유일성 + 최소성

      -3 모든 딜레이션에는 최소 한 개 이상의 후보키 있음

      -4 후보키도 두 개 이상의 복합 애트리뷰트로 이루어질 수 있음

      -5 {학번}은 학생 릴레이션의 후보키

      -6 {학번, 주소}, {학번, 이름}이 후보기카 아닌 이유 -> 최소성x

 

   3) 기본키 (primary key)

      -1 한 릴레이션에 후보키가 두 개 이상 있으면 설계자(또는 DB관리자)가 이 중 하나를 기본키로 선정

      -2 널 값을 가질 수 없음 ( NOT NULL )

      -3 자연스러운 기본키를 찾을 수 없는 경우 -> 인위적인 키 애트리뷰트를 릴레이션에 추가할 수 있음

      -4 단순한 후보키가 이해하기도 쉽고 처리하기도 쉬워 적합함

 

   4) 대체키 (alternate key)

      -1 기본키가 아닌 다른 후보 키

      -2 언제든지 기본키로 대체될 수 있음

 

   5) 외래키 (foreign key)

      -1 다른 릴레이션의 기본키를 참조하는 애트리뷰트

      -2 외래키가 되는 소성과 기본키가 되는 속성의 이름은 달라도 됨

      -3 외래키는 참조되는 릴레이션의 기본키와 동일한 도메인을 가져야 함

      -4 자체 릴레이션의 기본키를 참조

      -5 NULL값을 가질 수 있음

      -6 다른 투플이 같은 값을 가질 수 있음

      -7 기본키의 구성요소가 될 수 있음

 

1. 파일 시스템의 문제점

   1) 데이터 중복성

      -1 한 시스템 내에 같은 내용의 데이터가 여러 파일에 저장 관리됨

      -2 문제점

         (a) 경제성 : 추가적인 공간과 갱신 비용 증가

         (b) 일관성 : 데이터 간의 모순, 불일치 발생

         (c)  무결성 : 데이터 정확성 유지 어려움

      -3 파일 시스템의 데이터 중복성 해결 : 데이터 통합

 

   2) 데이터 종속성

      -1 응용 프로그램과 데이터 사이의 의존관계

 

   3) 동시 공유, 보안, 권한 부여, 회복 기능 부족

   4) 응용 프로그램을 개발하기 어려움

 

 

2. DBMS

   1) 데이터의 종속성과 중복성의 문제를 해결하기 위해 데이터베이스를 공용할 수 있도록 관리하는 시스템 소프트웨어

   2) 응용 프로그램은 데이터베이스의 생성, 접근방법, 물리적 구조 등 자세한 설명 없이 원하는 데이터와 처리 작업을 

        DBMS에 요청

   3) 컴퓨터 시스템에서 DBMS의 위치는 -> 중간, MID 역할

 

 

3. DBMS의 필수 기능

   1) 정의 기능

      -1 다양한 형태의 데이터 요구를 지원할 수 있도록 가장 적절한 데이터베이스 구조를 정의할 수 있는 기능 

      -2 데이터 구조 정의에 고려해야 할 사항들

      -3 스키마를 정의하거나 수정 또는 삭제하기 위해 사용

      -4 DDL

 

   2) 조작 기능

      -1 사용자와 데이터베이스 사이의 인터페이스를 위한 수단 제공

      -2 사용자의 요구에 따라 체계적으로 데이터베이스를 접근하고 조작 가능해야 함

      -3 조작 기능에 고려해야 할 사항 : 쉽고 자연스러운 조작방법 명확하고 완전한 데이터 사이의 명세가 가능해야 함

          효율적인 데이터 접근, 처리

      -4 데이터의 검색, 삽입, 삭제, 수정 등의 처리를 요구하기 위해 사용

      -5 DML

 

   3) 제어 기능

      -1 데이터의 정확성과 보안성을 유지하는 기능

      -2 제어 기능에 고려해야 할 사항들 : 무결성 유지

                                                                보안, 권한 검사

                                                                병행 제어

                                                                 회복

      -3 내부적으로 필요한 규칙(무결성, 보안, 회복, 동시성 보장 등)이나 기법을 정의하기 위해 사용

      -4 DCL

 

 

4. DBMS의 장단점

   1) 장점

      -1 데이터 중복의 최소화

      -2 데이터 독립성 확보

      -3 데이터의 공용

      -4 데이터의 일관성과 무결성 유지

      -5 데이터의 보안 보장

      -6 응용 개발 시간 단축 및 편리성 증대

      -7 표준화 및 전체 데이터 요구의 조정

 

   2) 단점

      -1 비용이 증대

      -2 복잡한 백업과 회복

      -3 중앙 집중 관리로 인한 취약점 존재 -> 신뢰성과 가용성을 저해

 

    3) 여러 단점에도 불구하고 장점이 더 많기 때문에 DBMS 이용

 

 

5. DBMS 발전 과정

   1) 네트워크 DBMS : 그래프 형태로 구성

   2) 계층 DBMS : 트리 형태로 구성

   3) 관계 DBMS : 장점 - 테이블 형태로 모델이 간단하여 이해하기 쉬움

                                       자신이 원하는 것만 명시

                                       데이터가 어디에 있는지, 어떻게 접근해야 하는지 결정

   4) 객체지향 DBMS

   5) 객체관계 DBMS

   6) XML DBMS

 

   7) NoSQL DBMS : 비정형 데이터 저장 및 처리에 대한 요구 증가로 개발

      -1 관계형 모델을 사용하지 않으며 테이블 간의 조인 기능 없음

      -2 직접 프로그래밍을 하는 등 비sql 인터페이스를 통한 데이터 액세스

      -3 여러 대의 데이터베이스 서버를 묶어서 하나의 데이터베이스를 구성

      -4 관계 데이터베이스에서 지원하는 데이터 처리 완결성 보장하지 않음

      -5 데이터의 스키마와 속성들을 다양하게 수용

      -6 데이터베이스의 중단 없는 서비스와 자동 복구 기능 지원

      -7 다수가 open source로 제공

      -8 확장성, 가용성, 높은 성능

 

   8) NewSQL DBMS

      -1 정형 데이터를 처리하는 관계 DBMS 유지하면서 비정형 데이터를 처리하기 위한 NoSQL을 추가로 도입하는 부담을

          줄이기 위해 등장

     -2 안정성과 일관성을 유지하면서도 ㄴ비을 이용해 다양하고 복잡한 데이터 처리를 편리하게 요청할 수 있음

      -3 관계 DBMS의 장점과 NoSQL의 확장성 및 유연성을 모두 지원

 

 

6. 데이터베이스 사용자

   1) 데이터베이스 관리자 (DBA)

      -1 데이터베이스 구성 요소 성정

      -2 데이터베이스 스키마 정의

      -3 물리적 저장 구조와 접근 방법 결정

      -4 무결성 유지를 우한 제약조건 정의

      -5 보안 및 접근 권한 정책 결정

      -6 백업 및 회복 기법 정의

      -7 시스템 데이터베이스 관리 

      -8 시스템 성능 감시 및 성능 분석

      -9 데이터베이스 재구성

 

   2) 최종 사용자

      -1 데이터를 조작하기 위해 데이터베이스에 접근하는 사람

      -2 캐주얼 사용자 : DML 이용, 검색정도 할줄 아는 사람

      -3 초보 사용자 : 메뉴나 GUI 이용

 

   3) 응용 프로그래머

      -1 C, Java 등 프로그래밍 언어와 DML 이용

1. 데이터베이스

   1) 여러 사용자 및 프로그램에서 사용하기 위해 저장 및 관리하는 데이터 집합

   2) 구성요소

      -1 개체(entity, 엔터티)  :  데이터로 표현하려는 대상

      -2 속성(attribute)  :  개체의 특성 및 상태

      -3 관계(relationship)  :  개체 간 관계

 

 

2. 관계형 데이터베이스

   1) 테이블을 이용해 데이터의 종속성과 구조를 나타내는 데이터베이스

   2) 용어

      -1 스키마(schema)  :  데이터의 구조와 표현 방식, 제약 조건 등을 정의해 데이터베이스의 전체적인 구조를 나타냄

      -2 릴레이션(relation)  :  데이터베이스에서 데이터의 개념적 모델

      -3 테이블(table)  :  릴레이션을 실제로 구현한 개체로, 행과 열로 관계형 데이터베이스를 구성함

      -4 튜플(tuple)  :  테이블의 행에 해당하는 데이터 묶음으로, 레코드라고도 함

      -5 속성(attribute)  :  테이블의 열에 해당하고 이름과 타입을 가짐, 필드라고도 함

 

 

3. NoSQL 데이터베이스

   1) 비관계형 데이터베이스로, 다양한 형태의 데이터를 저장함

   2) 대용량 데이터 조회 시 속도가 빠르고 수평적 확장성이 좋음

 

 

4. 키

   1) 데이터베이스에서 튜플을 구분하기 위한 속성 또는 속성의 집합

   2) 종류

      -1 슈퍼 키  :  튜플 식별이 가능하여 유일성은 만족하나 최소성은 만족하지 않아도 됨

      -2 후보 키  :  튜플 식별이 가능하며 유일성과 최소성을 만족해야 함

      -3 기본 키  :  후보 키 중 메인이 되는 키로 NULL 값을 가지면 안됨

      -4 대체 키  :  후보 키 중 기본 키를 제외한 키

      -5 외래 키  :  다른 테이블의 기본 키를 참조하는 키

 

 

5. 무결성

   1) 데이터베이스의 데이터와 현실의 데이터가 일치하는 정확성과 데이터의 일관성을 의미함

   2) 종류

      -1 개체 무결성  :  모든 테이블이 NULL 값이 아닌 기본 키를 가져야 함

      -2 도메인 무결성  :  테이블의 속성 값은 도메인에 속해야 함

      -3 참조 무결성  :  외래키의 값은 참조하는 테이블의 기본 키 값과 동일하거나 NULL이어야 함

 

 

6. 인덱스

   1) 튜플 검색 성능을 높이기 위해 속성 값과 튜플이 저장된 주소를 저장하는 것

   2) 장점  :  정렬된 상태를 유지해 데이터 검색 속도를 향상시킴

   3) 단점

      -1 인덱스 테이블을 저장하기 위한 저장 공간이 따로 필요하고 데이터 추가/수정/삭제 시 속도가 느림

      -2 삭제 연산 시 인덱스 테이블에는 값이 남아서 불필요한 데이터가 남게 됨

   4) 종류

      -1 해시 테이블 익덱스  :  등호 연산만 가능

      -2 B +- 트리 인덱스  :  비교 연산 가능

 

 

7. 트랜잭션

   1) 데이터베이스의 상태를 바꾸기 위해 수행하는 작업의 단위

   2) 특성  :  원자성, 일관성, 독립성, 연속성

   3) TCL  :  트랜잭션을 제어하는 데 사용하는 명령어의 집합

      -1 COMMIT  :  트랜잭션의 정상 종료, 데이터베이스에 변경 사항 반영

      -2 ROLLBACK  :  트랜잭션의 비정상 종료, 데이터베이스를 이전 상태로 되돌림

      -3 SAVEPOINT  :  트랜잭션의 특정 지점 지정

 

 

8. 락

   1) 트랜잭션이 처리되는 순서를 보장해 데이터베이스의 무결성을 유지하려고 사용함

   2) 종류

      -1 공유 락  :  데이터를 읽는 락, 여러 공유 락이 동시 접근 가능

      -2 베타 락  :  데이터를 수정하는 락, 하나의 베타 락이 처리 중일 떄 다른 베타 락이 동시 접근 불가능

 

 

9. 트랜잭션의 교착 상태

   1) 트랜잭션이 자신이 처리 중인 데이터에 대해 락을 가진 상태에서 다른 트랜잭션이 처리 중인 데이터에 대해 락을 요청하면서 무한 대기 상태에 빠진 현상

   2) 해결 방법

      -1 예방 기법  :  트랜잭션 처리 전 필요한 데이터에 대해 미리 락을 획득함

      -2 회피 기법  :  트랜잭션이 들어온 순서에 따라 락을 획득하거나 트랜잭션이 종료되는 방식으로, 

                               wait-die와 wound-wait가 있음

 

 

10. 이상

   1) 트랜잭션 처리 중 속성 간 종속이나 데이터 중복 때문에 발생하는 문제

   2) 종류

      -1 삽입 이상  :  의도하지 않은 데이터가 삽입됨

      -2 갱신 이상  :  일부 튜플만 갱신되어 데이터 모순 발생

      -3 삭제 이상  :  의도하지 않은 데이터가 삭제됨

 

 

11. 정규화

   1) 데이터베이스의 이상 현상을 해결하기 위해 테이블을 분해하는 것

   2) 정규화를 필요 이상으로 진행하면 테이블이 많아져 연산 시간이 증가할 수 있음

   3) 정규화 단계

 

 

 

12. 조인

   1) 여러 테이블을 합쳐 원하는 데이터를 얻으려는 작업

   2) 내부 조인(INNER JOIN)  :  2개 이상의 테이블에서 공통되는 속성을 가진 데이터를 검색하기 위한 연산

   3) 외부 조인(OUTER JOIN)  :  테이블에서 조인 조건에 해당하는 속성 값이 없는 데이터까지 모두 조회하는 연산

      -1 왼쪽 외부 조인(LEFT OUTER JOIN)  :  왼쪽 테이블의 모든 데이터가 결과 테이블에 조회

      -2 오른쪽 외부 조인(RIGHT OUTER JOIN)  :  오른쪽 테이블의 모든 데이터가 결과 테이블에 조회

      -3 완전 외부 조인(FULL OUTER JOIN) :  양쪽 테이블에서 조건을 만족하지 않는 데이터까지 모두 포함해 결과

                                                                       테이블에 조회

+ Recent posts