음 아마 비둘기보단 똑똑할꺼야

2018/05/15 - [방송통신대학교/컴퓨터과학과 [3학년 1학기]] - [데이터베이스] 5강 정규화 기초

2018/03/21 - [방송통신대학교/컴퓨터과학과 [3학년 1학기]] - [데이터베이스] 4강 데이터베이스 언어

2018/03/19 - [방송통신대학교/컴퓨터과학과 [3학년 1학기]] - [데이터베이스] 3강 관계형 모델

2018/03/16 - [방송통신대학교/컴퓨터과학과 [3학년 1학기]] - [데이터베이스] 2강 데이터베이스 모델링

2018/03/16 - [방송통신대학교/컴퓨터과학과 [3학년 1학기]] - [데이터베이스] 1강 데이터베이스의 이해

 

나쁜릴레이션은 데이터베이스를 운용하는데 굉장히 비효율적 및 이상현상을 일으키는 릴레이션이다.

(아직까지 악당은 남아있닼ㅋㅋㅋㅋㅋㅋ)

1. 정규형의 개념

1) 정규형

- 이상 현상을 최소화 하도록 특정 조건을 갖춘 릴레이션의 형식

- 정규형의 분류

정규형은 타 정규형을 내포하거나 내포당하고있다.
제1정규형이 가장 적은 조건, 가장 약한 형태의 정규형이라 한다.
실무에서는 BC정규형까지만 사용하고 4,5 정규형은 잘 사용하지 않는다.

2) 정규형의 목적

정의
특정 정규형의 조건을 만족하도록 릴레이션과 속성(컬럼)을 재구성하는 과정

※정규화의 기능
- 데이터베이스 내에 모든 릴레이션을 효과적으로 표현 (중복을 최소화해서 가장 적은용량으로 DB 구성)
- 보다 간단한 관계 연산에 기초하여 검색 알고리즘을 효과적으로 작성할 수 있도록 지원
- 바람직하지 않은 삽임, 수정, 삭제 등의 이상 발생 방지 (갱신 이상 방지)
- 새로운 형태의 데이터가 삽입될 때 릴레이션 재구성의 필요성을 축소

3) 제1정규형

- 가장 약한 조건을 갖춘 정규형
- 릴레이션의 모든 속성이 단일 값으로 구성되어야 하는 조건

정의
릴레이션 스키마에서 정의된 모든 속성의 도메인이 원자값(관계형모델의 가장 기본적인 제약조건)을 갖는 상태
=> 기본적으로 관계형 모델을 통해서 만들어진 모든 릴레이션은 제1정규형을 만족한다라고 할 수 있음.

3-1) 제1정규화가 필요한 릴레이션

입항시간이 값이 두 개, 출항시간이 값이 두 개, 목적이 두 개 인 레코드가 있다.
원자값이 아니기때문에 제1정규화가 필요하다.

제1정규화를 시킨 도크릴레이션

단일값만으로 이루어지게 만들기 위해 두번째 릴레이션과 세번째 릴레이션을 변경하였다.

 

4) 함수적 종속성 판결

정의 5강 참조

Q. 도크번호 → 도크관리자?
도크릴레이션을 보면 도크번호가 D1으로 모두 같다 일때 도크관리자는 김주연이고 D2일때 현익창이다
따라서 도크는 도크관리자를 종속한다.

Q. 목적 → 담당도선사?
목적이 선적으로 같은 두번째와 세번째 레코드가 같을 때 담당도선사가 김혜겸으로 같으므로 종속한다.

Q. 목적 → 도크번호?
첫번째와 두번째 레코드의 목적이 선적으로 같을 때 D1으로 같으므로 종속한다.
나머지는 목적컬럼의 값이 다르므로 볼필요없다.

같을때 같은지만 보면된다. (다~ 다르면 종속한다??)

 

5) 함수적 종속성 다이어그램

릴레이션 내의 속성간의 종속 관계를 직관적이고 이해하기 쉽게 도식화 한 표현 방식
- 직사각형: 속성 또는 속성 집합
- 화살표: 함수적 종속성

목적         →     담당도선사
(결정자)            (종속자)

6) 도크 릴레이션의 함수적 종속성 다이어그램

해석,풀이
- 도크번호가 도크관리자를 종속한다.
- 도크번호와 입항시간이 파란색 사각형으로 묶여있다. 이 말은 도크번호와 입항시간 두 개가 같이 출항시간과 목적 담당도선사를 각각 종속한다.
- 목적이 도크번호를 종속한다.
- 목적이 담당도선사를 종속한다.

 

2. 제2정규형

1) 제2정규형의 정의

릴레이션이 제1정규형을 만족하고 기본키의 부분집합이 특정 속성을 종속하고 있지 않은 상태

정의
주어진 릴레이션의 인스턴스가 기본키가 아닌 속성들이 기본키에 완전히 종속되어 있는 상태

2) 제2정규형의 적용

도크릴레이션의 도크번호와 입항시간에 밑줄이 그어져있으므로 도크릴레이션의 기본키에 해당한다.
도크번호와 입항시간이 출항시간,목적,담당도선사를 각각 종속한다.
여기서 문제는 도크관리자다. 도크관리자를 종속하고있는것은 도크번호이다.
기본키의 일부분인 도크번호가 도크관리자를 종속하고있다. 완전히 종속하고있지않은 부분적으로 종속하고있기 때문에 도크관리자 종속을 제거하면 제2정규형을 만족하게된다.
해결방법 = 기본키에 완전히 종속되도록 릴레이션을 분해해야한다.

3) 임의 분해(맘대로) 시 발생하는 문제점

- 불필요한 조인이 발생 (무리하게 릴레이션을 짤라서 2개의 릴레이션을 만들면 불필요하게 조인해서 검색해야한다. 조인은 DBMS에 많은 부하가 발생한다.)
- 원본 릴레이션 재구성이 불가능할 수 있다. (꼴리는데로 분해했다간 돌이킬 수 없는 강을 건너게된다.)

4) 릴레이션의 무손실 분해

정의
스키마 R에 함수적 종속성 X→Y가 존재하고 X∩Y=∮(X와 Y에 겹치는 컬럼이 없다) 이면, R을 R - Y 와 XY로 분해

