#21_관계 데이터베이스 특징
- 1970년 IBM에서 근무하는 E. F. Codd에 의해 처음 제안되었음
- 개체(Entity)나 관계(Relationship)를 모두 릴레이션(Relation)이라는 표(Table)로 표현
- 릴레이션은 개체를 표현하는 개체 릴레이션, 관계를 나타내는 관계 릴레이션으로 구분
- 장점 : 간결하고 보기 편리하며, 다른 데이터베이스로의 변환이 용이
- 단점 : 성능이 다소 떨어짐
#22_관계 데이터베이스의 Relation 구조
● 데이터들을 표(Table)의 형태로 표현한 것으로 구조를 나타내는 릴레이션 스키마와 실제 값들인 릴레이션 인스턴스로 구성
● 튜플(Tuple)
- 릴레이션을 구성하는 각각의 행
- 속성의 모임으로 구성
- 파일 구조에서 레코드와 같은 의미
● 속성(Attribute, 애트리뷰트)
- 데이터베이스를 구성하는 가장 작은 논리적 단위
- 파일 구조상의 데이터 항목 또는 데이터 필드에 해당
- 개체의 특성을 기술
● 도메인(Domain)
- 하나의 애트리뷰트가 취할 수 있는 같은 타입의 원자(atomic)값들의 집합
- 실제 애트리뷰트 값이 나타날 때 그 값의 합법여부를 시스템이 검사하는 데에도 이용
● 차수(Degree) : 속성(Attribute)의 개수
● 기수(대응수 ; Cardinality) : 튜플(Tuple)의 개수
#23_키(Key)의 개념 및 종류
● 데이터베이스에서 조건에 만족하는 튜플을 찾거나 순서대로 정렬할 때 기준이 되는 애트리뷰트
● 후보키(Candidate Key)
- 릴레이션을 구성하는 속성들 중에서 튜플을 유일하게 식별하기 위해 사용하는 속성들의 부분집합, 즉 기본키로 사용할 수 있는 속성들을 말함
- 릴레이션에 있는 모든 튜플에 대해서 유일성과 최소성을 만족시켜야 함
● 기본키(Primary Key)
- 후보키 중에서 선택한 주키(Main Key)
- 한 릴레이션에서 특정 튜플을 유일하게 구별할 수 있는 속성
- NULL 값을 가질 수 없음
- 기본키로 정의된 속성에는 동일한 값이 중복되어 저장될 수 없음
● 대체키(Alternate Key) = 보조키
- 후보키가 둘 이상일 때 기본키를 제외한 나머지 후보키들을 말함
- 보조키라고도 함
● 슈퍼키(Super Key)
- 릴레이션에서 같은 튜플이 발생하지 않는 키를 구성할 때, 속성의 집합으로 구성하는 것을 말함
- 릴레이션을 구성하는 모든 튜플에 대해 유일성은 만족시키지만, 최소성은 만족시키지 못함
● 외래키(Foreign Key)
- 관계(Realtionship)를 맺고 있는 릴레이션 R1, R2에서 릴레이션 R1이 참조하고 있는 릴레이션 R2의 기본키와 같은 R1 릴레이션 속성
- 외래키로 지정되면 참조테이블의 기본키에 없는 값은 입력할 수 없음
#24_무결성
- 개체 무결성 : 릴레이션에서 기본키를 구성하는 속성은 널(NULL) 값이나 중복값을 가질수 없음
ex) '학생' 릴레이션에 '학번'이 기본키로 정의 되면 튜플을 추가할 때 '주민번호'나 '성명' 필드에는 값을 입력하지 않아도 되지만 '학번' 속성에는 반드시 값이 입력되어야 함, 또한 중복 불가
- 참조 무결성 : 외래키 값은 NULL이거나 참조 릴레이션의 기본키 값과 동일해야함 즉, 릴레이션은 참조할 수 없는 외래키값을 가질 수 없음
ex) '수강' 릴레이션의 '학번' 속성에는 '학생' 릴레이션의 '학번' 속성에 없는 값은 입력할 수 없음
#25_순수관계 연산자
● 관계 데이터베이스에 적용할 수 있도록 특별히 개발한 관계 연산자
● Select(수평연산)
- 릴레이션에 존재하는 튜플중에서 선택조건을 만족하는 튜플의 부분집합을 구하여 새로운 릴레이션을 만듬
- 릴레이션에 행(가로)에 해당하는 튜플을 구하는 것이므로 수평연산이라고도 함
- 연산자의 기호는 그리스문자 시그마(σ)를 사용
- 표기 형식 : σ<조건>(R) 단, R은 릴레이션 이름
● Project(수직 연산자)
- 주어진 릴레이션에서 속성 List에 제시된 속성(Attribute)만을 추출하는 연산
- 릴레이션의 열(세로)에 해당하는 Attribute을 추출하는 것이므로 수직 연산자라고도 함
- 연산자의 기호는 그리스문자 파이(π)를 사용
- 표기 형식 : π<속성리스트>(R) 단, R은 릴레이션 이름
● Join
- 공통 속성을 중심으로 2개의 릴레이션을 하나로 합쳐서 새로운 릴레이션을 만드는 연산
- 연산자의 기호는 그리스문자 ▷◁를 사용
- 표기 형식 : R▷◁키속성r=키속성sS
단, 속성 r은 릴레이션 R의 속성이고, 키속성 s는 릴레이션 S의 속성임
● Division
- X ⊃ Y인 2개의 릴레이션에서 R(X)와 S(Y)가 있을 때, R의 속성이 S의 속성값을 모두 가진 튜플에서 S가 가진 속성을 제외한 속성만을 구하는 연산
- 표기 형식 : R[속성r : 속성s] S
단, 속성 r은 관계 R의 속성이고 속성 s는 관계 S의 속성이며, 속성 r과 속성 s는 동일 속성값을 가지는 속성이여야 함
#26_Anomaly(이상)의 개념 및 종류
● 이상(Anomaly) : 정규화를 거치지 않은 데이터베이스 내에 데이터들이 불필요하게 중복되어 릴레이션 조작 시 발생하는 예기치 못한 곤란한 현상
- 삽입 이상(Insertion Anomaly) : 릴레이션에 데이터를 삽입할 때 의도와는 상관없이 원하지 않은 값들도 함께 삽입되는 형상
- 삭제 이상(Deletion Anomaly) : 릴레이션에서 한 튜플을 삭제할 때 의도와는 상관없는 값들도 함께 삭제되는 현상
- 갱신 이상(Update Anomaly) : 릴레이션에서 튜플에 있는 속성값을 갱신할 때 일부 튜플의 정보만 갱신되어 정보에 모순이 생기는 현상
#27_정규화 과정
#28_SQL의 분류
● DDL(데이터 정의어)
- SCHEMA, DOMAIN, TABLE, VIEW, INDEX를 정의하거나 변경 또는 삭제할 때 사용하는 언어
- 데이터베이스 관리자나 데이터베이스 설계자가 사용
- 데이터 정의어(DDL)의 3가지 유형
ㆍCREATE : Schema, Domain, Table, View, Index를 정의
ㆍALTER : Table에 대한 정의를 변경하는데 사용
ㆍDROP : Schema, Domain, Table, View, Index를 삭제
● DML(데이터 조작어)
- 데이터베이스 사용자가 응용 프로그램이나 질의어를 통하여 저장된 데이터를 실질적으로 처리하는데 사용하는 언어
- 데이베이스 사용자와 데이터베이스 관리시스템 간의 인터페이스 제공
- 데이터조작어(DML)의 4가지 유형
ㆍSELECT : 테이블에서 조건에 맞는 튜플을 검색
ㆍINSERT : 테이블에 새로운 튜플을 삽입
ㆍDELETE : 테이블에서 조건에 맞는 튜플을 삭제
ㆍUPDATE : 테이블에서 조건에 맞는 튜플의 내용을 변경
● DCL(데이터 제어어)
- 데이터의 보안, 무결성, 데이터 회복, 병행 수행 제어 등을 정의하는데 사용하는 언어
- 데이터베이스 관리자가 데이터 관리를 목적으로 사용
- 데이터 제어어(DCL)의 종류
ㆍCOMMIT : 데이터베이스 조작 작업이 정상적으로 완료되었음을 관리자에게 알려줌
ㆍROLLBACK : 데이터베이스 조작 작업이 비정상적으로 종료되었을 떄 원래의 상태로 복구
ㆍGRANT : 데이터베이스 사용자에게 사용권한을 부여
ㆍREVOKE : 데이터베이스 사용자의 사용권한을 취소
#29_Select 문
● 테이블을 구성하는 튜플(행)들 중에서 전체 또는 조건을 만족하는 튜플(행)을 검색하여 주기억장치상에 임시 테이블로 구성시키는 명령문
● 일반형식
SELECT predicate [테이블명.]속성명1, [테이블명,]속성명2, ...
FROM 테이블명1, 테이블명2, ...
[WHERE 조건]
[GROUP BY 속성명1, 속성명2, ...]
[HAVING 조건]
[ORDER BY 속성명 [ASC | DESC]];
① SELECT절
- Predicate : 불러올 튜플수를 제한할 명령어를 기술
ㆍALL : 모든 튜플을 검색할 때 지정하는 것으로, 주로 생략
ㆍDISTLNCT : 중복된 튜플이 있으면 그 중 첫번째 한개만 검색
ㆍDISTINCTROW : 중복된 튜플을 검색하지만 선택된 속성의 값이 아닌, 튜플 전체를 대상으로 함
- 속성명 : 검색하여 불러올 속성(열) 및 수식들을 지정
ㆍ기본 테이블을 구성하는 모든 속성을 지정할 때는 '*'를 기술
ㆍ두 개 이상의 테이블을 대상으로 검색할 때는 반드시 테이블명, 속성명으로 표현
② FROM절 : 질의에 의해 검색될 데이터들을 포함하는 테이블명을 기술
③ WHERE절 : 검색할 조건을 기술
④ GROUP BY절 : 특정 속성을 기준으로 그룹화하여 검색할 때 그룹화 할 속성을 지정함, 일반적으로 그룹함수와 함께 사용
⑤ HAVING절 : GROUP BY와 함께 사용되며, 그룹에 대한 조건을 지정
⑥ ORDER BY절 : 특정 속성을 기준으로 정렬하여 검색할 때 사용
- 속성명 : 정렬의 기준이 되는 속성명을 기술
- [ASC | DESC] : 정렬방식으로 'ASC'는 오름차순, 'DESC'는 내림차순을 의미, 생략하면 오름차순으로 지정
#30_삽입, 삭제, 갱신문
● 삽입문(Insert Into ~ )
INSERT
INTO 테이블명(속성명1, 속성명2, ...)
VALUES (데이터1, 데이터2, ...);
- 대응하는 속성과 데이터의 개수와 data_type이 일치해야 함
- 기본 테이블의 모든 속성을 사용할 때는 속성명을 생략할 수 있음
- SELECT문을 사용하여 다른 테이블의 검색 결과 삽입할 수 있음
● 삭제문(delect From ~)
DELETE
FROM 테이블명
WHERE 조건;
- 모든 레코드를 삭제할 때는 WHERE 절을 생략함
- 모든 레코드를 삭제하더라도 테이블 구조는 남아 있기 때문에 디스크에서 테이블을 완전히 제거하는 DROP과는 다름
● 갱신문(Update ~ Set ~)
UPDATE 테이블명
SET 속성명 = 데이터[, 속성명=데이터]
WHER 조건;
'자격증 > 정보처리산업기사 - 개정전' 카테고리의 다른 글
정보처리산업기사 필기_2과목, 전자계산기 구조(#46~#56) (0) | 2020.04.16 |
---|---|
정보처리산업기사 필기_1과목, 데이터베이스(#41~#45) (4) | 2020.04.15 |
정보처리산업기사 필기_1과목, 데이터베이스(#31~#40) (2) | 2020.04.15 |
정보처리산업기사 필기_1과목, 데이터베이스(#11~#20) (1) | 2020.04.15 |
정보처리산업기사 필기_1과목, 데이터베이스(#01~#10) (1) | 2020.04.15 |