안녕하세요 의창입니다.
3.09(화)는 온라인강의라서 일차수에서는 제외하였습니다.
mySQL설치는 생략하였습니다.
Chapter 01 : 데이터베이스 시스템
데이터베이스와 데이터베이스 시스템
1) 데이터베이스의 개념
(1) 통합된 데이터(integrated data)
- 통합 시 중요한 점은 각자 사용하던 데이터의 중복을 최소화함으로써 중복 저장으로 인 한 데이터 불일치 현상
을 없애는 것
(2) 저장된 데이터(stored data)
- 문서로 보관된 데이터가 아니라 디스크, 테이프 같은 컴퓨터 저장장치에 저장된 데이터 를 의미한다.
(3) 운영 데이터(operational data)
- 조직의 목적을 위해 사용되는 데이터를 의미한다.
(4) 공용 데이터(shared data)
- 한 사람 또는 한 업무를 위해 사용되는 데이터가 아니라 공동으로 사용되는 데이터
2) 데이터베이스 특징
(1) 실시간 접근성(real time accessibility)
- 데이터베이스는 실시간으로 서비스된다.
(2) 계속적인 변화(continuous change)
- 데이터베이스에 저장된 내용은 어느 한 순간의 상태를 나타내지만, 데이터 값은 시간에 따라 항상 바뀐다.
삽입, 삭제, 수정 등의 작업으로 바뀐 데이터 값을 저장한다.
(3) 동시 공유(concurrent sharing)
- 데이터베이스는 서로 다른 업무 또는 여러 사용자에게 동시에 공유된다.
(4) 내용에 따른 참조(reference by content)
- 데이터베이스에 저장된 데이터는 데이터의 물리적인 위치가 아니라 데이터 값에 따라 참조된다.
3) 정보시스템의 발전
(1) 파일 시스템
- 데이터를 파일 단위로 파일 서버에 저장
(2) 데이터베이스 시스템
- DBMS를 도입하여 데이터를 통합관리하는 시스템
- 데이터를 가진 쪽을 서버Server라고 하고 외부에서 데이터를 요청하는 쪽을 클라이언트 라고 한다.
(3) 웹 데이터베이스 시스템
- 데이터베이스를 웹 브라우저에서 사용할 수 있도록 서비스하는 시스템
(4) 분산 데이터베이스 시스템
4) DBMS의 장점
구분 |
파일 시스템 |
DBMS |
데이터 중복 |
데이터를 파일 단위로 저장하므로 중복가능성 높음 |
DMBS를 이용하여 데이터를 공유하기 때문에 중복가능성 낮음 |
데이터 일관성 |
데이터의 중복 저장으로 일관성이 결여됨 |
중복 제거로 데이터의 일관성이 유지됨 |
데이터 독립성 |
데이터 정의와 프로그램의 독립성 유지 불가능 |
데이터 정의와 프로그램의 독립성 유지 가능 |
관리기능 |
보통 |
데이터 복구, 보안, 동시성 제어, 데이터 관리기능 등을 수행 |
프로그램 개발 생산성 |
나쁨 |
짧은 시간에 큰 프로그램을 개발할 수 있음 |
기타 장점 |
별도의 소프트웨어 설치가 필요없음 |
데이터 무결성 유지 데이터 표준 준수 유지 |
2. 데이터베이스 시스템의 구성
1) 데이터베이스 언어 SQL(Structured Query Language)
(1) 데이터 정의어 DDL(Data Definition Language)
- CREATE, ALTER, DROP문과 같이 DBMS에 저장된 테이블 구조를 정의
(2) 데이터 조작어 DML(Data Manipulation Language)
- SELECT, INSERT, DELETE, UPDATE문과 같이 데이터를 검색, 삽입, 삭제, 수정하는 데 사용하는 언어
(3) 데이터 제어어 DCL(Data Control Language)
- GRANT, REVOKE 문과 같이 데이터의 사용권한을 관리하는 언어
(4) 질의문(Query문)
- 데이터 조작어 중 데이터를 검색하는 문
- 예시 ) Book 테이블에서 모든 도서이름(bookname)과 출판사(publisher)를 검색하시오.
> SELECT bookname, publisher
> FROM Book;
- 예시2 2) 가격(price)이 10,000원 이상인 도서이름(bookname)과 출판사(publisher)를 검색하시오.
> SELECT bookname, publisher
> FROM Book
> WHERE price >= 10000;
2) 데이터베이스 사용자
(1) 일반 사용자
- 은행의 창구 혹은 관공서의 민원 접수처 등에서 데이터를 다루는 업무를 하는 사람
(2) 응용 프로그래머
- 일반 사용자가 사용할 수 있도록 프로그램을 만드는 사람
(3) SQL 사용자
- SQL을 사용하여 업무를 처리하는 IT부서의 담당자
- 데이터베이스 관리자(DBA) : DB 운영조직의 DBMS 시스템을 총괄하는 사람
필요한 지식 사용자 |
SQL 언어 |
프로그래밍 능력 |
DBMS 지식 |
데이터 구성 |
일반 사용자 |
없음 |
없음 |
없음 |
없음 |
SQL 사용자 |
높음 |
없음 |
보통 |
보통 |
응용 프로그래머 |
높음 |
높음 |
보통 |
보통 |
데이터베이스 관리자 |
높음 |
보통 |
높음 |
높음 |
3) DBMS
(1) 정의 : 사용자와 데이터베이스를 연결시켜주는 소프트웨어
(2) 역할 : DB 사용자가 DB를 생성, 공유, 관리할 수 있도록 지원해주는 총체적인 역할
4) 데이터 모델 (생략)
5) 데이터베이스의 개념구조
(1) 3단계 데이터베이스 구조
① 외부 단계 : 일반 사용자나 응용 프로그래머가 접근하는 계층
- 외부 스키마(external schema) : 뷰(View)의 개념이다.
- 대학 DB를 예로 들면 학생처의 학생 정보, 교무처의 수강 정보 등은 전체 DB의 일
부분으로 각 부서의 사용자들에게만 필요한 각각의 스키마라고 할 수 있다.
② 개념 단계 : 전체 데이터베이스 정의를 의미
- 통합 조직별로 하나만 존재하며 DBA가 관리한다.
- 개념 스키마(conceptual schema) : 저장장치에 독립적으로 기술
- 저장장치에 독립적으로 기술되며, 데이터와 관계, 제약사항, 무결성에 대한 내용포함
- 대학 DB를 예로 들면 학생정보, 수강정보 등이 모두 모인 대학 전체 DB를 뜻함.
③ 내부 단계 : 물리적 저장장치에 DB가 실제로 저장되는 방법을 표현
- 내부 스키마(internal schema)
- Index, 데이터 레코드의 배치방법, 데이터 압축 등에 관한 사항이 포함
- 대학 DB를 예로 들면 대학 전체 DB가 실제 하드디스크에 저장되는 물리적인 구조
(2) DBMS 매핑(maaping)(사상)
- 매핑을 통하여 각 단계 간 대응 관계를 정의
- 외부/개념 매핑 : 사용자의 외부 스키마와 개념 스키마 간의 매핑(사상)으로 외부 스키 마의 데이터가 개념
스키마의 어느 부분에 해당되는지 대응시킨다.
- 개념/내부 매핑 : 개념 스키마의 데이터가 내부 스키마의 물리적 장치 어디에 어떤 방법 으로 저장되는지
대응시킨다.
(3) 3단계 데이터베이스 구조의 특징 : 데이터 독립성(data independence)
① 논리적 데이터 독립성(logical data independence)
- 외부 단계와 개념 단계 사이의 독립성
- 개념스키마가 변경되어도 외부 스키마에는 영향을 미치지 않도록 지원한다.
- 즉, 논리적 구조가 변경되어도 응용 프로그램에는 영향이 없도록 하는 개념이다.
② 물리적 데이터 독립성(physical data independence)
- 개념 단계와 내부 단계 사이의 독립성
- 저장장치 구조 변경과 같이 내부 스키마가 변경되어도 개념 스키마에 영향을 미치지 않도록 지원한다.
Chapter 02 관계 데이터 모델
1. 관계 데이터 모델의 개념
1) 릴레이션(relation)
(1) 행과 열로 구성된 테이블
- 릴레이션 내에서 생성되는 관계 : 릴레이션 내 데이터들의 관계
- 릴레이션 간에 생성되는 관계
- 한 릴레이션에서 다른 릴레이션으로 식별 가능한 값을 이용하여 연결
2) 릴레이션 스키마와 인스턴스
(1) 스키마(Schema)
- RDBM의 릴레이션이 어떻게 구성되는지 어떤 정보를 담고 있는지에 대한 기본적인 구조 를 정의
(2) 인스턴스(Instance)
- 정의된 스키마에 따라 테이블에 실제로 저장되는 데이터의 집합
(3) 속성(Attribute)
- 각 열, 각각의 이름이 있으며 그 이름을 보고 어떤 정보가 담기는지 알 수 있다.
① 도메인(domain)
- 속성이 가질 수 있는 값의 집합 (Ex : 성별의 도메인 = ‘남’. ‘여’)
② 차수(degree)
- 속성의 개수
(4) 튜플(Tuple)
- 릴레이션 인스턴스의 각각의 행
① 카디날리티(Cardinality)
- 튜플의 수
3) 릴레이션의 특징
(1) 속성은 단일 값을 가진다.
(2) 속성은 서로 다른 이름을 가진다.
(3) 한 속성의 값은 모두 같은 도미엔 값을 가진다.
(4) 속성의 순서는 상관없다.
(5) 릴레이션 내의 중복된 튜플은 허용하지 않는다.
(6) 튜플의 순서는 상관없다.
4) 관계 데이터모델
- 데이터를 2차원 테이블 형태인 릴레이션으로 표현하며, 릴레이션에 대한 제약조건과 관계 연산을 위한
관계대수를 정의한다.
2. 무결성 제약조건
1) 키(Key)
- 릴레이션에서 특정 튜플을 식별할 때 사용하는 속성 혹은 속성의 집합
- 키가 되는 속성(혹은 속성의 집합)은 반드시 값이 달라서 튜플들을 서로 구별할 수 있어 야 한다.
(1) 슈퍼키(super key)
- 튜플을 유일하게 식별할 수 있는 하나의 속성 혹은 속성의 집합
- 튜플을 유일하게 식별할 수 있는 값이면 모두 슈퍼키가 될 수 있다.
- 슈퍼키는 포함하지 않아도 되는 속성을 포함할 수 있다.
(2) 후보키(candidate key)
- 튜플을 유일하게 식별할 수 있는 속성의 최소 집합
- 슈퍼키 중에서 정말로 튜플을 유일하게 식별할 수 있는 속성
- 복합키(composite key)
- 두 개의 후보키 속성을 합한 키
(3) 기본키(PK, primary key)
- 여러 후보키 중 하나를 선정해요 대표로 삼는 키
- 후보키가 하나뿐이라면 그 후보키를 기본키로 사용하면 되고 여러 개라면 릴레이션의 특성을 반영하여
하나를 선택하면 된다.
- 릴레이션 스키마를 표현할 때 기본키는 아래와 같이 밑줄을 그어 표시한다.
① 기본키 제약조건
- 릴레이션 내 튜플을 식별할 수 있는 고유한 값을 가져야 한다.
- NULL 값은 허용하지 않는다.
- 키 값의 변동이 일어나지 않아야 한다.
- 최대한 적은 수의 속성을 가진 것이라야 한다.
- 향후 키를 사용하는 데 있어서 문제 발생 소지가 없어야 한다.
(4) 대리키(surrogate key), 인조키(artificial key)
- 기본키가 보안을 요하거나, 여러 개의 속성으로 구성되어 복잡하거나, 마땅한 기본키가 없을 때는
일련번호 같은 가상의 속성을 만들어 기본키로 삼는다.
- 대리키는 DBMS나 관련 SW에서 임의로 생성하는 값으로 사용자가 직관적으로 그 값의 의미를 알 수 없다.
(5) 대체키(alternake key)
- 기본키로 선정되지 않은 후보키
(6) 외래키(FK, foreign key)
- 다른 릴레이션의 기본키를 참조하는 속성
- 다른 릴레이션의 기본키를 참조하여 관계 데이터 모델의 특징인 릴레이션 간의 관계를 표현
- 외래키가 성립하기 위해서는 참조되고 참조되는 양쪽 릴레이션의 도메인이 서로 같아 야한다.
- 참조되는 릴레이션의 기본키 값이 변경되면 이 기본키를 참조하는 외래키 값 역시 변 경되어야 한다.
- 참조하는 외래키 값이 참조되는 기본키 값에 연동된다는 의미로, 외래키는 항상 데이터 의 일관성을
유지해아 한다.
- 외래키(참조하는 키)는 참조되는 릴레이션의 기본키와 달리 NULL 값을 포함할 수 있고 중복값도 허용한다.
- 자기 자신의 기본키를 참조하는 외래키도 가능하다.
- 외래키가 기본키의 일부가 될 수 있다.
2) 무결성 제약조건(integrity)
- DB에 저장된 데이터의 일관성과 정확성을 지키는 것을 말한다.
(1) 도메인 무결성 제약조건(domain integrity constraint) = 도메인 제약
- 릴레이션 내의 튜플들이 각 속성의 도메인에 지정된 값만을 가져야 한다.
(2) 개체 무결성 제약조건(entity integrity constraint) = 기본키 제약
- 기본키는 NULL 값을 가져서는 안되며 릴레이션 내에 오직 하나의 값만 존재해야 함.
(3) 참조 무결성 제약조건(referential integrity constraint) = 외래키 제약
- 참조되는(제공하는) 릴레이션을 부모 릴레이션, 참조하는 릴레이션을 자식 릴레이션
- 자식 릴레이션의 외래키는 부모 릴레이션의 기본키와 도메인이 동일해야하며, 자식 릴 레이션의 값이
변경될 때 부모 릴레이션의 제약을 받는다는 것이다.
- 즉, 부모 릴레이션의 도메인과 다른 값으로 삽입, 수정될 경우 거부되고, 반대로 자식 릴레이션에서
참조하고 있는 값을 부모 릴레이션에서 삭제하거나 다른 값으로 변경하려 고 하면 거부된다.
구분 |
도메인 |
키 |
|
개체 무결성 제약조건 |
참조 무결성 제약조건 |
||
제약대상 |
속성 |
튜플 |
속성과 튜플 |
같은 용어 |
도메인 제약 |
기본키 제약 |
외래키 제약 |
해당되는 키 |
- |
기본키 |
외래키 |
NULL 값 허용여부 |
허용 |
불가 |
허용 |
릴레이션 내 제약조건의 개수 |
속성의 개수와 동일 |
1개 |
0~여러개 |
기타 |
튜플 삽입/수정 시 제약사항 우선 확인 |
튜플 삽입/수정 시 제약사항 우선 확인 |
튜플 삽입/수정 시 제약사항 우선 확인 부모 릴레이션의 튜플 수정/삭제 시 제약사항 우선 확인 |
3. 관계대수(relational algebra)
1) 관계대수
- 릴레이션에서 원하는 결과를 얻기 위해 수학의 대수와 같은 연산을 이용하여 질의하는 방법을 기술하는 언어
- 절차적 언어로, 하나 이상의 릴레이션에 연산을 수행하여 결과 릴레이션이 나오기까지의 절차를 확인할 수 있는
방법을 제공한다.
2) 관계대수 연산자
(1) 순수관계 연산 : 관계 데이터 모델을 위해 고안
(2) 일반집합 연산 : 수학의 집합이론에서 차용
3) 관계대수식
(1) 단항 연산자 : 연산자 <조건> 릴레이션
(2) 이항 연산자 : 릴레이션1 연산자 <조건> 릴레이션 2
(3) 괄호 안의 식이 우선하며 왼쪽에서 오른쪽으로 진행된다.
(4) 셀렉션