도크관리 릴레이션 무손실 분해
- {도크번호} → {도크관리자}
- {도크번호} ∩ {도크관리자} =∮

도크관리 - {도크관리자}, {도크번호, 도크관리자}
도크릴레이션에서 도크관리자를 빼고 도크번호와 도크관리자만 존재하는 릴레이션을 추가적으로 생성한다. 이러면 조인했을 때 아무런 문제가 발생하지 않음.

조인해야하는 추가연산이 발생하지만 레코드가 줄어들으므로 용량이 줄어드는 효율성이 추가연산 단점보다 훨씬 크다.

5) 제2정규화의 함수적 종속성 다이어그램

 

3. 제3정규형

1) 제3정규화의 정의

정의
릴레이션이 제2정규형을 만족하고, 기본키가 아닌 속성들이 어떤 키에도 이행적으로 종속되지 않은 상태

이행적 종속이란?
X → Y 이고 Y → Z 이면 X → Z 이다.
(5강에 나왔었다 암스트롱 공리에서... 어휴 본인 비둘기인듯...)

2) 제3정규화의 적용

제2정규화가 된 도크릴레이션에서 도크번호와 입항시간은 목적을 종속하고 (X→Y) 목적이 담당도선사를 종속한다(Y→Z)
위 부분은 이행적 종속성에 해당한다.

{도크번호, 입항시간} → {목적}
                                {목적} → {담당도선사}
→ {담당도선사}

담당도선사를 빼버리자! 그러면 제3정규화가 적용된다!!

목적이 기본키이고 담당도선사를 종속하는 릴레이션을 새로 구축한다. 그리고 도크릴레이션에는 담당도선사만 제거한다.

4. BC정규형

1) BC정규형의 정의

정의
릴레이션이 제3정규형을 만족하고 릴레이션에서 성립하는 X→Y 형태의 모든 함수적 종속성에 대하여 X가 슈퍼키인 상태

슈퍼키: 기본키가 될 수 있는 컬럼

입출항관리 릴레이션(제3정규화가 적용된 도크릴레이션)의 함수적 종속성
- {도크번호, 입항시간} → {목적}
- {도크번호, 입항시간} → {출항시간}
- {목적} → {도크번호}

현상태에서 입출항관리 릴레이션에 BC정규화를 적용시키려면 목적→도크번호 를 따로 떼어내야한다.

2) BC정규화의 적용

항상 종속자를 떼어내는 것이고 결정자를 남겨둔다.
목적이 도크번호를 종속한다는것은 목적이 결정자가 되고 도크번호가 종속자가된다.
그러므로 도크번호를 떼어내야한다.
목적이 기본키이고 도크번호를 종속하는 릴레이션을 추가로 생성하고 기존 입출항관리 릴레이션에서 도크번호를 떼어낸다.
입출항관리 릴레이션의 기본키를 목적과 입항시간으로 두고 출항시간을 종속하도록한다.

 

2018/05/15 - [방송통신대학교/컴퓨터과학과 [3학년 1학기]] - [데이터베이스] 5강 정규화 기초

2018/03/21 - [방송통신대학교/컴퓨터과학과 [3학년 1학기]] - [데이터베이스] 4강 데이터베이스 언어

2018/03/19 - [방송통신대학교/컴퓨터과학과 [3학년 1학기]] - [데이터베이스] 3강 관계형 모델

2018/03/16 - [방송통신대학교/컴퓨터과학과 [3학년 1학기]] - [데이터베이스] 2강 데이터베이스 모델링

2018/03/16 - [방송통신대학교/컴퓨터과학과 [3학년 1학기]] - [데이터베이스] 1강 데이터베이스의 이해

1. 데이터베이스 언어의 개념

1) 데이터베이스 언어의 필요

DBMS 의 역할은 데이터의 관리와 데이터의 사용을 분리 시키는 역할을 한다.
DBMS에게 우리가 원하는것을 부탁하고 청원해야 우리가 원하는것을 얻을 수 있다.
DBMS에게 요청할때 사용하는 도구가 데이터베이스 언어이다.

2) SQL의 개요

SQL(Structured Query Language)은 관계대수에 기초하여 관계형 데이터베이스의 데이터를 관리하기 위해 설계된 언어
1986년 ANSI, 1987년 ISO에서 표준으로 제정

특징

    - 비절차적 언어, 필요한 데이터만 기술
    - 인간의 언어와 매우 유사하고 간단, 명료

3) SQL의 구분

3-1) 데이터 정의 언어 (DDL: Data Definition Language)
    - 데이터베이스 내의 객체를 생성 및 삭제하고 그 구조를 조작하는 명령어의 집합
    - 데이터가 준수해야 하는 제약조건을 기술
    - CREATE, ALTER, DROP 문 등

3-2) 데이터 조작 언어 (DML: Data Mainpulation Language)
    - DDL에 의해 정의된 테이블에 데이터를 조작하는 명령어의 집합
    - 데이터에 대한 CRUD(생성, 검색, 삭제, 수정) 명령을 포함
    - INSERT, UPDATE, DELETE, SELECT 문 등

4) 데이터 타입의 개념

컬럼이 가질 수 있는 값의 범위 즉 도메인을 결정
기본 데이터타입
    - 문자: CHAR(n), VARCHAR(n), CLOB [n은 길이를 의미함]
    - 숫자: INT, FLOAT, DOUBLE, DECIMAL(m,n) [DECIMAL은 정수(m), 소수(n)을 지정할 수 있음]
    - 날짜/시간: DATE, TIME, DATETIME, TIMESTAMP


2. 데이터의 정의

1) 테이블 생성
    새로운 2차원 형태의 테이블을 생성
    구문형식
        CREATE TABLE <테이블이름> ( <컬럼이름1> <데이터타입1> [제약조검1] ... ]

(그림 테이블 생성 질의의 사용)


2) 테이블 수정
    테이블에 새로운 컬럼을 추가, 삭제 및 수정하여 구조를 변경
    구문형식
        컬럼추가: ALTER TABLE <테이블이름> ADD <컬럼이름><데이터타입><제약조건>
        컬럼삭제: ALTER TABLE <테이블이름> DROP <컬럼이름>
        컬럼수정: ALTER TABLE <테이블이름> CHANGE <컬럼이름><데이터타입>
