전공 과목 이수2👨‍💻/데이터베이스

[데이터베이스] 앞쪽 범위 合

천숭이 2021. 4. 23. 12:33

p.3 1.2 데이터베이스 시스템의 목적

  •  DBMS가 등장하기 전인 파일-처리 시스템의 단점
  • 데이터의 중복과 비일관성
  • 데이터 액세스 시의 난점
  • 데이터의 고립
  • 무결성 문제
  • 원자성 문제
  • 동시 액세스 문제
  • 보안 문제

p.6 1.3 데이터의 관점

 

1.3.1 데이터의 추상화 3단계

단계들을 스키마라고 볼 수 있다.

물리적 단계 : 추상화의 최하위 단계. 데이터가 실제로 어떻게 저장되는지 기술. 데이터베이스 관리자의 영역

논리적 단계 : 어떤 데이터가 저장되었는지 그리고 데이터들 사이에는 어떤 관계가 있는지 기술. 논리적 단계의 사용자는 복잡한 구조에 대해 전혀 알 필요가 없다 이것을 물리적데이터독립성 이라 한다.

뷰 단계 : 데이터의 상세함을 숨기고 사용자가 부분적으로 액세스하게 보안 메커니즘 작동.

 

1.3.2 인스턴스(실체)와 스키마

int a ; 를 예로 들면 int라는 자료형으로 a변수를 선언했다. int는 스키마, a가 인스턴스

데이터베이스는 실세계와 연결되어있고 변경 내용이 계속 반영돼야 한다.

스키마 : 데이터베이스의 전체적인 설계

물리적스키마,논리적스키마,서브스키마(뷰레벨에서 여러개의 스키마 존재)

인스턴스 : 어느 특정한 순간에 데이터베이스에 저장된 정보의 모임. 접근가능주소有

데이터 독립성 : 추상화 단계 사이에서도 발생함. 응용프로그램이 물리적스키마에 의존하지 않아서 물리적스키마가 변경되어도 고칠 필요가 없는 것을 가리켜 물리적 데이터 독립성을 가졌다고 한다.

즉, 쉽게 말해서 하위단계의 스키마에 변경이 생겨도 상위단계 스키마에 영향을 끼치지 않는 것을 데이터 독립성이라 한다. 따라서 두개의 데이터 독립이 발생한다.

 

1.3.3 데이터모델

데이터베이스 구조의 기반이 되는 것.

관계형 모델 : 데이터들 사이의 관계를 나타내기 위해 테이블들의 모임을 사용한다. 테이블은 열(column)로 구성되고 테이블은 릴레이션이라고도 부른다. (우리가 주로 다루는 모델)

외에도 개체-관계 모델, 객체-기반 데이터 모델, 반구조형 데이터 모델, 네트워크형 데이터 모델 등이 있다.

관계형 모델

 

 

관계형 모델의 구조

table = relation

rows = tuple

columns = attribute

모두 같은 용어

 

인스턴스 : 22222 Einstein Physics 95000

스키마 : ID name dept_name salary

 

 

 

 

 

 

1.4 데이터베이스 언어

데이터베이스 스키마를 기술하는 데이터 정의 언어(data definition language : DDL)

데이터베이스 질의 및 갱신을 표현하는 데이터 조작 언어(data manipulation language : DML)

 

데이터 사전 (data dictionary) = system catalog

 

1.4.1 데이터 조작 언어 (DML)

사용자가 적절한 데이터 모델로 구성된 데이터(인스턴스)를 접근하거나 조작할 수 있도록 하는 언어. 

접근 형태 :

  • 정보 검색/조회
  • 정보 삽입
  • 정보 삭제
  • 데이터 수정/갱신

절차식 DML : 어떤 데이터가 필요하며 , 그 데이터를 어떻게 구할지 지정할 것을 요구한다.

선언적 DML (비절차식 DML) : 필요한 데이터를 어떻게 구할지 명시할 필요 없이, 어떤 데이터가 필요한지만 사용자(개발자)에게 요구

 

1.4.2 데이터 정의언어 (DDL)

데이터의 추가적인 특성을 표현하는 데에도 사용. 이 DDL문들은 데이터베이스 스키마 구현상의 세부 사항을 정의한다.

 

sql문장의 예)

instructor라는 교수테이블을 정의한다. 칼럼(스키마)와 그 자료형을 정해준다

 

DDL은 결과는 메타데이터(data about data) 을 수록하는 데이터 사전에 위치한다

(*메타데이터란 인스턴스에 대한 스키마)

 

무결성(integrity) 제약조건
- 정보(주장 assertion)들이 DBMS를 통과해야하는 조건

주장들의 값이 참일때, DBMS를 통과할 수 있다.

개체무결성 제약조건 Entity Integrity :
존재하는 사실은 유일하게 식별되어야 한다.
primary key(스키마) 생성

참조무결성 제약조건 Relational integrity :
존재하지 않는 사실은 참조하지 않아야 한다.

ISP/BPR -> Entity-Relationship modeling -> Database modeling -> Database
개체무결성/참조무결성 제약조건의 예

