실기 DB 개념 정리

2016. 9. 30. 00:17자격증 공부/정보처리기사

1. DB 개념


1) DB 데이터 종류 4가지 - SOSI

Stored

Operational

Shared

Integrated


2) DB 특징 4가지 - 3C + R

Content Reference(값에 의한 참조)

Concurrent sharing(동시 공유)

Continuous Evolution(계속 진화)

RealTime Accessibility(실시간 접근)


3) DB 사용자 3종류

ㄱ. Data Architect(건축사): Data 영역 분류, Data 모델 생성

ㄴ. Data Administrator(관리자): Data 관리 총괄, 계획 수립

ㄷ. DB Administrator: 개념/물리 스키마 설계, Data 장애 복구


2. DBMS(DB 관리 시스템)


1) 이점: Data 중복성, 종속성 해결

2) 기능 3가지(DMC)

Define

Manipulate

Control => 4가지(보병무회: 보안, 병행 제어, 무결성, 회복)


*병행 제어 필요성 3가지

Lost Update: 동시 갱신시 하나가 Lost

Inconsistency(불일치): 동시 수정시 데이터 불일치

Cascading Rollback(연쇄 Rollback)


3. 스키마


1) 개념: EAR + C에 대한 명세

2) 구성 3가지(순서 중요)

|사용자|

외부

개념

내부


*데이터 사전의 다른 두 이름

-시스템 카탈로그

-메타 데이터(Data about Data)


-----------------------------------------------------------------


1. 관계형 데이터 모델


<릴레이션> => 스키마(구조) + 인스턴스(튜플) <-> 도메인(속성이 취할 수 있는 원자값 집합)

 

 

 


 

 


*Mapping Rule: 개념적 데이터 모델 => 논리적 데이터 모델(or 스키마)


**식별 VS 비식별


1) 식별의 경우(FK인 동시에 PK: 외교관인 동시에 왕)


<회원>

 회원No

 ID

PW

Name


<프로필>

 회원No(FK)

 키

몸무게


2) 비식별의 경우(FK는 FK만)


<회원>

 회원No

 ID

PW

Name


<프로필>

 이름

 키

몸무게

회원No(FK)





2. 키의 종류

  슈퍼키
|
후보키(+최소성)
|
 ----------------------
 |                        |
PK                 대체키

*복합키: 여러 속성(사원번호, 이름) PK



3. 무결성(=데이터의 정확성)


1) 종류


ㄱ. NULL

ㅂ. 개체: PK 속성은 NOT NULL 

ㄴ. UNIQUE: "ID는 원자값이어야"

ㄷ. Domain: "ID가 10자 넘지 말아야"

ㄹ. Key: "적어도 하나의 키는 있어야"


ㅁ. 참조: FK는 NULL이거나 참조 R의 PK와 같아야



<관계대수>


1. 관계 연산자


[예제1]


<기본 테이블: 능력치>

 이름

무력 

지력 

 제갈량

 32

99 

 관우

93 

81 

 장비

96 

42 


<주소>

 이름

주소 

제갈량 

신야 

관우 

 양양

장비 

 형주



<SELECT: 지력 80 이상> 관우: "머리 좋은 놈만 PARTY에 와"

σ 지력>80(능력치)

SELECT 이름, 무력, 지력 FROM 능력치 WHERE 지력>80;


 이름

무력 

지력 

제갈량 

32 

99 

관우 

93 

81 



<PROJECT: 이름, 무력 속성만 추출> 장비: "무슨 소리 남자는 힘이 중요하지"

π 이름, 무력(능력치)

SELECT 이름, 무력 FROM 능력치;


이름 

무력 

제갈량 

32 

관우 

93 

장비 

96 



<JOIN: 다 합침> 제갈량: PARTY 장소도 중요하죠. 그것도 보도록 하죠. 

*JOIN: CARTESIAN PRODUCT한 후 SELECT한 것


능력치▷◁ 이름=이름 주소

*자연조인: 능력치 ▷◁ 주소



JOIN 

