CS/데이터베이스

Ch4. Intermediate SQL

Frankie 2020. 1. 22. 18:47

이번 챕터 4에서는 좀 더 다양한 조인 방법과 가상 릴레이션인 뷰의 개념, Transaction, 무결성 제약조건, 데이터 정의, 권한에 대해서 배웠는데

 

첫 강의에서는 조인 연산은 두 개의 릴레이션을 결합해서 하나의 릴레이션으로 넘겨주는 거라 배웠는데

내부 조인은 매치되지 않은 투플을 유지하지 않는 것으로 보통의 조인인데

좀 더 다른 조인 방법으로는 Outer join, Left outer join, Right outer join, Full outer join, Join using, on condition이 있는데

Outer join은 두 릴레이션에 natural join 연산을 할 때 조인 속성 값이 같은 투플이 상대 릴레이션에 존재하지 않아 조인 연산에서 제외된 투플들을 결과 릴레이션에 포함시키는 조인 연산인데 여기서 짝을 이루지 못한 투플들의 상대 속성 값을 null로 채운다

Left outer join은 연산의 왼쪽에 나타나는 릴레이션의 투플을 유지하는 것인데 내부 조인 수행해서 결과를 얻으면 결과에 포함되지 않은 투플 중 조인 연산자 왼쪽에 위치한 릴레이션의 투플들을 결과 릴레이션에 넣고 상대 투플에 있는 속성의 값은 null로 채우는 것이다

Right outer join은 결과에 포함되지 않은 투플 중 조인 연산자 오른쪽에 위치한 릴레이션의 투플들을 null값을 이용하여 결과 릴레이션에 넣는 것이다.

Full outer join은 Left outer join과 Right outer join을 합친 것으로 두 릴레이션의 모든 투플을 유지하는 것인데 내부 조인을 한 후에 두 릴레이션의 투플 중 결과에 포함되지 않은 투플을 null을 이용해서 결과에 추가한다

Join using은 using절에 쓰여져 있는 특정 속성에 대해서만 natural join을 하는 방식이다

on condition은 where절처럼 사용되는데 조인이 될 릴레이션에 대한 조건을 정할 수 있고 on이라는 키워드를 사용해서 조건식의 마지막에 나타낸다

 

View는 실제 릴레이션을 기반으로 만들어진 가상의 릴레이션으로 데이터를 실제로 저장하지 않고 논리적으로만 존재

쿼리의 형태로 저장되고 뷰를 사용할 때마다 쿼리를 수행해서 결과를 만든다

뷰를 정의할 때는

CREATE VIEW 뷰의 이름 AS 뷰를 만들어낼 쿼리문

이렇게 쓰고

실체화 뷰는 뷰를 정의하는 쿼리의 결과로 생성된 투플을 가진 물리적인 테이블을 저장하는데

뷰를 유지,관리하는 방법에는 3가지가 있다

1. 릴레이션 수정될 때마다 실체화 뷰 즉시 업데이트

2. 사용된 릴레이션이 수정되어도 실체화 뷰를 업데이트하지 않다가 어떤 사용자가 뷰에 접근할 때 뷰를 업데이트

3. 정기적으로 실체화 뷰 업데이트

 

두 번째 강의에서는 Transaction과 무결성 제약 조건에 대해서 배웠는데

Transaction은 작업의 단위로 여러 개의 쿼리로 구성할 수 있고 atomic 한 성질과 독립성, 일관성, 지속성의 성질을 갖고 있다.

SQL 표준에서는 SQL문이 시작할 때 Transaction이 시작되는데 Transaction이 끝날 때는 commit이나 rollback을 해야 한다

Commit은 데이터베이스에서 레코드를 업데이트하는 것이고 commit을 하면 모든 사용자가 데이터의 변화를 볼 수 있다

Rollback은 Transaction의 실행이 실패하면 Transaction의 모든 수행을 취소하고 데이터베이스를 Transaction 수행 이전의 상태로 복구하는 것이다

 