1.5 관계형 데이터베이스

1.5.2 데이터 조작 언어

SQL 질의 언어는 비절차적 언어이다.

 

1.5.4 응용 프로그램에서의 데이터베이스 접근

내장형 SQL과 호스트언어(C, C++. JAVA)로 작성된다. 응용프로그램은 데이터베이스와 상호작용하는데 데이터베이스에 액세스하기 위해서는 호스트언어에 있는 DML문이 실행돼야 한다.

DML문 실행하기 위한 두가지 방법 (3~5장 주요내용)

1. C언어를 위한 표준인 ODBD(open database connectivity)가 응용프로그램 인터페이스 (API)표준으로 사용된다. Java를 위한 표준으로는 JDBC(java database connectivity)가 있다.

2. 특정 문자가 DML 호출의 시작을 알리고 DML 선컴파일러라 부르는 처리기가 DML문을 호스트 언어의 프로시저 호출로 바꾸어준다.

명령어 -> 문자열 -> API함수 로 프로그램에서 DB로 접근


1.6 데이터베이스 설계

데이터베이스 설계는 데이터베이스 스키마 설계와 주로 관련된다.

1.6.1 설계단계

데이터의 골격과 구성을 규정하는 요구 명세서 작성 -> 개념적 설계. 스키마 개관을 통해 재검토 및 중복 제거

-> 논리 설계 단계 -> 물리 설계 단계

옆 테이블의 문제점은 정규화되어있지 않다는 것이다. DBMS는 한행을 전체로 인식한다. 삽입,삭제과정에서 데이터 중복이 발성하거나 NULL이 들어가는 상황이 발생하는데 ID는 프라이머리 키이므로 NULL값이 들어갈 수 없다.

정규화x -> insert, delete, update 모두 안됨

 

두개의 주제가 한테이블에 써있다.

매인주제는교수(ID), 네번째열부터 부가주제이다.

정규화를 위해선 테이블을 분리해야 한다. 테이블을 분리하면 insert,delete,update 모두 가능해짐.

 

주의할 점 :

중복발생을 피하기 위해 한가지 주제는 한 테이블에서만 기록돼야 한다.  =  정규화

 


1장요약

  • 데이터베이스 관리 시스템(DBMS)은 서로 관련이 있는 데이터의 모임과 데이터에 접근하기 위한 프로그램의 집합으로 구성된다. 데이터베이스에 정보를 저장하고 효율적인 검색환경을 제공.
  • 데이터의 관리는 정보의 저장을 위한 구조의 정의하는 작업과 정보의 조작을 위한 기법을 제공하는 작업 모두를 포함.
  • 관계형 모델은 데이터베이스에서 데이터를 저장할 때 가장 많이 이용되는 모델.
  • 데이터 조작 언어(DML)는 어떠한 데이터가 필요한지 지정할 것만을 사용자에게 요구한다.
  • 데이터 정의(DDL)는 데이터의 다른 속성뿐만 아니라 스키마를 실체화하는 언어이다.
  • 저장장치 관리자 : db에 저장된 하위 단계의 데이터와 시스템의 응용프로그램 및 질의 사이의 인터페이스를 제공하는 프로그램 모듈
  • 질의 처리기 : DDL문과 DML문을 컴파일하고 실행
  • 트랜잭션 관리는 DB시스템의 장애가 발생해도 일관된 상태로 유지시킨다. 동시 실행 트랜잭션을 충돌없이 실행 가능하도록 한다.

<2장 관계형 모델 소개>

 

2.1 관계형 데이터베이스의 구조

릴레이션은 투플들의 집합이기 때문에 투플이 어떤 순서로 나타나는지는 상관없다.

튜플의 순서만 다른 두 릴레이션은 같은 테이블이라고 볼 수 있다.

 

릴레이션의 각 속성은 도메인(domain)이라고 하는 허가된 값의 집합을 가지고 있다.

모든 릴레이션에 대해 모든 속성의 도메인은 원자적(atomic)이어야 한다. 

(*원자적이다 - 도메인의 요소가 더 이상 나누어질 수 없는 단일체라는 것)

 

널(null)값은 알려지지 않거나 존재하지 않는 값을 의미하는 특별한 값. 가능하면 널값은 제거하는 편이 좋다.

 

2.2 데이터베이스 스키마

릴레이션의 스키마는 속성과 그 속성이 가지는 도메인의 명세로 구성된다. 릴레이션 인스턴스의 투플은 릴레이션이 변경됨에 따라 변하게 된다.

 릴레이션 스키마에서 공통적인 속성을 사용하는 것은, 서로 다른 릴레이션에 있는 투플을 관련짓는 방법 중 하나이다.

R (A1, A2, A3) 형태

department(dept_name, building, budget)

<- department 릴레이션

relation table

정규화 : 한가지 주제로 테이블들을 분리해내는 것

 

2.3 키 : 존재하는 사실을 식별하기 위해 사용하는 도구

존재하는 사실을 식별하는 키 : super key, candidate key(후보키), primary key(주키)