(그림 테이블 수정 질의의 사용1) 컬럼 추가


3) 테이블 삭제
    테이블을 데이터베이스에서 삭제
    구문형식
        DROP TABLE <테이블이름>


3. 데이터의 조작

1) 데이터 삽입

1-1) INSERT문
    - 테이블에 새로운 레코드를 삽입
    - 모든 속성 또는 부분 속성에 대한 속성값을 삽입
    구문형식
        INSERT INTO <테이블이름> VALUES ( v1, v2 ... Vn)
        INSERT INTO <테이블이름>(컬럼1, 컬럼2, ... 컬럼n) VALUES (V1, V2, ... Vn)
        VALUES 에 문자 입력시 값의 양쪽에 작은 따옴표를 붙여야하고 숫자의 경우 붙이지 않아도 된다.

2) 데이터 수정

2-1) UPDATE문
    - 조건을 만족하는 레코드의 특정 컬럼을 수정
    구문형식
        UPDATE <테이블이름> SET <컬럼1> = <값> [, <컬럼2> = <값2] , <컬럼3> = <값3>] <WHERE> 조건

3) 데이터 삭제

3-1) DELETE문
    - 조건을 만족하는 레코드를 삭제
    구문형식
        DELETE FROM <테이블이름> <WHERE> 조건

4) 데이터 검색

4-1) 기본 SELECT 질의
    - 테이블에서 조건을 만족하는 전체 또는 특정 레코드를 검색
    - 한 개 또는 그 이상의 테이블에서 데이터 검색 가능

JOIN문 사용
    SELECT 이름, 교수.학과명, 캠퍼스 FROM 교수, 학과 WHERE 교수.학과명 = 학과.학과명

4-2) 집계함수를 사용한 SELECT 질의
    - 복수개의 레코드에 존재하는 특정 컬럼값에 집계함수를 통해 다양한 계산을 수행할 수 있는 기능
    - 집계함수의 종류
        COUNT, SUM, AVG, MAX, MIN

4-3) 그룹질의
    - 특정 기준으로 레코드를 그룹화하고 각 레코드 그룹에 대해 집계함수를 적용하는 질의
    구문형식
        SELECT 질의 GROUP BY 컬럼
            - 주의: 출력되는 컬럼에 그룹의 기준과 집계 함수 이외의 어떠한 값도 포함될 수 없음
        SELECT 학과명, COUNT(과목명) AS 개설_강의수 FROM 과목 GROUP BY 학과명

4-4) 중첩질의
    - SELECT문 내부에서 독립적으로 실행 가능한 또 다른 SELECT문이 내포되어 있는 질의
    종류
        - FROM 절에서의 중첩 질의 활용
            FROM절에서의 결과집합을 SELECT에서 재검색
        - WHERE 절에서의 중첩 질의 활용
            WHERE절에서의 결과 집합을 활용하여 외부 질의에서 레코드의 출력 여부를 결정
            IN, NOT IN, EXISTS, NOT EXSISTS 사용

4-5) 뷰의 정의


    - 하나 이상의 원본테이블로부터 유도되어 일반 테이블처럼 조작 할 수 있는 가상 테이블
    - 물리적으로 저장되지 않음
구문형식
    CREATE VIEW 뷰이름 AS [질의]


1. 알고리즘 기본개념

1) 알고리즘 생성단계
    설계 > 표현/기술 > 정확성 검증 > 효율성 분석

2. 기본 자료구조

1) 알고리즘에서 자료구조는?

1-1) 자료구조
    - 컴퓨터 기억공간 내에 자료를 표현하고 조직화 하는 방법
    - 프로그램 = 자료구조 + 알고리즘
    - 자료구조에 대한 고려 없는 효율적인 알고리즘의 선택, 또는 알고리즘에 대한 고려 없는 효율적인 자료구조의 선택은 무의미

기본 자료구조 =

배열, 연결리스트 , 스택 , 큐 , 트리 , 그래프

선형 자료구조 : 배열 , 연결리스트 , 스택 , 큐
    ㄴ 데이터에 순서가 있다.
비선형 자료구조 : 트리, 그래프
    ㄴ 데이터에 순서가 없다.


2) 배열

정의: 같은 자료형을 갖는 여러 개의 데이터를 하나의 변수에 저장해놓고 각각의 원소에 접근할 때에는 인덱스 첨자를 사용해서 접근하는 자료구조

특징: 논리적인 순서와 물리적인 순서가 같다.

단점: 삽입과 삭제가 발생하게되면 순서를 유지하기 위해서 자리의 이동이 불가피하다.

장점: 배열은 인덱스를 가지고 해당 원소에 직접접근하는 특징을 가지고 있다. 배열은 데이터가 어디에 저장되어있든지 어디로든 접근의 시간이 동일하다.

3) 연결리스트

하나의 원소는 노드라고 한다. 데이터가 들어가는 곳을 필드라고 한다.
하나의 노드는 하나의 데이터필드와 하나의 링크필드로 표현된다.

특징: 논리적순서와 물리적인순서가 같지 않다. 링크필드의 의미는 다음 노드의 메모리 주소값을 저장하고 있다.

장점: 삽입과 삭제가 간단하다.

단점: 특정 데이터를 찾아갈때는 처음부터 찾아가야 한다는 단점이 있다.


2-1,3-1) 배열과 연결리스트의 종류

배열 : 1차원 2차원 다차원배열

연결리스트: 단일 연결, 단일 원형 연결, 이중 연결, 이중 원형 연결

주어진 문제에 따라 자료구조를 선택해야 함.

접근을 빨리 하고싶으면 배열을 쓰는게 좋고 데이터의 접근보다는 데이터의 삽입과 삭제가 많다면 연결리스트 사용이 효과적일 수 있다.


4) 스택

정의: LIFO (Last In First Out) 후입선출 입구와 출구가 하나밖에 없는 구조

top : 스택에 데이터가 어디까지 쌓여져 있는가를 알림.

push: 삽입하는 연산

pop: 삭제하는 연산

데이터가 삽입 삭제때마다 top이 가리키는 위치가 달라짐.

5) 큐

정의: FIFO (First In FIrst Out) 선입선출 입구와 출구가 정방향

front: 삭제와 관련

rear: 삽입과 관련

삽입이 이뤄질경우 rear가 가리키는 값이 바뀜.

