2015. 8. 11. 06:27ㆍ프로그래밍/Database
관계형 데이터베이스 구조
개요
개체(Entity), 관계(Relationship)를 모두 릴레이션(Relation)이라는 표(Table)로 표현한다.
릴레이션은 개체를 표현하는 개체 릴레이션, 관계를 나타내는 관계 릴레이션이 있다.
관계형 데이터베이스 Releation 구조
릴레이션은 데이터들의 표(Table)의 형태로 표현한 것으로 구조를 나타내는 릴레이션 스키마와
실제 값들인 릴레이션 인스턴스로 구성된다.
용어
튜플(Tuple)
- 릴레이션을 구성하는 각각의 행을 말한다.
- 속성의 모임으로 구성된다.
- 파일 구조에서 레코드와 같은 의미.
- 튜플의 수를 카디널리티(Cardinality) 또는 기수, 대응수라고 한다.
속성(Attribute)
- 속성은 데이터베이스를 구성하는 가장 작은 논리적 단위
- 파일 구조상의 데이터 항목 또는 데이터 필드에 해당된다.
- 속성은 개체의 특성을 기술.
- 속성의 수를 디그리(Degree)또는 차수라고 한다.
도메인(Domain)
- 도메인은 하나의 애트리뷰트가 취할 수 있는 같은 타입의 원자(Atomic)값들의 집합이다.
- 도메인은 실제 애트리뷰트 값이 나타날 때 그 값의 합법 여부를 시스템 검사하는데에도 사용된다.
릴레이션의 특징
같은 릴레이션 일 때,
- 같은 튜플이 포함 될 수 없다.
- 튜플 사이에는 순서가 없다.
- 튜플들의 삽입, 삭제 등의 작업으로 ㅇ니해 릴레이션은 시간에 따라 변한다.
- 릴레이션 스키마를 구성하는 속성들 간의 순서는 중요하지 않음.
- 유일한 식별은 위한 속성의 명칭은 유일, 속성을 구성하는 값은 동일할 수 있다.
- 튜플을 유일하게 식별하기 위해 속성들의 부분집합을 키(key)로 설정한다.
- 속성의 값은 논리적으로 더 이상 쪼갤 수 없는 원자값만을 저장한다.
관계형 데이터베이스의 제약 조건
제약 조건 - 데이터베이스에 저장되는 데이터의 정확성을 보장하기 위하여 키를 이용하여 데이터에 제한을 주는 것.
개체 무결성 제약, 참조 무결성 제약 등이 해당된다.
키의 개념과 종류
후보키(Candidate Key)
- 릴레이션을 구성하는 속성들 중에서 튜플을 유일하게 식별하기 위해 사용하는 속성들의 부분집합.
즉 기본키로 사용할 수 있는 속성들을 말한다.
- 모든 릴레이션에는 반드시 하나 이상의 후보키가 존재.
- 유일성 : 하나의 키 값으로 하나의 튜플만을 유일하게 식별할 수 있어야 한다.
- 최소성 : 모든 레코드들을 유일하게 식별하는데 꼭 필요한 속성으로만 구성되어야 한다.
기본키(Primary Key)
- 기본키는 후보키 중에서 선택한 주키(Main Key)
- 한 릴레이션에서 특정 튜플을 유일하게 구별할 수 있는 속성.
- Null 값은 가질 수 없고, 같은 값이 중복 저장될 수 없다.
대체키(Alternate Key)
- 후보키가 둘 이상일 때 기본키를 제외한 나머지 후보키들을 말한다. 보조키라고도 함.
슈퍼키(Super Key)
- 속성들의 집합으로 구성된 키.
외래키(Foreign Key)
- 관계(Releationship)를 맺고 있는 릴레이션 R1, R2에서 릴레이션 R1이
참조하고 있는 릴레이션 R2의 기본키와 같은 R1 릴레이션의 속성을 외래키라고 한다.
- 외래키로 지정되면 참조 릴레이션의 기본키에 없는 값은 입력할 수 없다.
무결성
개체 무결성
릴레이션에서 기본키를 구성하는 속성은 널(NULL) 값이나 중복값을 가질 수 없다.
참조 무결성
외래키 값은 NULL이거나 참조 릴레이션의 기본키 값과 동일해야 한다.
즉, 릴레이션은 참조할 수 없는 외래키 값을 가질 수 없다.
외래키와 참조하려는 테이블의 기본키는 도메인과 속성 개수가 같아야 한다.
정규화
개요
- 함수적 종속성 등의 종속성 이론을 이용하여 잘못 설계된 관계형 스키마를 더 작은 속성의 세트로 쪼개는 과정.
- 제1정규형, 제2정규형, 제3정규형, BCNF형, 제4정규형, 제5정규형(차수가 높으면 만족시켜야 할 제약 조건이 늘어남.)
- 정규화는 데이터베이스의 논리적 설계 단계에서 수행, 논리적 처리 및 품질에 큰 영향을 미친다.
목적
- 데이터 구조의 안정성 확보.
- 어떠한 릴레이션이라도 데이터베이스 내에서 표현 가능하게 만든다.
- 효과적인 검색 알고리즘을 생성할 수 있다.
- 중복을 배제하여 삽입, 삭제, 갱신 이상의 발생을 방지한다.
- 데이터 삽입 시 릴레이션을 재구성할 필요성을 줄인다.
Anomaly(이상)의 개념과 종류
정규화를 거치지 않으면 데이터베이스 내에 데이터들이 불필요하게 중복되어 문제가 발생한다. 이를 이상이라 한다.
삽입 이상, 삭제 이상, 갱신 이상
정규화 과정
1NF(제1정규형)
릴레이션에 속한 모든 도메인이 원자값(Atomic Value)만으로 되어 있는 릴레이션이다.
- 모든 속성이 단순 영역에서 정의된다.
2NF(제2정규형)
릴레이션 R이 1NF이고, 키가 아닌 모든 속성이 기본키에 대하여 완전 함수적 종속 관계를 만족한다.
*함수적 종속 관계
어떤 릴레이션 R에서 결정자 X와 종속자 Y를 각각 R의 속성 집합의 부분 집합이라고 할 때,
속성 X의 값 각각에 대해 시간에 관계없이 항상 속성 Y의 값이 오직 하나만 연관되어 있을 때,
Y는 X에 함수 종속이라고 한다.
<수강> 릴레이션 (학번, 이름, 과목명). 학번에 따라 이름이 결정된다.
이름이 학번에 함수 종속적이라 하며 학번->이름과 같이 표현한다.
*완전 함수적 종속 관계
속성 A가 다른 속성들의 집합 B 전체에 대해서 함수적 종속 관계를 가지지만 B의 진부분 집합에 대해서는
종속 관계를 갖지 않는 종속관계.
<수강> 릴레이션 (학번, 과목명, 성적). 성적은 (학번, 과목명)엔 종속적이지만 (학번), (과목명)에는 종속이 아니다.
*부분 함수적 종속 관계
(학년)은 (학번, 과목번호)에 부분 함수 종속.
3NF(제3정규형)
릴레이션 R이 2NF이고, 키가 아닌 모든 속성이 기본키에 대해 이행적 종속 관계를 이루지 않도록 제한한 관계형.
*이행적 종속성
A->B, B->C이면 A->C
BCNF(Boyce-Codd 정규형)
릴레이션 R에서 결정자가 모두 후보키인 관계형.
3NF에서 후보키가 많고 서로 중첩되는 경우에 적용하는 강한 제3 정규형이라고도 한다.
BCNF의 제약 조건
- 키가 아닌 모든 속성은 각 키에 대하여 완전 종속해야 한다.
- 키가 아닌 모든 속성은 그 자신이 부분적으로 들어가 있지 않은 모든 키에 대해 완전 종속해야 한다.
- 어떤 속성도 키가 아닌 속성에 대해서는 완전 종속할 수 없다.
4NF(제4정규형)
릴레이션 R에 A->->B가 성립하는 경우 R의 모든 속성이 A에 함수적 종속.
*다치 종속(MVD; Multi Valued Dependency)
A,B,C 세 개의 속성을 가진 릴레이션 R에서 어떤 복합 속성(A,C)에 대응하는 B 값의
집합이 A값에만 종속되고 C 값에는 무관할 때 다치 종속 A->->B가 존재한다.
5NF(제5정규형)
릴레이션 R의 모든 조인 송족성의 마족이 R의 후보키를 통해서만 만족될 때.
*조인 종속(Join Dependency)
어떤 릴레이션 R이 자신의 Projection(X, Y, ..., Z)에 대한 조인의 결과가 자신과 같을 때
조인 종속은 R 속성 집합의 부분 집합이다. - 이게 무슨 개소린가.........
정규화 과정 정리
비정규 릴레이션 -> @원자값이 아닌 도메인을 분리
-> 1NF -> @부분적 함수 종속 제거
-> 2NF -> @이행적 함수 종속 제거
-> 3NF -> @결정자이면서 후보키가 아닌 함수 송족 제거
-> BCNF -> @다치 종속 제거
-> 4NF -> @조인 종속성 이용
-> 5NF
SQL(Structured Query Language)
정의
관계대수와 관계해석을 기초로 한 혼합 데이터 언어.
질의어지만 질의 기능만 있는 것이 아니라 데이터 구조의 정의, 데이터 조작, 데이터 제어 기능을 모두 갖추고 있다.
SQL 분류
DDL(데이터 정의어)
CREATE - SCHEMA, DOMAIN, TABLE, VIEW, INDEX를 정의한다.
ALTER - TABLE에 대한 정의를 변경하는 데 사용한다.
DROP - SCHEMA, DOMAIN, TABLE, VIEW, INDEX를 삭제한다.
DML(데이터 조작어)
SELECT - 테이블에서 조건에 맞는 튜플을 검색한다.
DELETE - 테이블에서 조건에 맞는 튜플을 삭제한다.
INSERT - 테이블에 새로운 튜플을 삽입한다.
UPDATE - 테이블에서 조건에 맞는 튜플의 내용을 변경한다.
DDL(데이터 제어어)
COMMIT - 명령에 의해 수행된 결과를 실제 물리적 디스크로 저장하고,
데이터베이스 조작 작업이 정상적으로 완료되었는지 알려준다.
ROLLBACK - 데이터베이스 조작 작업이 비정상적으로 종료되었을 때 원래의 상태로 복구한다.
GRANT - 데이터베이스 사용자에게 사용 권한을 부여한다.
REVOKE - 데이터베이스 사용자의 사용 권한을 취소한다.
뷰
정의
사용자에게 접근이 허용된 자료만을 제한적으로 보여주기 위한 하나 이상의 기본 테이블로부터 유도된 이름을 가진 가상 테이블.
뷰의 장점
- 논리적 데이터 독립성 제공
- 동일 데이터에 대해 동시에 여러 사용자의 상이한 응용이나 요구를 지원한다.
- 사용자의 데이터 관리를 간단하게 해준다.
- 접근 제어를 통한 자동 보안이 제공된다.
뷰의 단점
- 독립적인 인덱스를 가질 수 없다.
- ALTER VIEW문을 사용할 수 없다. 뷰의 정의를 변경할 순 없다.
- 뷰로 구성된 내용에 대한 삽입, 삭제, 갱신 연산에 제약이 따른다.
예시
CREATE VIEW 춘천고객(성명, 전화번호)
AS SELECT 성명, 전화번호
FROM 고객
WHERE 주소 = '춘천시';
DROP VIEW 춘천고객 RESTRICT;
RESTRICT - 뷰를 다른 곳에서 참조하고 있으면 삭제가 취소.
CASCADE - 뷰를 참조하는 다른 뷰나 제약 조건까지 모두 삭제된다.
'프로그래밍 > Database' 카테고리의 다른 글
Index(mysql) (2) | 2015.08.18 |
---|---|
데이터베이스 고급 기능 (0) | 2015.08.13 |
저장프로시저(MS-SQL 환경) (0) | 2015.08.12 |
데이터 모델링과 설계 (0) | 2015.08.11 |
정보 시스템 (0) | 2015.08.11 |
우분투에 mysql, php 설치하기 (0) | 2015.08.10 |
sql (0) | 2015.08.10 |