#21_관계 데이터베이스 특징

 - 1970년 IBM에서 근무하는 E. F. Codd에 의해 처음 제안되었음

 - 개체(Entity)나 관계(Relationship)를 모두 릴레이션(Relation)이라는 표(Table)로 표현

 - 릴레이션은 개체를 표현하는 개체 릴레이션, 관계를 나타내는 관계 릴레이션으로 구분

 - 장점 : 간결하고 보기 편리하며, 다른 데이터베이스로의 변환이 용이

 - 단점 : 성능이 다소 떨어짐

 

#22_관계 데이터베이스의 Relation 구조

● 데이터들을 표(Table)의 형태로 표현한 것으로 구조를 나타내는 릴레이션 스키마와 실제 값들인 릴레이션 인스턴스로 구성

● 튜플(Tuple)

 - 릴레이션을 구성하는 각각의 행

 - 속성의 모임으로 구성

 - 파일 구조에서 레코드와 같은 의미

 

● 속성(Attribute, 애트리뷰트)

 - 데이터베이스를 구성하는 가장 작은 논리적 단위

 - 파일 구조상의 데이터 항목 또는 데이터 필드에 해당

 - 개체의 특성을 기술

 

● 도메인(Domain)

 - 하나의 애트리뷰트가 취할 수 있는 같은 타입의 원자(atomic)값들의 집합

 - 실제 애트리뷰트 값이 나타날 때 그 값의 합법여부를 시스템이 검사하는 데에도 이용

 

● 차수(Degree) : 속성(Attribute)의 개수

 

● 기수(대응수 ; Cardinality) : 튜플(Tuple)의 개수

 

#23_키(Key)의 개념 및 종류

● 데이터베이스에서 조건에 만족하는 튜플을 찾거나 순서대로 정렬할 때 기준이 되는 애트리뷰트

 

● 후보키(Candidate Key)

 - 릴레이션을 구성하는 속성들 중에서 튜플을 유일하게 식별하기 위해 사용하는 속성들의 부분집합, 즉 기본키로 사용할 수 있는 속성들을 말함

 - 릴레이션에 있는 모든 튜플에 대해서 유일성과 최소성을 만족시켜야 함

 

● 기본키(Primary Key)
 - 후보키 중에서 선택한 주키(Main Key)

 - 한 릴레이션에서 특정 튜플을 유일하게 구별할 수 있는 속성

 - NULL 값을 가질 수 없음

 - 기본키로 정의된 속성에는 동일한 값이 중복되어 저장될 수 없음

 

● 대체키(Alternate Key) = 보조키

 - 후보키가 둘 이상일 때 기본키를 제외한 나머지 후보키들을 말함

 - 보조키라고도 함

 

● 슈퍼키(Super Key)

 - 릴레이션에서 같은 튜플이 발생하지 않는 키를 구성할 때, 속성의 집합으로 구성하는 것을 말함

 - 릴레이션을 구성하는 모든 튜플에 대해 유일성은 만족시키지만, 최소성은 만족시키지 못함

 

● 외래키(Foreign Key)

 - 관계(Realtionship)를 맺고 있는 릴레이션 R1, R2에서 릴레이션 R1이 참조하고 있는 릴레이션 R2의 기본키와 같은 R1 릴레이션 속성

 - 외래키로 지정되면 참조테이블의 기본키에 없는 값은 입력할 수 없음

 

#24_무결성

 - 개체 무결성 : 릴레이션에서 기본키를 구성하는 속성은 널(NULL) 값이나 중복값을 가질수 없음

  ex) '학생' 릴레이션에 '학번'이 기본키로 정의 되면 튜플을 추가할 때 '주민번호'나 '성명' 필드에는 값을 입력하지 않아도 되지만 '학번' 속성에는 반드시 값이 입력되어야 함, 또한 중복 불가

 - 참조 무결성 : 외래키 값은 NULL이거나 참조 릴레이션의 기본키 값과 동일해야함 즉, 릴레이션은 참조할 수 없는 외래키값을 가질 수 없음

  ex) '수강' 릴레이션의 '학번' 속성에는 '학생' 릴레이션의 '학번' 속성에 없는 값은 입력할 수 없음

 