삭제가 이뤄질경우 front가 가리키는 값이 바뀜.


6) 트리

정의: 하나 이상의 노드로 구성된 유한 집합 T

조건1: T의 원소 가운데 단 하나의 루트 노드가 존재
조건2: 루트 노드를 제외한 나머지 노드는 n개의 서로 분리된 부분집합 T1, T2, TN(서브트리) 으로 나누어진다

주요 용어:

차수

리프노드(단말노드)

부모,자식,형제 노드

조상(선조) 후손(자손)

레벨 높이 깊이

6-1) 이진트리

정의: 각 노드의 차수가 2이하인 순서 트리

특성:
    - 레발 i에서 최대 노드의 개수 = 2의 i승
    - 높이 h에서 이진 트리의 최대 노드의 개수 = 2의 h승 - 1
    - 단말 노드(자식이 없는 노드)의 수 n0 = 차수가 2인 노드의 수에 +1 하면 된다. 
        n0 = n2 + 1

종류:
    - 포화 이진트리 : 높이 h 까지 중간에 빈 자리 없이 꽉 차있는 트리
    - 전 이진트리: 각 노드의 차수 = 0 이거나 2. 전 노드의 차수가 1인 경우가 없는 트리
    - 완전 이진트리: 노드의 레벨의 마지막 레벨 전까지가 포화 이진트리이고 마지막 레벨의 노드들이 왼쪽에서부터 마지막까지 중간에 빠짐없이 채워져있는 트리
    - 균형 이진트리: 왼쪽 서브트리와 오른쪽 서브트리의 노드레벨 차이가 1 이내인 트리

구현:
      * 배열을 이용하는 방법

* 연결리스트를 이용하는 방법

7) 그래프

정의: 그래프 G=(V,E)
    V: 정점의 집합, E: 간선의 집합

간선이 방향성이 있느냐에 따라 무방향과 방향그래프로 나뉜다.

각 정점을 잇는 선이 간선이다.

간선들에 값을 줄 수 있다. 비용이라 칭함. 간선들에 비용이 있는 그래프를 가중그래프(가중치그래프)라 한다.

7-1) 무방향 그래프

간선의 표현: (1,2) = (2,1)

그래프 표현: V(G) = { 1,2,3,4,5 } , E(G) = { (1,2),(1,3),(2,4),(3,5) }

7-2) 방향 그래프

간선의 표현: <1,2>


주요 용어:

인접,부수, 부분그래프, 경로, 경로의 길이, 차수(방향그래프 > 진입 차수 , 진출 차수), 단순 경로, 사이클, 루프, 연결, 강력 연결

구현

1) 인접 행렬

2) 인접 리스트

2018/05/15 - [방송통신대학교/컴퓨터과학과 [3학년 1학기]] - [데이터베이스] 5강 정규화 기초

2018/03/21 - [방송통신대학교/컴퓨터과학과 [3학년 1학기]] - [데이터베이스] 4강 데이터베이스 언어

2018/03/19 - [방송통신대학교/컴퓨터과학과 [3학년 1학기]] - [데이터베이스] 3강 관계형 모델

2018/03/16 - [방송통신대학교/컴퓨터과학과 [3학년 1학기]] - [데이터베이스] 2강 데이터베이스 모델링

2018/03/16 - [방송통신대학교/컴퓨터과학과 [3학년 1학기]] - [데이터베이스] 1강 데이터베이스의 이해

1. 관계형 모델의 개념

1) 데이터베이스 모델링 과정
    개념적 데이터모델링 > 개념스키마 > 논리스키마 > 물리스키마 > DB

2) 논리적 데이터 모델링
    - 특정 DBMS에서 사용하는 데이터 모델에 맞추어 데이터를 표현하는 과정
    - 데이터 정의 언어로 기술된 논리 스키마 생성
    - 관계형 모델(releational model)
        * 1969년 에드가 F.코드에 의해 제안
        * 릴레이션(releation)으로 데이터를 표현하는 모델
        * 데이터 표현이 단순하고 직관적
        * 현재 대다수 DBMS의 기초

3) 릴레이션의 특징
    - 레코드의 유일성: 중복된 레코드가 존재 불가능
    - 레코드의 무순서성: 레코드의 순서는 의미가 없음
    - 컬럼의 무순서성: 컬럼은 순서가 없고, 이름과 값의 쌍
    - 컬럼값의 원자성: 모든 값들은 나눌수 없는, 단 하나의 의미

4) 키의 사용
    - 릴레이션의 레코드를 유일하게 식별하는 값

4-1) 키의 종류 및 속성
    키의 속성: 유일성, 최소성
    키의 종류:
        수퍼키: 유일성 만족
        후보키: 유일성, 최소성 만족
        기본키: 레코드의 구분을 위해 선택된 후보키
        외래키: 참조된 다른 릴레이션의 기본키
    키의 참조:
        두 릴레이션에 포함된 레코드 간 연관성을 표현

5) 관계형 모델의 제약조건

영역 제약 조건
    - 컬럼에 정의된 영역(domain)에 속한 값으로만 컬럼값이 결정
키 제약 조건
    - 키는 레코드를 고유하게 구별하는 값으로 구성
개체 무결성 제약조건
    - 어떠한 기본키 값도 널(null) 값이 될 수 없음
참조 무결성 제약조건
    - 두 릴레이션의 레코드 사이에 일관성을 유지에 사용


2. ER다이어그램의 변환

1) 관계형 모델로 변환 예

강좌 - 강의 → 강사
1:N의 관계에서 외래키는 N의 릴레이션에 1의 기본키를 외래키로 사용한다.
다중값속성 ( {} )은 원자성에 어긋나므로 별도의 릴레이션으로 만든다.

강사 ← 부양(약한관계집합) = 가족
약한관계집합 ( 관계: 마름모꼴의 테두리가 두 줄 ) 약한 개체집합 에서 전체참가( 두 줄로 연결 ) 1:N의 릴레이션에서 약한릴레이션은 외래키 및 기본키로 1 의 릴레이션의 기본키를 사용하고 두번째 기본키로 약한집합의 기본키로 사용할 수 있는것을 사용한다.