NATURAL JOIN(중복된 속성 제거)

JOIN ... USING 

SELECT 능력치.이름, 무력, 지력, 주소

FROM 능력치, 주소

WHERE 능력치.이름 = 주소.이름;

SELECT 능력치.이름, 무력, 지력, 주소

FROM 능력치 NATURAL JOIN 주소

 SELECT 능력치.이름, 무력, 지력, 주소

FROM 능력치 JOIN 주소 USING(이름)

*OUTER JOIN: JOIN 조건 맞지 않는 튜플도 출력(<->INNER JOIN)



능력치.이름 

 무력

지력 

주소.이름 

 주소

 제갈량

 32

99 

 제갈량

 신야

 관우

 93

 81

 관우

 양양

 장비

 96

 42

 장비

 형주



[예제2]


<주문자>

 번호

 이름

사는 술

 1

관우

소주

 1

관우

맥주

 2

장비

소주

 2

장비

맥주

 2

장비

양주

 4

제갈량

소주


<판매1>

 파는 술

 소주

 맥주


<판매2>

이름 

 파는 술

 장비

 소주

 장비

 맥주


<DIVISION: 공통된 것 없앰>

<DIVISION: 소주, 맥주 주문하신 분!!!>

주문자[사는술÷파는술]판매1


 번호

 이름

 1

 관우

 2

 장비


<DIVISION: 소주, 맥주 주문한 장비의 (진동벨) 번호>

주문자[이름,사는술 ÷ 이름, 파는 술]판매2


 번호

 2


*연습 문제


1) 주문자 이름 중복되지 않게 검색


SELECT DISTINCT 이름 FROM 주문자


<결과>

이름 

관우 

장비 

제갈량 


2) 사는 술이 양주인 사람 검색

SELECT 이름 FROM 주문자 WHERE 사는술 IN('양주');


<결과>

이름 

제갈량 


3) 이름이 관으로 시작하는 사람 검색

SELECT 이름 FROM 주문자 WHERE 이름 LIKE'관%';


<결과>

이름 

관우 


*주소가 NULL인 튜플 검색 => WHERE 주소 IS NULL;


4) 이름을 기준으로 내림차순으로 '정렬'

SELECT 이름 FROM 주문자 ORDER BY 이름 DESC;


<결과>

이름 

제갈량 

장비 

장비 

장비 

관우 

관우 


5) 사는 술 별로 주문한 사람 수 구하기(단 0 이상인 것만)

SELECT 사는술, COUNT(*) AS 주문자수

FROM 주문자

GROUP BY 사는술

HAVING COUNT(*)>0;


<결과>

 사는술

주문자수

 소주

3

 맥주

2

 양주

 1


6) 주소가 '신야'인 사원에 대해 이름과 지력을 검색

SELECT 이름, 지력

FROM 능력치

WHERE 이름 IN(SELECT 이름 FROM 주소 WHERE 주소='신야');


 이름

주소 

제갈량 

신야 

 


[예제3]


<날짐승>

번호 

 이름

 1

 독수리

 2

 박쥐


<들짐승>

번호 

 이름

 2

 박쥐

 3

 사자


<합집합:모든 짐승들 명단>

π 이름(날짐승) U π 이름(들짐승)

SELECT 이름 FROM 날짐승 UNION SELECT 이름 FROM 들짐승;


이름 

 독수리

 박쥐

 사자


<CARTESIAN PRODUCT: 커플링 경우의 수>

π 이름(날짐승) X π 이름(들짐승)


날짐승.이름

들짐승.이름 

 독수리

박쥐 

 독수리

 사자

 박쥐

 박쥐

 박쥐

 사자









'자격증 공부 > 정보처리기사' 카테고리의 다른 글

신기술 동향  (0) 2016.09.30
실기 SQL, 정규화 등 정리  (0) 2016.09.30
실기 알고리즘 풀이법 정리  (0) 2016.09.29
실기 DB 오답노트  (0) 2016.09.26
16년 3회차 정보처리기사 필기 합격!  (0) 2016.08.21