#25_순수관계 연산자

● 관계 데이터베이스에 적용할 수 있도록 특별히 개발한 관계 연산자

 

● Select(수평연산)

 - 릴레이션에 존재하는 튜플중에서 선택조건을 만족하는 튜플의 부분집합을 구하여 새로운 릴레이션을 만듬

 - 릴레이션에 행(가로)에 해당하는 튜플을 구하는 것이므로 수평연산이라고도 함

 - 연산자의 기호는 그리스문자 시그마(σ)를 사용

 - 표기 형식 : σ<조건>(R) 단, R은 릴레이션 이름

 

● Project(수직 연산자)

 - 주어진 릴레이션에서 속성 List에 제시된 속성(Attribute)만을 추출하는 연산

 - 릴레이션의 열(세로)에 해당하는 Attribute을 추출하는 것이므로 수직 연산자라고도 함

 - 연산자의 기호는 그리스문자 파이(π)를 사용

 - 표기 형식 : π<속성리스트>(R) 단, R은 릴레이션 이름

 

● Join

 - 공통 속성을 중심으로 2개의 릴레이션을 하나로 합쳐서 새로운 릴레이션을 만드는 연산

 - 연산자의 기호는 그리스문자 ▷◁를 사용

 - 표기 형식 : R▷◁키속성r=키속성sS

   단, 속성 r은 릴레이션 R의 속성이고, 키속성 s는 릴레이션 S의 속성임

 

● Division

 - X ⊃ Y인 2개의 릴레이션에서 R(X)와 S(Y)가 있을 때, R의 속성이 S의 속성값을 모두 가진 튜플에서 S가 가진 속성을 제외한 속성만을 구하는 연산

 - 표기 형식 : R[속성r : 속성s] S

   단, 속성 r은 관계 R의 속성이고 속성 s는 관계 S의 속성이며, 속성 r과 속성 s는 동일 속성값을 가지는 속성이여야 함

 

#26_Anomaly(이상)의 개념 및 종류

● 이상(Anomaly) : 정규화를 거치지 않은 데이터베이스 내에 데이터들이 불필요하게 중복되어 릴레이션 조작 시 발생하는 예기치 못한 곤란한 현상

 - 삽입 이상(Insertion Anomaly) : 릴레이션에 데이터를 삽입할 때 의도와는 상관없이 원하지 않은 값들도 함께 삽입되는 형상

 - 삭제 이상(Deletion Anomaly) : 릴레이션에서 한 튜플을 삭제할 때 의도와는 상관없는 값들도 함께 삭제되는 현상

 - 갱신 이상(Update Anomaly) : 릴레이션에서 튜플에 있는 속성값을 갱신할 때 일부 튜플의 정보만 갱신되어 정보에 모순이 생기는 현상

 

#27_정규화 과정

#28_SQL의 분류

● DDL(데이터 정의어)

 - SCHEMA, DOMAIN, TABLE, VIEW, INDEX를 정의하거나 변경 또는 삭제할 때 사용하는 언어

 - 데이터베이스 관리자나 데이터베이스 설계자가 사용

 - 데이터 정의어(DDL)의 3가지 유형

  ㆍCREATE : Schema, Domain, Table, View, Index를 정의

  ㆍALTER : Table에 대한 정의를 변경하는데 사용

  ㆍDROP : Schema, Domain, Table, View, Index를 삭제

 

● DML(데이터 조작어)

 - 데이터베이스 사용자가 응용 프로그램이나 질의어를 통하여 저장된 데이터를 실질적으로 처리하는데 사용하는 언어

 - 데이베이스 사용자와 데이터베이스 관리시스템 간의 인터페이스 제공

 - 데이터조작어(DML)의 4가지 유형

  ㆍSELECT : 테이블에서 조건에 맞는 튜플을 검색

  ㆍINSERT : 테이블에 새로운 튜플을 삽입

  ㆍDELETE : 테이블에서 조건에 맞는 튜플을 삭제

  ㆍUPDATE : 테이블에서 조건에 맞는 튜플의 내용을 변경

 