무결성 제약조건은  데이터베이스의 무결성(데이터가 정확하게 유지되는 상태)을 보장하고 데이터를 일관성 있게 유지하는 것이고 실수로 인한 데이터의 손상으로부터 데이터베이스를 보호하는 것이다.

not null, unique, primary key, check 등이 있고

not null은 null값이 적합하지 않는 속성에 null값을 저장할 수 없게 할 수 있고 대표적으로는 기본 키가 있다

unique는 unique로 선언된 속성들이 릴레이션의 후보 키를 구성하는 것을 의미한다

check는 릴레이션의 모든 투플이 만족해야 하는 조건을 명시한다

 

참조 무결성은 두 릴레이션간의 참조의 일관성을 보장해주는 것으로 참조하는 릴레이션의 외래 키 값은 참조되는 릴레이션의 값으로 존재해야 한다

reference라는 키워드를 사용해 참조 무결성을 표현할 수 있다

참조 무결성의 연쇄 작동으로는

on delete cascade - 삭제할 투플과 그 투플을 참조하는 투플을 연쇄적으로 삭제

on update cascade - 투플에 대한 갱신이 제약조건을 위반하면 갱신을 거절하는 대신 릴레이션이 참조하는 릴레이션의 투플의 참조되는 속성 값을 새로운 값으로 갱신한다

on delete set null - 참조되는 값의 삭제가 수행되면 해당 값을 참조하는 속성 값을 null로 설정

on delete set default - 참조되는 값의 삭제가 수행되면 해당 값을 참조하는 속성값을 default로 설정

 

마지막 강의에서는 Index, Large Object Data Type, Authorization에 대해 배웠는데

Index는 검색 속도를 높이기 위한 방법으로

CREATE INDEX 인덱스 이름 ON 릴레이션(속성)

으로 만들 수 있다

 

Large Object(대형 객체)는 대용량 데이터를 저장하기 위해 개발했는데 대형 객체 타입에는 blob, clob이 있는데

blob(binary large object)은 대용량의 해석되지 않은 이진 데이터 모음이고 이진 데이터를 저장하는 대형 객체이다

clob(character large object)은 대용량의 문자 데이터 모음이다.

 

Authorization은 사용자에게 권한 부여하는 것으로

GRANT 부여할 권한 ON 릴레이션 이름 or 뷰의 이름 TO 사용자

이렇게 권한을 줄 수 있고

GRANT SELECT(속성 이름) ON 릴레이션 이름 TO 사용자

GRANT INSERT(속성 이름) ON 릴레이션 이름 TO 사용자

GRANT UPDATE(속성 이름) ON 릴레이션 이름 TO 사용자

SQL 표준에서 이렇게 권한을 줄 수 있다

Revoke는 권한을 취소하는 것이고 

REVOKE 부여할 권한 ON 릴레이션 이름 or 뷰의 이름 FROM 사용자

이렇게 사용한다

Role은 여러 사용자들에 대한 권한 관리를 단순화하기 위해 만들어진 것으로

CREATE ROLE 롤의 이름

로 만들 수 있고

GRANT 롤의 이름 TO 사용자

로 권한을 줄 수 있다

 

이렇게 챕터 4를 다 공부해봤는데 점점 공부하는 방법에 대해 요령이 생기는 것 같고 메모장으로 정리해서 파워 포인트로 정리하고 그거를 다시 블로그에 정리해보니 좀 더 이해가 잘되는 것 같아서 점점 만족한다 세운 계획대로 까먹지 않고 꼭 공부해야겠다!

 

 

 

 

 

 

 

13강 Join expressions, View.pptx
0.08MB
14강 Transaction, Integrity constraints.pptx
0.08MB
15강 Index, Large Object Data Type, Authorization.pptx
0.08MB

'CS > 데이터베이스' 카테고리의 다른 글

Ch6. Entity-Relationship Model  (0) 2020.01.29
Ch5. Advanced SQL  (0) 2020.01.23
Ch3. SQL  (0) 2020.01.19
Ch2. Relational Model  (0) 2020.01.09
Ch1. 데이터베이스 소개  (0) 2020.01.07