회원 - 수강[날짜] - 강좌 (N:N 관계)
N:N 의 관계에서는 반드시 관계집합 자체가 별도의 릴레이션으로 만들어져야 한다.
별도의 릴레이션에는 양쪽 릴레이션의 기본키를 가져와서 별도의 릴레이션에 외래키기본키로 컬럼을 생성해야한다.

3. 관계 대수의 사용

1) 관계연산의 개념
    - 관계형 모델을 기반으로 구성된 릴레이션을 사용하여 새로운 릴레이션을 생성하는 표현
    - 사용자의 관점에서 필요한 데이터를 릴레이션에서 추출하는 방법을 제공하는 도구
    - 관계 대수(relational algebra)
        * 관계 연산을 정의하는 방법
        * 주어진 릴레이션에서 필요한 릴레이션을 만드는 연산자로 구성

2) 셀렉트 연산자
    - 주어진 릴레이션에서 조건을 만족하는 레코드 만을 갖는 릴레이션을 추출
    (그림 셀렉트연산자)


    - 교수라는 릴레이션에서 학과명이 컴퓨터과학과인 레코드를 가져와라.
    (그림 셀렉트연산자2)

 

3) 프로젝트 연산자
    - 기술된 컬럼만 갖는 릴레이션을 추출
    (그림 프로젝트 연산자)


    - 교수 릴레이션에서 이름과 연봉만 알고싶다.
    (그림 프로젝트 연산자2)

 

4) 집합 연산자
    - 수학적 집합 이론에서의 이진 연산
        합집합, 교집합, 차집합
    - 집합 연산자 사용 조건
        릴레이션 R과 S의 차수가 동일
        모든 i에 대해 R의 i번째 컬럼의 도메인과 S의 i번째 컬럼의 도메인이 반드시 동일

5) 카티시언 프로덕트 연산자
    - 두 릴레이션에 포함된 레코드 간의 모든 조합을 생성하는 연산자
        R X S
    - 각각 m개와 n개의 레코드, a개와 b개의 컬럼이 존재하는 R과 S릴레이션의 경우, R X S는
        a + b 개의 컬럼
        m x n 개의 레코드

6) 조인 연산자
    - 두 릴레이션에서 조건을 만족하는 레코드를 결합한 레코드로 구성된 릴레이션을 생성
    (그림 조인연산자)


    조인과 카티시언의 다른점
        카티시언은 무작정 짝짖는거고 조인은 조건을 만족시키는것만 짝지음
        카티시언을 수행 한 후 조건을 만족시키는 레코드만 남기는것으로 수행

7) 집계함수 연산
    - 집계 함수를 값들의 집합 또는 레코드의 집합에 적용하는 연산
    (그림 집계함수)

7-1) 칼리그래프G 의 왼쪽부분에 레코드 그룹핑을 시킬 수 있다.
(그림 집계함수 그룹화)

2018/05/15 - [방송통신대학교/컴퓨터과학과 [3학년 1학기]] - [데이터베이스] 5강 정규화 기초

2018/03/21 - [방송통신대학교/컴퓨터과학과 [3학년 1학기]] - [데이터베이스] 4강 데이터베이스 언어

2018/03/19 - [방송통신대학교/컴퓨터과학과 [3학년 1학기]] - [데이터베이스] 3강 관계형 모델

2018/03/16 - [방송통신대학교/컴퓨터과학과 [3학년 1학기]] - [데이터베이스] 2강 데이터베이스 모델링

2018/03/16 - [방송통신대학교/컴퓨터과학과 [3학년 1학기]] - [데이터베이스] 1강 데이터베이스의 이해

1. 모델링의 과정

1) 모델링이 필요한 이유

처음과 의도한대로 만들기 위해서 설계라는 과정이 필요함

1-1) 비즈니스적 관점

어떤 데이터를 저장해야 하는가?

1-2) 컴퓨터 프로그래머 관점

어떻게 데이터를 저장해야 하는가?

2) 사용자 요구사항 분석 단계

2-1) 요구사항 도출

- 구축대상, 프로젝트 목표, 범위를 기준으로 조사범위를 결정
- 업무관계자와 인터뷰
- 외부자료 수집 및 분석

2-2) 요구사항 분석

- 도출된 요구사항의 명확성, 모호성 검증
- 요구사항을 분류하여 통합 또는 분리
- 불완전한 부분이 존재할 경우 이전 단계 재수행

2-3) 요구사항 기록

- 요구사항 목록 정리 및 관리자의 승인
- 정리된 요구사항을 형식에 맞춰 문서화
- 미비 사항이 존재할 경우 이전 단계 재수행
- 프로젝트 종료 때까지 반영 여부 지속적 관리

3) 데이터베이스 모델링 과정

3-1) 개념적 데이터 모델링

- 요구사항의 해석 오류를 피하기 위해 사용
- 실세계의 데이터들을 개념적으로 일반화시켜 구조, 데이터 타입, 속성 관계, 제약조건을 이끌어내는 과정

3-2) 논리적 데이터 모델링

- 특정 DBMS의 구현 모델에 맞춰 데이터를 표현하는 과정
- 데이터 정의 언어로 기술된 논리 스키마 생성

3-3) 물리적 데이터 모델링

- DB 파일의 내부 저장구조, 파일 구성, 인덱스, 접근경로 등을 결정하는 과정

2. ER 모델의 정의

1) 개념

1976년 Peter Chen 박사에 의하여 제안
개념적 모델링 단계에서 사용되는 데이터 모델
실세계의 속성들로 이루어진 개체(entity) 와 개체사이의 관계(relationship)를 정형화 시킨 모델

구성요소 > 개체집합, 관계집합, 속성

2) 개체 집합

2-1) 개체 (entity) 1row

- 실세계에 존재하는 다른 객체와 구별되는 유무형의 사물
- 개체를 설명하는 여러 속성들로 구성

2-2) 개체 집합(entity set) table?

- 같은 속성을 공유하는 개체들의 모임

3) 관계 집합

3-1) 관계

- 개체와 개체 사이의 연관성

3-2) 관계 집합

- 개체 집합 간의 전체적 연결 관계

4) 속성의 개념

- 개체를 구체적으로 설명하는 특성
- 속성에 포함될 수 있는 값의 특성에 따라 여러 종류로 구성

4-1) 속성의 종류