● DCL(데이터 제어어)

 - 데이터의 보안, 무결성, 데이터 회복, 병행 수행 제어 등을 정의하는데 사용하는 언어

 - 데이터베이스 관리자가 데이터 관리를 목적으로 사용

 - 데이터 제어어(DCL)의 종류

  ㆍCOMMIT : 데이터베이스 조작 작업이 정상적으로 완료되었음을 관리자에게 알려줌

  ㆍROLLBACK : 데이터베이스 조작 작업이 비정상적으로 종료되었을 떄 원래의 상태로 복구

  ㆍGRANT : 데이터베이스 사용자에게 사용권한을 부여

  ㆍREVOKE : 데이터베이스 사용자의 사용권한을 취소

 

#29_Select 문

● 테이블을 구성하는 튜플(행)들 중에서 전체 또는 조건을 만족하는 튜플(행)을 검색하여 주기억장치상에 임시 테이블로 구성시키는 명령문

 

● 일반형식


  SELECT predicate [테이블명.]속성명1, [테이블명,]속성명2, ...

  FROM 테이블명1, 테이블명2, ...

  [WHERE 조건]

  [GROUP BY 속성명1, 속성명2, ...]

  [HAVING 조건]

  [ORDER BY 속성명 [ASC | DESC]];


 ① SELECT절

  - Predicate : 불러올 튜플수를 제한할 명령어를 기술

  ㆍALL : 모든 튜플을 검색할 때 지정하는 것으로, 주로 생략

  ㆍDISTLNCT : 중복된 튜플이 있으면 그 중 첫번째 한개만 검색

  ㆍDISTINCTROW : 중복된 튜플을 검색하지만 선택된 속성의 값이 아닌, 튜플 전체를 대상으로

  - 속성명 : 검색하여 불러올 속성(열) 및 수식들을 지정

  ㆍ기본 테이블을 구성하는 모든 속성을 지정할 때는 '*'를 기술

  ㆍ두 개 이상의 테이블을 대상으로 검색할 때는 반드시 테이블명, 속성명으로 표현

 ② FROM절 : 질의에 의해 검색될 데이터들을 포함하는 테이블명을 기술

 ③ WHERE절 : 검색할 조건을 기술

 ④ GROUP BY절 : 특정 속성을 기준으로 그룹화하여 검색할 때 그룹화 할 속성을 지정함, 일반적으로 그룹함수와 함께 사용

 ⑤ HAVING절 : GROUP BY와 함께 사용되며, 그룹에 대한 조건을 지정

 ⑥ ORDER BY절 : 특정 속성을 기준으로 정렬하여 검색할 때 사용

  - 속성명 : 정렬의 기준이 되는 속성명을 기술

  - [ASC | DESC] : 정렬방식으로 'ASC'는 오름차순, 'DESC'는 내림차순을 의미, 생략하면 오름차순으로 지정

 

#30_삽입, 삭제, 갱신문

● 삽입문(Insert Into ~ )

 INSERT

 INTO 테이블명(속성명1, 속성명2, ...)

 VALUES (데이터1, 데이터2, ...);

 - 대응하는 속성과 데이터의 개수와 data_type이 일치해야 함

 - 기본 테이블의 모든 속성을 사용할 때는 속성명을 생략할 수 있음

 - SELECT문을 사용하여 다른 테이블의 검색 결과 삽입할 수 있음

 

● 삭제문(delect From ~)

 DELETE

 FROM 테이블명

 WHERE 조건;

 - 모든 레코드를 삭제할 때는 WHERE 절을 생략함

 - 모든 레코드를 삭제하더라도 테이블 구조는 남아 있기 때문에 디스크에서 테이블을 완전히 제거하는 DROP과는 다름

 

● 갱신문(Update ~ Set ~)

 UPDATE 테이블명

 SET 속성명 = 데이터[, 속성명=데이터]

 WHER 조건;

 

 

+ Recent posts