BLOG main image
분류 전체보기 (313)
교육 (13)
NEIS (6)
Edufine (0)
Programmer (5)
Android Programming (1)
Internet W3 (18)
JAVA Programming (9)
JSP/Servlet (1)
Framework (7)
Spring For Beginner (4)
eGovFrame (10)
MEAN Stack (2)
NodeJS (5)
SublimeText (30)
SublimeText_Tips (18)
Eclipse (16)
JavaScript (8)
jQuery (12)
jQuery_tips (1)
Ajax (3)
DWR(Direct Web Remote) (4)
JSON(JS Object Notation) (4)
Oracle (2)
MySQL (28)
OS (16)
Download (3)
Life (10)
Favorit Site (1)
Books (2)
Healthy (1)
Stocks (1)
HTML5/CSS (1)
Python (4)
Security (7)
CISSP (0)
Ruby On Rails (5)
일기장 (0)
영어 교과서(중2) (3)
알고리즘 (0)
Go Lang (3)
VB 2010 (12)
C# (1)
정보보안기사(네트워크보안) (0)
업무 활용 엑셀 (11)
틈틈이 활용팁 (14)
하루 하루 살아가며 ……. (2)
기술 (1)
파이썬 & 데이터분석 (1)
Visitors up to today!
Today hit, Yesterday hit
daisy rss
tistory 티스토리 가입하기!
2019. 5. 2. 17:05

암기하자!!! 

 

○ 스키마: 데이터베이스에 저장되는 데이터 구조와 제약조건 ex) 고객번호 INT, 이름 CHAR(10), 나이 INT 등

 

3단계 데이터베이스 구조의 예

데이터베이스를 3단계 구조로 나누고, 단게별로 스키마를 유지하며 스키마 사이의 대응 관계를 정의하는 궁극적인
목적은 데이터 독립성을 실현하기 위해서이다. 
3단계 데이터베이스 구조에는 논리적 데이터 독립성과 물리적 데이터 독립성이 존재한다.
논리적 데이터 독립성은 개념스키마가 변경되더라도 외부 스키마가 영향을 받지 않는 것이다. 
물리적 데이터 독립성은 내부스키마가 변경되더라도 개념 스키마가 영향을 받지 않는 것이다. 

 

스키마 간의 사상

데이터베이스에 저장되는 데이터에 관한 정보를 저장하는 곳을 데이터 사전(Data Dictionary) 또는 시스템 카탈로그(System Catalog) 라고 한다.
데이터 사전은 일반 사전처럼 데이터베이스에 저장되어 있는 데이터를 정확하고 효율적으로 이용하기 위해 참고해야 되는 스키마, 사상 정보, 다양한 제약조건 등을 저장하고 있다. 

데이터 언어는 데이터 정의어(DDL), 데이터 조작어(DML), 데이터 제어어(DCL) 로 구성된다. 
 데이터 정의어(DDL)은 스키마를 정의하거나, 수정 또는 삭제하기 위해 사용한다. 
 데이터 조작어(DML)은 데이터의 삽입, 삭제, 수정, 검색 등의 처리를 요구하기 위해서 사용한다.
 데이터 제어어(DCL)은 데이터베이스에 저장된 데이터를 여러 사용자가 무결성과 일관성을 유지하며 문제없이 공유할 수 있도록, 내부적으로 필요한 규칙이나 기법을 정의하기 위해 사용한다. 

데이터 모델링: 현실 세계에 존재하는 데이터를 컴퓨터 세계의 데이터베이스로 옮기는 변환 과정, 

데이터 모델링은 개념적 모델링과 논리적 모델링으로 나뉜다.
데이터 모델링은 데이터구조(Data Structure), 연산(Operation), 제약조건(contraint)로 구성된다.

개체-관계 모델: 피터 첸(Peter Chen)이 1976년 제안한 것으로, 현실 세계를 개체(entity)와 개체 간의 관계(relationship)을 이용해 개념적 구조로 표현하는 방법

 

○ 릴레이션(relation) = 테이블(table)
○ 개체(Entity) = 레코드(record), 튜플(tuple), 행
○ 속성(Attribute) = 필드(field), 컬럼(column), 열