그 외 키 : foreign key(외래키) = 참조키

 

Super key :

한 릴레이션에서 그 투플을 유일하게 식별할 수 있도록 해주는 하나 혹은 그 이상의 속성들의 집합. 유일성 보장

 

Candidate key :

K가 슈퍼키라면 K를 포함한 부분집합이 수퍼키가 아닌 경우 일때, 유일성 보장 + minimality 최소

 

Primary key:

후보키들 중에서 하나를 선택한 키로 최소성과 유일성을 만족하는 속성

테이블에서 기본키는 오직 1개이다.

 

Foreign key :

프라이머리키이자 외래키를 참조해서 연관된 테이블에서 데이터를 얻는다.

학과명을 수정불가능. 해당하는 값이 없기때문에 참조가 불가능하기 때문

부모테이블 먼저 삭제할 수 없다. 꼭 자식테이블을 먼저 삭제하고 부모테이블을 삭제해야 한다.

출처 : jerryjerryjerry.tistory.com/49

부모테이블은 학생테이블이다. 학번이 주키이자 참조되는 참조키이다.

수강테이블은 학번이 참조하는 키이자 외래키이다.

 

 

 

 

 

 

2.4  스키마 다이어그램

(해석할 줄 알아야 함)

그림2.8 대학교 데이터베이스의 스키마 다이어그램

데이터베이스의 스키마는 주 키와 외래키 종속성을 가지고 있다.

그림2.8에서 밑줄 쳐진 것들은 주 키(primary key)이고 화살표 시작 지점이 참조 키(foreign key)이다.

최소한의 애트리뷰트로 구성된 것이 candidate key 이다.

프라이머리키는 릴레이션에 최소 한 개는 있어야 한다. 하지만 참조키는 있어도 되고 없어도 된다.

(*주 키가 무엇이냐에 따라 데이터의  해석이 달라진다!)

 

각 릴레이션은 네모 상자로 나타낼 수 있으며, 릴레이션의 이름은 네모 위에 표시.

 

prereq릴레이션의 경우, 두 키 중 한개라도 줄이면 슈퍼키가 될 수 없다. 즉, 둘이 같이 슈퍼키이고 주키와 후보키 모두 각각 한 개인 릴레이션이다.

advisor릴레이션의 경우, (지도교수) 프라이머리키는 s_id(학생아이디)이다. i_id는 중복될 수 있다. 한 교수가 지도하는 학생이 여러명이기 때문에

 

참조 무결성 제약조건은 외래 키에 비해서 스키마 다이어그램에 잘 표현되지 않는다.

 

2.5  관계형 질의어 (query language)

질의어(쿼리랭귀지)는 사용자가 데이터베이스로부터 정보를 요청할 때 사용하는 언어이다.

질의어 :

  • 절차식 언어 : 원하는 결과를 얻기 위해 어떠한 연산을 수행해야 할지 사용자가 시스템에 알려 준다 
  • 비절차식언어 : 어떤 정보를 원하는지만 기술한다 (선언적) 

순수 질의 언어 :

  • Relational algebra   관계대수 (절차식)
  • Tuple relational calculus (비절차식)
  • Domain relational calculus (비절차식)

관계대수 (심볼과 사용의 예)

 

 

 

선택연산 :

선택조건을 만족하는 릴레이션의 투플을 출력

 

 

추출연산 :

릴레이션의 선택된 속성을 출력한다. 중복된 투플을 제거한다.

 

 

자연조인 :

같은 이름을 가지고 있는 속성에서 두 릴레이션이 같은 값을 가지고 있는 투플의 쌍을 출력한다.

 

카티션곱 :

두 릴레이션으로부터 가능한 모든 투플의 쌍을 출력한다. 모든 곱의 경우의 수

 

 

합집합 :

두 릴레이션의 투플에 대해서 합집합을 수행한다.

 

 

 


2장 요약

  • 관계형 데이터베이스 모델은 테이블의 집합을 기반으로 한다. 
  • 릴레이션의 스키마는 릴레이션의 논리적인 디자인을 의미한다. 릴레이션의 인스턴스는 그 시점에서 릴레이션의 내용이다.
  • 릴레이션의 수퍼키는 릴레이션에서 유일하게 하나의 투플을 나타낼 수 있는 하나 이상의 속성의 집합이다. 후보키의 속성은 수퍼키와 같지만, 후보키의 어떤 부분집합도 수퍼키가 될 수 없다.
  • 릴레이션의 후보 키 중에서 선택된 것을 주 키라고 한다.
  • 외래키는 참조하는 릴레이션 의 속성의 집합을 의미한다.
  • 스키마 다이어그램은 데이터베이스 스키마를 시각적으로 표현한 것이다. 릴레이션,그 속성, 주 키, 외래 키가 표현되어 있다.
  • 관계형질의언어는 테이블에 대해서 동작하고 그 결과로 테이블을 출력하는 연산의 집합이다.
  • 관계 대수는 하나 이상의 릴레이션을 입력으로 받아서 하나의 릴레이션 결과로 출력하는 연산의 집합을 제공한다