관계형 DBMS
1. 관계형 DBMS
- DB를 테이블(릴레이션) 형태로 표현 가능하다.
- 테이블(릴레이션)을 통해서 다양한 테이블(릴레이션)을 Key, Foreign Key를 통해서 연결이 가능하다.
2. DBMS 언어
# 정조제 🤣
1. DDL 정의어
- DB 스키마를 정의한다 (DB 구조를 정의한다.)
- 스키마에 대한 명세는 DB 시스템 카탈로그에 저장된다.
CREATE TABLE # 구조 생성 ALTER TABLE # 구조 변경 DROP TABLE # 구조 삭제
2. DML 조작어
- DB내의 데이터를 검색, 수정, 삽입, 삭제 하는데 사용한다.
- SUM, COUNT, AVG같은 내장 함수를 갖고 있다.
SELECT # 검색 UPDATE # 수정 INSERT # 삽입 DELETE # 삭제
3. DCL 제어어
# Secu Integrecover 병 🤣
- 보안, 무결성, 회복성, 병행 수행 제어
GRANT # 권한 부여 REVOKE # 권한 회수 COMMIT # 트랜젝션 성공후 적용 ROLLBACK # 트랜젝션 작업취소 회복
3. DBMS의 아키텍쳐
1. ANSI/SPARC 아키텍쳐
- 우리가 사용하는 표준 아키텍쳐
2. 3단계 계층
- 외부 스키마 : 똑같은 데이터라도 서로 다른 뷰를 제공한다.
- 웹툰 DB는 동일한데 다양한 뷰 제공
- 개념 스키마 : 전체 구조와 제약 조건
- DB에 어떤 데이터가 저장되어 있는지, 데이터간 어떤 관계가 존재하는지, 어떤 무결성 제약조건이 명시되어 있는지를 기술함
- 외부 스키마가 제공하는 뷰 전부를 가지고 있다.
- 저장 구조와는 독립적이다.
- 내부 스키마 : 물리적으로 어떻게 저장 되어 있느냐, 저장 장치 입장에서 보는 스키마
- DBMS의 지시에 따라 운영체제가 관리한다.
- 인덱스, 해싱과 같은 접근 경로, 데이터 압축등을 기술한다.
3. 데이터 독립성
-
상위 단계의 스키마 정의에 영향을 주지 않게 데이터 독립성
- 논리적 데이터 독립성
- 물리적 데이터 독립성
4. API
- ODBC 데이터베이스의 API 모든 데이터 베이스 끼리 데이터를 주고 받을 수 있다.
5. 클라이언트-서버 데이터베이스 시스템
- 데이터베이스가 하나의 데이터 베이스 서버에 저장되어 있다.
- DB시스템의 기능이 서버와 클라이언트에 분산되어 있다.
4. 관계 데이터 모델
1. 테이블(릴레이션)
- 개념은 테이블(릴레이션) 의 관점에서 데이터를 구성한다. 즉 테이블(릴레이션)을 만든다는것이다.
- 논리적으로 연관된 데이터를 연결하기 위해서는 링크나 포인터를 사용하지 않고, Key를 통해서 연결한다.
- 특징
-
- CoFiAtt 들끼리 순서가 바뀌어도 상관 없다.
- CoFiAtt의 이름은 테이블(릴레이션)에서 고유하다.
- 오직 하나의 레코드 타입만 포함한다. 따라서 CoFiAtt 값들은 모두 같은 유형이다.
- 행튜레 간에 순서는 없다.
- Key가 존재하므로 중복된,동일한 행튜레가 존재하지 않고, 모두 상이하다.
2. 도메인
- 한 CoFiAtt에 나타날 수 있는 값들의 집합이다. 프로그래밍 언어로는 자료형이 되겠다.
- 도메인의 값들은 원자값을 나타낼 수 있다.
- 도메인의 정의
CREATE DOMAIN employ_name VARCHAR(10) CREATE DOMAIN employ_num INTEGER CREATE DOMAIN department_num INTEGER
3. 차수 & 카디날리티
-
- 가장 작은 논리 단위
- 테이블(릴레이션)의 차수는 최소 1이 되야지 테이블(릴레이션)이 되겠지?
-
- 데이터가 하나도 없다는 관점에서 0이 될 수 있다.
4. 테이블(릴레이션) 스키마 & 인스턴스
① 테이블(릴레이션) 스키마 (내연)
- 표기법
RELATION_NAME(CoFiAtt_1, CoFiAtt_2, CoFiAtt_3 ...)
② 테이블(릴레이션) 인스턴스 (외연)
- 테이블(릴레이션)에 들어간 행튜레의 집합
5. 데이터 무결성
데이터 정확성 유효성을 의미한다 갱신 되더라도 알아서 일관성이 유지되도록 돕는다
1. 무결성(Integrity) 종류
- 도메인 무결성: 행튜레는 CoFiAtt의 도메인에 지정도니 값만 저장 가능함
- 키 무결성 : 기본키는 중복불가
- 개체(테이블(릴레이션)) 무결성: 기본키를 구성하는 prime-attribute 는 NOTNULL
- 참조 무결성: 외래키를 가진 테이블(릴레이션)에서 참조하는것이 없으면 NULL이고, 참조할 수 없는것을 가질 수 없다.
이제 위 내용에서 DML 연산할 시에 무결성이 지켜지는지 아닌지 늘 고려해야한다.
2. DB 연산에서 무결성 강화하기
앞으로 A, B 테이블(릴레이션)이 있다고 하자.
A는 B테이블(릴레이션)을 "참조하는" 테이블(릴레이션)이다
즉, A의 외래키는 B테이블(릴레이션)의 기본키에 접근한다.
B는 A테이블(릴레이션)에게 "참조되는" 테이블(릴레이션)이다.
① 검색 SELECT : 아무런것도 위배하지 않는다
② 갱신 INSERT, DELETE, UPDATE (삽입, 삭제, 수정)
- INSERT
-
INSERT INTO B ___ # 참조 무결성 제외 모두 위배 가능 INSERT INTO A ___ # 모두 위배 가능함
- DELETE
-
DELETE FROM B WHERE ___ # 참조 무결성만 위배 가능하다 DELETE FROM A WHERE ___ # 모두 위배 안한다.
-
참조되는 테이블(릴레이션) B에 대해 삭제옵션 스키마 ALTER하기
ON DELETE RESTRICT # 제한, 삭제 연산 거절 ON DELETE CASCADE # 삭제하고, 참조하는 테이블(릴레이션) A의 행튜레를 연쇠삭제
- 혹은, 외래키를 통해 참조하는 테이블(릴레이션) A의 행튜레의 외래키를 NULL로 하던지, 디폴트를 넣도록 할 수 있다.
참조
'CS > DB' 카테고리의 다른 글
| 니앙팽이 - DB | 8 | SQL - DML(데이터 조작어) (0) | 2023.09.14 |
---|---|
| 니앙팽이 - DB | 7 | SQL - DDL(데이터 정의어) (0) | 2023.09.14 |
| 니앙팽이 - DB | 6 | 조인 (내부, 외부) (0) | 2023.09.14 |
| 니앙팽이 - DB | 4 | DB 시스템 개요 (0) | 2023.09.07 |
| 니앙팽이 - DB | 2 | DB 정규화 Normalization (0) | 2023.09.05 |