단순속성: 더 이상 작은 구성요소로 나눌수 없는 속성
 예) 회원이름 , 키 , 몸무게

복합속성 : 들여쓰기 사용
 예) 주민등록번호(생일 년월일 성별코드 지역코드)

단일값 속성: 하나의 개체에 대해 단 하나의 값만을 갖는 속성
 예) 회원개체집합의 회원번호, 회원이름

다중값 속성: 하나의 개체에 대해 여러개의 값을 갖는 속성
 예) 회원개체집합의 전화번호(여러개가 들어갈 수 있다) { } 중괄호 사용

유도 속성: 다른 속성의 값으로부터 값이 유추될 수 있는 속성

저장 속성: 유도 속성을 위해 사용될 수 있는 속성
 예) 회원개체집합의 주민등록번호에서 나이를 유추할 수 있으므로 소괄호를 사용

널(null) 속성: 특정 개체가 일부 속성값을 가지지 못하여 null 값을 갖는 속성
    - 특정 개체가 가지는 값을 모르는(입력되지 않은) 경우
    - 특정 개체에 일부 속성이 적용이 될 수 없는 경우

5) 제약조건

- 데이터 모델은 데이터, 의미, 구조, 연관성 및 데이터의 조건을 표현하기 위한 도구
- ER모델은 개체와 관계에 대한 표현을 명확하게 하기위해 데이터가 항상 준수해야 하는 제약조건을 정의할 수 있는 방법을 제공

5-1) 사상수 (mapping cardinality)

관계 집합에 참가한 개체 집합에 대해 각각의 개체가 얼마만큼의 관계를 맺을 수 있는지 명시한 수
1:N, N:1, N:N

※ 일대일 사상수 표현 (보유라는 마름모꼴로 양쪽의 화살표(1을의미))
 예) 스포츠센터의 강사에게 월급을 주기 위한 계좌번호관계

※ 일대다 사상수 표현 (강의라는 마름모꼴로 강사쪽에 화살표 강좌에는 화살표 없는 선)
 예) 강사가 다수의 강좌를 담당할 수 있는 관계

※ 다대다 사상수 표현 (담당이라는 마름모꼴로 양쪽에 화살표 없는 선)
 예) 강사가 여러명의 회원을 담당할 수 있고 회원이 여러명의 강사와 담당관계가능

5-2) 참가 제약조건 (participation constraints)

전체적 참가: 어떤 개체 집합의 모든 개체가 특정 관계 집합에 참여 하는 조건
부분적 참가: 어떤 개체 집합의 일부 개체가 특정 관계 집합에 참여 하는 조건

예) 한명의 강사는 여러개의 강좌를 강의할 수 있고 하나의 강좌는 반드시 하나의 강사에 의해서만 진행될 수 있다. 모든강사는 강의에 참여하는것은 아니다. 모든강좌는 반드시 강의를 진행하는 강사가 있다.

(그림 참가제약조건의예)

 

(그림 참가제약조건의예2)

5-3) 키 속성

키(key): 각 개체를 구별하는데 사용되는 유일한 값을 가지는 속성의 집합
 예) 회원개체집합의 회원번호 개체가 키가 될 수 있다.
 표현) 밑줄

5-4) 특수속성과 관계

관계집합의 속성: 두 개체 집합의 관계에서 생성되는 값을 저장하는 속성
재귀적 관계: 한 개체 집합이 자기 자신과 관계 집합을 형성하는 관계

5-5) 특수관계

약한 개체 집합: 개체의 존재 유무가 관계를 맺고 있는 개체의 존재에 종속되는 개체집합
강한 개체 집합: 약한 개체 집합과 연결되는 일반 개체 집합

3. ER 모델링

학사지원 시스템의 요구사항 분석

● 본교의 학사지원 시스템은 여러 명의 교수와 학생들 그리고 과목 정보를 관리하기 위한 시스템이다.
● 학생은 학번, 이름, 학년, 소속학과 정보를 가지며, 교수는 교번, 이름, 연봉 정보를 가진다. 과목은 학수번호, 과목명, 학점 정보를 가진다. 과목은 한 개 이상의 분반으로 이루어진다. 분반은 번호, 학기, 연도 정보를 관리한다. 추가적으로 과목은 선수과목정보를 가진다.
● 하나의 학생은 한 명의 교수와 지도교수 관계를 맺을 수 있으며, 한 명의 교수는 복수의 학생을 지도할 수 있다. 학생은 여러 개의 과목을 수강할 수 있으며, 교수는 여러 개의 과목을 강의할 수 있다. 하나의 과목은 여러 명의 학생이 수강할 수 있으나, 강사는 1명으로 제한된다. 수강 및 강의 시 학수번호와 분반번호를 같이 기술해야 한다.

(그림 학사지원 시스템의 ER모델)

2018/05/15 - [방송통신대학교/컴퓨터과학과 [3학년 1학기]] - [데이터베이스] 5강 정규화 기초

2018/03/21 - [방송통신대학교/컴퓨터과학과 [3학년 1학기]] - [데이터베이스] 4강 데이터베이스 언어

2018/03/19 - [방송통신대학교/컴퓨터과학과 [3학년 1학기]] - [데이터베이스] 3강 관계형 모델

2018/03/16 - [방송통신대학교/컴퓨터과학과 [3학년 1학기]] - [데이터베이스] 2강 데이터베이스 모델링

2018/03/16 - [방송통신대학교/컴퓨터과학과 [3학년 1학기]] - [데이터베이스] 1강 데이터베이스의 이해

1. 데이터베이스의 개념

사용: 은행 항공 대학 등등등등 많다

데이터베이스가 없으면 원하는 자료를 찾는데 소요되는 비용이 너무 크다. 

