컴퓨터/정보처리기사 DB

| 니앙팽이 - DB | 5 | 관계형 DBMS & 데이터 무결성

no title

관계형 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단계 계층

  1. 외부 스키마 : 똑같은 데이터라도 서로 다른 뷰를 제공한다.
    • 웹툰 DB는 동일한데 다양한 뷰 제공
  2. 개념 스키마 : 전체 구조와 제약 조건
    • DB에 어떤 데이터가 저장되어 있는지, 데이터간 어떤 관계가 존재하는지, 어떤 무결성 제약조건이 명시되어 있는지를 기술함
    • 외부 스키마가 제공하는 뷰 전부를 가지고 있다.
    • 저장 구조와는 독립적이다.
  3. 내부 스키마 : 물리적으로 어떻게 저장 되어 있느냐, 저장 장치 입장에서 보는 스키마
    • DBMS의 지시에 따라 운영체제가 관리한다.
    • 인덱스, 해싱과 같은 접근 경로, 데이터 압축등을 기술한다.

3. 데이터 독립성

  • 상위 단계의 스키마 정의에 영향을 주지 않게 데이터 독립성

    1. 논리적 데이터 독립성
    2. 물리적 데이터 독립성

4. API

  • ODBC 데이터베이스의 API 모든 데이터 베이스 끼리 데이터를 주고 받을 수 있다.

5. 클라이언트-서버 데이터베이스 시스템

  • 데이터베이스가 하나의 데이터 베이스 서버에 저장되어 있다.
  • DB시스템의 기능이 서버와 클라이언트에 분산되어 있다.

4. 관계 데이터 모델

1. 테이블(릴레이션)

  • 개념은 테이블(릴레이션) 의 관점에서 데이터를 구성한다. 즉 테이블(릴레이션)을 만든다는것이다.
  • 논리적으로 연관된 데이터를 연결하기 위해서는 링크나 포인터를 사용하지 않고, Key를 통해서 연결한다.
특징
  1. CoFiAtt 들끼리 순서가 바뀌어도 상관 없다.
  2. CoFiAtt의 이름은 테이블(릴레이션)에서 고유하다.
  3. 오직 하나의 레코드 타입만 포함한다. 따라서 CoFiAtt 값들은 모두 같은 유형이다.
  4. 행튜레 간에 순서는 없다.
  5. Key가 존재하므로 중복된,동일한 행튜레가 존재하지 않고, 모두 상이하다.

2. 도메인

  • 한 CoFiAtt에 나타날 수 있는 값들의 집합이다. 프로그래밍 언어로는 자료형이 되겠다.
  • 도메인의 값들은 원자값을 나타낼 수 있다.
  • 도메인의 정의
    CREATE DOMAIN employ_name VARCHAR(10)  
    CREATE DOMAIN employ_num INTEGER   
    CREATE DOMAIN department_num INTEGER
    

3. 차수 & 카디날리티

  • n(CoFiAtt)=Degreen(CoFiAtt) = Degree
    • 가장 작은 논리 단위
    • 테이블(릴레이션)의 차수는 최소 1이 되야지 테이블(릴레이션)이 되겠지?
  • n(행튜레)=Cardinalityn(행튜레) = Cardinality
    • 데이터가 하나도 없다는 관점에서 0이 될 수 있다.

4. 테이블(릴레이션) 스키마 & 인스턴스

① 테이블(릴레이션) 스키마 (내연)

  • 표기법
    RELATION_NAME(CoFiAtt_1, CoFiAtt_2, CoFiAtt_3 ...)
    

② 테이블(릴레이션) 인스턴스 (외연)

  • 테이블(릴레이션)에 들어간 행튜레의 집합

5. 데이터 무결성

데이터 정확성 유효성을 의미한다 갱신 되더라도 알아서 일관성이 유지되도록 돕는다

1. 무결성(Integrity) 종류

  1. 도메인 무결성: 행튜레는 CoFiAtt의 도메인에 지정도니 값만 저장 가능함
  2. 키 무결성 : 기본키는 중복불가
  3. 개체(테이블(릴레이션)) 무결성: 기본키를 구성하는 prime-attribute 는 NOTNULL
  4. 참조 무결성: 외래키를 가진 테이블(릴레이션)에서 참조하는것이 없으면 NULL이고, 참조할 수 없는것을 가질 수 없다.
이제 위 내용에서 DML 연산할 시에 무결성이 지켜지는지 아닌지 늘 고려해야한다.

2. DB 연산에서 무결성 강화하기

앞으로 A, B 테이블(릴레이션)이 있다고 하자.

A는 B테이블(릴레이션)을 "참조하는" 테이블(릴레이션)이다 
즉, A의 외래키는 B테이블(릴레이션)의 기본키에 접근한다.
B는 A테이블(릴레이션)에게 "참조되는" 테이블(릴레이션)이다.

① 검색 SELECT : 아무런것도 위배하지 않는다
② 갱신 INSERT, DELETE, UPDATE (삽입, 삭제, 수정)

  1. INSERT
  • INSERT INTO B ___ # 참조 무결성 제외 모두 위배 가능
    INSERT INTO A ___ # 모두 위배 가능함
    
  1. DELETE
  • DELETE FROM B WHERE ___ # 참조 무결성만 위배 가능하다
    DELETE FROM A WHERE ___ # 모두 위배 안한다.
    
  • 참조되는 테이블(릴레이션) B에 대해 삭제옵션 스키마 ALTER하기

    ON DELETE RESTRICT # 제한, 삭제 연산 거절
    ON DELETE CASCADE # 삭제하고, 참조하는 테이블(릴레이션) A의 행튜레를 연쇠삭제
    
    • 혹은, 외래키를 통해 참조하는 테이블(릴레이션) A의 행튜레의 외래키를 NULL로 하던지, 디폴트를 넣도록 할 수 있다.

참조

http://www.kocw.net/home/cview.do?cid=e7ed8c2650a6c2f8