○ 차수(degree)
하나의 릴레이션(table)에서 속성(컬럼)의 전체 개수를 릴레이션의 차수(degree)라고 한다. 
모든 릴레이션(relation)은 최소 1이상의 차수(최소 컬럼 1개 이상)를 유지해야 한다. 

○ 카디널리티(cardinality)
- 하나의 릴레이션에서 튜플(레코드, 행)의 전체 개수를 릴레이션의 카디널리티(cardinality)라고 한다. 

○ 도메인(domain)
속성 하나가 가질 수 있는 모든 값의 집합을 해당 속성의 도메인(domain)이라 한다.

○ 수퍼키(super key) // 고객아이디, NEIS개인코드, 주민번호를 포함한 속성 집합 또는 속성
유일성의 특성을 만족하는 속성 또는 속성들의 집합
고객아이디(기본키)를 포함하는 속성 집합은 모두 수퍼키가 될 수 있다. ex) (고객아이디, 고객이름)

○ 후보키(candidate key)  // 고객아이디, NEIS개인코드, 주민번호 속성
유일성과 최소성을 만족하는 속성 또는 속성들의 집합
고객아이디 속성은 단독으로 고객 튜플을 유일하게 구별할 수 있으므로 후보키가 될 수 있다. 
하지만 (고객 아이디, 고객이름)은 후보키가 될 수 없다.
고객이름 속성이 없어도 고객아이디 속성만으로도 유일성을 만족할 수 있기 때문이다.

○ 기본키(primary key)
여러 후보키 중에서 기본적으로 사용할 키

○ 대체키(alternate key)
기본키로 선택되지 못한 후보키

○ 외래키(foreign key)
다른 릴레이션(table)의 기본키를 그대로 참조하는 속성의 집합

 개체 무결성 제약조건: 기본키를 구성하는 모든 속성은 널값을 가질 수 없다. 기본키 제약조건
 참조 무결성 제약조건: 외래키는 참조할 수 없는 값을 가질 수 없다. 외래키 제약조건

 

 슈퍼키: 유일성

 후보키: 유일성 + 최소성

 기본키: 여러 후보키 중에서 기본적으로 사용할 키

 대체키: 기본키가 아닌 후보키

 외래키: 다른 릴레이션의 기본키를 참조하는 속성

 

 함수종속적이다.

  X키 → Y키 를 결정할때, X를 결정자, Y를 종속자라고 하며, 이를 함수종속적이다 라고 한다. 

 

 정규화

  - 개념: 이상현상(anomaly, 삽입이상, 갱신이상, 삭제이상)을 제거하면서 DB를 설계해 나가는 과정

  - 분류:

    1) 기본 정규형: 1NF, 2NF, 3NF, BCNF

    2) 고급 정규형: 4NF, 5NF

 

 이상현상

  - 삽입 이상: 새 데이터를 삽입하기 위해 불필요한 데이터도 함께 삽입해야 하는 문제

  - 갱신 이상: 중복 튜플 중 일부만 변경하여 데이터가 불일치하게 되는 모순의 문제

  - 삭제 이상: 튜플을 삭제하면 꼭 필요한 데이터까지 함께 삭제되는 데이터 손실의 문제

 

 1NF

  - 릴레이션에 속한 모든 속성의 도멘인이 원자값(atomic value)로만 구성되어야 한다.

  - 릴레이션에 속한 모든 속성이 더는 분해되지 않는 값만 가져야 한다. 

  - 최소한 1NF를 만족해야 관계형 데이터베이스(RDBMS)의 릴레이션이 될 수 있다. 

 2NF

  - 1NF를 만족하면서 기본키가 아닌 모든 속성이 기본키에 완전함수 종속되어야 한다.

 3NF

  - 2NF를 만족하면서 기본키가 아닌 모든 속성이 기본키에 이행적 함수 종속이 되지 않아야 한다.

  - 이행적 함수종속이란? 고객아이디 -> 등급 -> 할인율일 때 고객아이디 -> 할인율을 결정할 때.

 보이스/코드 NF(=강한 3NF, Strong 3NF)

  - 릴레이션의 함수 종속 관계에서 모든 결정자(X)가 후보키(유일성, 최소성)이면 BCNF에 속한다.

  - 기본키, 후보키1, 후보키2, 후보키3, 후보키4, …… 등의 릴레이션에서 발생할 수 있다.


참고: 한빛아키데미 데이터베이스 개론 김연희 著

반응형