1) 파일처리시스템
    DB가 개발되기전에 데이터관리에 사용
    업무 별 작성되는 각각의 어플리케이션이 개별적으로 자신의 데이터를 케어하는 시스템

    1-1) 데이터 종속의 문제
        저장된 데이터가 특정 HW 또는 SW에서만 사용될수 있도록 제한되는 문제
        - 물리적 데이터 독립성
        - 논리적 데이터 독립성

    1-2) 데이터 중복의 문제
        동일한 사항에 대한 데이터를 복수 개 저장할 경우 일관성, 보안성, 경제성 측면에서 문제 발생
        - 일관성: 한가지 사실에 대해 한 개의 데이터 값을 유지
        - 보안성: 같은 데이터에 같은 수준의 보안 유지
        - 경제성: 데이터에 대해 최소한의 저장 공간 만을 점유

    1-3) 무결성 훼손의 문제
        실세계의 데이터는 어떤 현상에 대한 값을 유지하고 있을 뿐만 아니라 데이터가 가질 수 있는 기능범위를 포함
        - 현상에 대한 값의 예: '홍길동'의 수강과목
        - 가능 범위의 예: 1학기 최대 수강과목 18학점
        데이터 무결성
        - 데이터의 정확성 보장
        - 데이터의 값과 값에 대한 제약조건을 동시에 만족
        파일 시스템은 데이터 무결성을 보장하기 위한 기능을 제공하지 않음

    1-4) 동시접근의 문제
        동일 데이터에 다수 사용자의 접근 허용 시 일관성이 훼손

2. 특징

DB 관련 용어
    데이터: 어떠한 사실에 대한 정량적, 정성적 특징을 나타낼 수 있는 값과 값에 대한 설명
    데이터베이스: 특정 기관의 애플리케이션 시스템에서 사용되는 데이터의 집합
    DBMS: 데이터베이스에 저장된 데이터의 구성, 저장, 관리, 사용을 위한 소프트웨어 패키지
    데이터베이스 시스템: 정보를 데이터베이스에 저장, 관리하여 사용장게 요구된 형태의 정보로 제공하는 컴퓨터 기반 시스템

데이터베이스 사용의 의미
    이전의 파일처리시스템에서의 데이터사용과 데이터관리를 DBMS를 통해 이원화 시킨것.

특성)

DB 시스템의 자기 기술성
 - 설명(메타데이터)을 포함
프로그램과 데이터의 격리 및 추상화
 - 사용제에게 개념적인 표현을 제공하여 접근성을 향상
다중 뷰 제공
 - 각 사용자가 관심을 갖은 데이터베이스의 일부만을 표현할 수 있는 기능 제공
다수 사용자 트랜잭션 처리
 - 동시성 제어 기능

값, 데이터, 메타데이터의 차이)

12
값: 숫자 12의 순수한 의미
데이터: 숫자 12와 어떤것을 의미 하는지에 대한 설명 (오늘일자 낮 최고기온)
메타데이터: 숫자 12의 설명 (오늘일자 낮 최고기온)

DBMS의 구조)
    개념적 > 논리적 > 물리적

3. 모델

개념)
    사용 가능한 데이터만을 선별하여 구조화된 DB에 저장 사용할 방법이 필요
    데이터모델: 관계형, ER, 객체지향적 모델 등

1) ER(entity-relationship model) 모델
    실세계 인식에 기초하여 실세계의 객체(object)를 나타내는 개체(entity)들과 개체들간의 관계(relationship)로 구성

2) 관계형(relational model) 모델
    릴레이션이라고 하는 표 형태의 구조를 사용하여 데이터를 저장, 관리하는 모델

관계형 모델로 가기전에 ER 모델을 사용한 후 관계형으로 진행된다.

4. 구성요소

1) DB 언어

1-1) 개념: DBMS는 사용자가 DB를 쉽게 사용하고 다룰 수 있도록 언어 형태의 인터페이스를 제공
                역할에 따라 종류의 언어로 구분 데이터정의언어(DDL) , 데이터조작언어(DML)
            현대 DB언어는 자연어와 유사한 형태의 SQL로 표준화

1-2) 데이터정의언어 DDL (Data Definition Language)
        DB 스키마를 정의하기 위한 언어

1-3) 데이터조작언어 DML(Data Manipulation Language)
        구조화된 데이터에 사용자가 접근 및 조작할 수 있도록 지원하는 언어(검색,삽입,삭제,수정)

5. 시스템 아키텍처

1) 개념

1-1) 중앙집중식 방식
        - 단일 서버가 다수의 클라이언트 장치를 대신하여 작동
        - 중앙 컴퓨터의 과부하로 전체적인 성능 저하

1-2) 분산시스템 방식
        - 클라이언트 장치의 성능 향상으로 자체적인 처리 능력 보유
        - 클라이언트-서버 데이터베이스 시스템

* 클라이언트 - 서버 구조
2 tier: 사용자, 애플리케이션, 데이터베이스
3 tier: 사용자, 애플리케이션 클라이언트, 애플리케이션 서버, 데이터베이스 

01. 논리연산

2진 디지털 시스템에서 입출력 관계를 표현하는 방법
    - 그래프나 진리표로 표시
    - 논리함수로 표시
        * 입력에 따라 변수가 어떻게 변하는가를 나타내는 함수로 표현
        * 입력이 2진 논리값이므로 논리함수 (F = X)로 나타낸다.

1) 논리연산의 개요

2) 논리집합과 논리연산

2-1) 논리집합(부울집합)
    - 집합이 0(거짓)과 1(참)으로만 구성된 집합 {0,1}
2-2) 논리연산(부울연산)
    - 두 개의 이산값에 적용되는 연산
2-3) 논리집합 {0,1}에 대한 세 가지 논리연산
    - AND 연산
    - OR 연산
    - NOT 연산


 

02. 논리게이트

1) 기본 논리게이트

AND, OR, NOT 게이트

1-1) AND 게이트

F = XY (X Y 사이의 도트 생략)
입력은 왼쪽에서 출력은 오른쪽으로
(그림 AND게이트) 반달모양으로 표현한다.


 

1-2) OR 게이트

F = X + Y (반달에서 입력쪽이 움푹 들어가게 표현한다.)
논리합은 입력으로 모두 거짓이 들어왔을때만 거짓이고 참이 하나만 있어도 출력이 참이다.

1-3) NOT 게이트

F = X (오버바) (세모에 출력에 조그마한 원이 있다.)
(그림 NOT 게이트)



2) NAND 게이트와 NOR 게이트

2-1) NAND 게이트

F = XY(오버바(NOT)) 
AND 게이트의 반대 참과 참이 입력되었을때는 거짓이고 나머지는 전부 1
(그림 NAND게이트)

2-2) NOR 게이트

F = X+Y(오버바(NOT)) 
(그림 NOR게이트)

3) XOR 게이트와 XNOR 게이트

X = EXCLUSIVE

3-1) XOR 게이트

서로 다른 입력이 들어올때만 출력에 참이 된다.
(그림 XOR게이트)

3-2) XNOR 게이트

서로 같은것이 들어올때만 1이되고 다르면 0이된다.
(그림 XNOR게이트)


03. 부울대수(Boolean Algebra)

1) 부울대수의 개요

부울대수: 0과 1의 값을 갖는 논리변수와 논리연산을 다루는 대수
부울함수: 논리변수의 상호관계를 나타내기 위해 부울변수, 부울연산기호, 괄호 및 등호 등으로 나타내는 대수적 표현

1-1) 부울함수와 논리회로도

- 부울함수는 논리 게이트들로 구성되는 논리회로도 작성 가능

1-2) 부울함수와 진리표

- 진리표(truth table)
    * 논리변수에 할당한 0과 1의 조합의 리스트

- 부울함수는 진리표로 나타낼 수 있다.

관계
    - 부울함수에 대한 진리표는 하나이다.
    - 그러나 동일 진리표를 만족하는 부울함수는 여러 개가 될 수 있다.
    - 따라서 동일 진리표에 대한 논리회로도는 여러 개가 될 수 있다.
        * 결론적으로 논리회로도는 단순해야 한다.
            (복잡하면 게이트 수, 게이트의 입력 수가 많아지므로 비효율적)
        * 따라서 부울함수의 단순화(간소화)가 필수

1-3) 부울함수의 간소화 필요성 

(그림 부울함수의간소화필요성)


왼쪽과 오른쪽 회로도는 동일한 진리표를 가진다.

① 부울함수의 간소화 방법

- 대수적인 방법
- 도표를 이용하는 방법
- 테이블을 이용한 방법 (입력변수가 많이 있을 때 알고리즘을 통한 간소화 ㅂ

2) 기본 공식

(그림 부울대수 간소 기본공식)

그림의 9번을 제외한 나머지는 왼쪽과 오른쪽이 대비되어있다. 이것이 쌍대정리라한다.

쌍대정리, 드모르간의 법칙이 가장 중요한 개념이다.


3) 부울함수의 대수적 간소화

3-1) 항 결합
(그림 항결합)

3-2) 간소화 예제
(그림 간소화예제)

1. 운영체제의 개요

cpu의 동작모드

1) 슈퍼바이저모드(커널모드)
운영체제의 커널이 동작되는 모드
하드웨어를 직접 제어할 수 있는 cpu 명령어 사용 가능

2) 보호모드(사용자모드)
응용프로그램이 동작되는모드
cpu명령어 사용 불가능

 

시스템호출이란?
응용프로그램이 운영체제에게 서비스를 요청하는 메커니즘

시스템호출 > 보호모드에서 슈퍼바이저모드로 변경 > 커널동작 > 하드웨어 제어

 

커널

  • 운영체제의 핵심 요소
  • 응용프로그램과 하드웨서 수준의 처리 사이의 가교 역할

 1) 일체형커널(monolithic kernel)
     운영체제의 모든 서비스가 커널 내에 포함됨
     장점 : 커널 내부 요소들이 서로 효율적으로 상호작용을 할 수 있음
     단점 : 한 요소에 있는 오류로 인해 시스템 전체에 장애가 발생할 수 있음
     예) UNIX, Linux

 2) 마이크로 커널 (microkernel)
     운영체제의 대부분의 요소들을 커널 외부로분리
     커널내에는 메모리 관리, 멀티태스킹, 프로세스 간 통신(PC)등 최소한의 요소들만 남김
     장점: 새로운 서비스를 추가하여 운영체제를 확장하기 쉬움, 유지보수가 용이하며 안정성이 우수함
     단점: 커널 외부 요소들 사이는 IPC(프로세스간통신)를 통해야만 하므로 성능 저하가 발생함

 

필요에따라 그때그때 맞는 커널을 사용해 운영체제를 개발하는게 필요함.


 

2. 운영체제의 구성

 1) 프로세스 관리자
     프로세스를 생성,삭제, CPU할당을 위한 스케줄 결정
     파일로 존재하던 프로그램을 메모리에 올리고 CPU 스케줄링

 2) 메모리 관리자
     메모리 공간에 대한 요구의 유효성 체크
     메모리 할당 및 회수
     메모리 공간 보호

 3) 장치 관리자
     컴퓨터 시스템의 모든 장치를 관리
     시스템의 장치를 할당, 작동 시작, 반환

 4) 파일 관리자
      컴퓨터 시스템의 모든 파일을 관리
      파일의 접근 제한 관리
      파일을 열어 자원을 할당하거나 파일을 닫아 자원을 회수

 

3. 운영체제의 유형

   응답시간의 속도, 데이터 입력 방식에 따라 분류된다.

   1) 일괄처리(batch processing) 운영체제
        작업을 모아서 처리
        사용자와 상호작용 없이 순차적으로 실행
        효율성 평가: 처리량(주어진 시간 안에 처리된 작업의 수), 반환시간(작업의 생성 시점부터 종료 시점까지의 소요시간)
        ex) OMR

   2) 대화형(interactive) 운영체제 (A > B > C > D > A > B > C > D >... > ... )
        시분할 운영체제라고도 함
        일괄처리 운영체제보다 빠르지만 실시간 운영체제보다는 느린 응답시간 (요청한 시점부터 반응이 시작되는 시점까지의 소요시간)
        이용자에게 즉각적인 피드백 제공

   3) 실시간(real-time) 운영체제)
        가장 빠른 응답시간
        처리의 결과가 현재의 결정에 영향을 주는 환경에서 사용
        우주선 비행 시스템, 미사일 제어, 증권거래 관리 시스템, 은행 입출금 시스템 등에 사용

   4) 하이브리드 운영체제
        일괄처리 운영체제와 대화형 운영체제의 결합
        이용자는 터미널을 통해 접속하고 빠른 응답시간을 얻음
        대화형 작업이 많지 않을 경우 백그라운드에서 배치 프로그램 실행 (대부분의 운영체제)


4. 운영체제의 역사


© 2015 Jundol in 음 아마 비둘기보단 똑똑할꺼야
Designed by DH / Powered by Tistory
73 / 12 / 113,811