DataBase
무결성과 유지해야하는 이유
- 무결성은 데이터의 정확성, 일관성, 유효성을 유지하는 것을 말한다. 무결성이 유지되어야 DB에 저장된 값과 실제 값이 일치하는지를 신뢰할 수 있다.
Inner Join과 Outer Join
A B
- -
1 3
2 4
3 5
4 6
-
Inner Join : 양쪽 테이블 모두 일치하는 데이터, 즉 교집합을 구한다.
a | b --+-- 3 | 3 4 | 4
-
Outer Join : 기준 테이블의 모든 키값을 기준으로 Join을 한다.
-
Left Outer Join
a | b --+----- 1 | null 2 | null 3 | 3 4 | 4
-
Right Outer Join
a | b -----+---- 3 | 3 4 | 4 null | 5 null | 6
-
Full Outer Join : 두 테이블의 합집합을 얻게 된다.
a | b -----+----- 1 | null 2 | null 3 | 3 4 | 4 null | 5 null | 6
-
DDL과 DML
- DDL은 Data Definition Language로 DB 테이블을 생성하거나 수정, 삭제하는 역할의 언어를 말한다.
- CREATE, ALTER, DROP, TRUNCATE
- DML은 Data Manipulation Langue로 입력된 데이터를 조회하거나 수정하거나 삭제하는 역할의 언어를 말한다.
- SELECT, INSERT, UPDATE, DELETE
E-R모델
-
용어정리
-
엔티티 : 다른 객체와는 구분되며 존재하는 객체
-
엔티티 집합 : 같은 속성을 가지는 같은 유형의 엔티티들의 집합
-
애트리뷰트 : 엔티티를 구성하는 설명 속성 각각을 애트리뷰트라 한다.
-
-
ER-모델
일 대 일 관계 / 일 대 다 관계 / 다 대 다 관계
이상 현상
데이터베이스의 설계가 잘못되어 데이터베이스에 데이터를 삽입하거나 삭제할때 문제가 생기는 현상
- 삽입이상 : 파일에 레코드를 추가할 떄, 불필요한 항목의 값이 들어오는 경우. PK인 값에 NULL이 들어오는 경우.
- 삭제이상 : 키 값을 삭제할 때 의도와는 달리 다른 데이터가 삭제되는 경우
- 갱신 이상 : 불필요한 중복을 포함하면서 갱신이 되는 경우
이러한 이상 현상을 제거하는 알고리즘이 정규화이론이다.
함수 종속
애트리뷰트 X의 값 각각에 대해 항상 애트리뷰트 Y의 값이 오직 하나만 연관되어 있을때 Y는 X에 함수종속이다. 이때 X는 결정자, Y는 종속자라고 한다.
위와 같은 함수 종속도가 있을 때
- 학년은 학번만 가지고서도 정할 수 있다. 따라서 부분종속
- 성적은 학번과 과목코드 둘을 합쳐야 정해질 수 있다. 따라서 완전종속
정규형
-
제 1정규형
-
어떤 릴레이션 R에 속한 모든 도메인이 원자 값으로만 이루어져 있다면 제 1정규형에 속한다.
-
관계형 데이터베이스는 무조건 제 1정규형은 만족해야 한다.
-
-
제 2정규형
-
어떤 릴레이션 R이 제 1정규형이고 주 키에 속하지 않은 애트리뷰트가 모두 주 키에 완전 함수 종속이면, 제 2정규형에 속한다.
-
-
제 3정규형
-
어떤 릴레이션 R이 제 2정규형이고 주 키에 속하지 않은 모든 애트리뷰트들이 주 키에 이행적 함수 종속이 아닐 때 제 3정규형에 속한다.
-
-
보이스/코드 정규형
- 어떤 릴레이션 R이 제 3정규형을 만족하고 릴레이션 R의 모든 결정자가 후보키이면 릴레이션 R은 보이스/코드 정규형에 속한다.
-
제 4정규형
- 어떤 릴레이션 R이 BCNF를 만족하고, 다중값 종속이 없거나 당연한 다중값 종속만 가지고 있으면 제 4정규형에 속한다.
-
제 5정규형
- 어떤 릴레이션 R이 제 4정규형을 만족하고, 릴레이션 R에 존재하는 모든 죠인 종속이 릴레이션 R의 후보 키를 통해서만 성립한다면 제 5정규형에 속한다.
관계형 데이터베이스와 비 관계형 데이터베이스의 차이점
관계형 데이터베이스는 테이블로 이루어져 있으며 테이블은 키와 값의 관계를 나타낸다. 이처럼 데이터의 종속성을 관계로 표현하는 것이 관계형 데이터베이스의 특징이다.
비 관계형 데이터베이스는 테이블형식의 스키마를 사용하지 않는다. 저장되는 데이터 형식의 특정 요구사항에 맞게 최적화된 저장소 모델을 사용하는 것이 특징이다. 흔히 NoSQL이라고 하며 데이터를 저장할때, SQL문이 아닌 다른 언어나 구문을 사용한다.
RDBMS / NoSQL
NoSQL은 JOIN처리가 없기에 노드 확장이 용이하다. 또한 가변적인 데이터구조로 데이터를 저장할 수 있어 훨씬 더 유연성이 높다. 하지만 복잡한 쿼리가 불가능하고 일관성을 항상 유지할 수 없다.
DB ERD 관계선
-
관계선의 종류
- 실선(Identifying) : 식별관계
- 부모 테이블의 PK가 자식 테이블의 FK/PK가 되는 경우
- 부모가 있어야 자식이 생기는 경우
- 점선(Non-Identifying) : 비식별관계
- 부모테이블의 PK가 자식테이블의 일반속성이 되는 경우
- 부모가 없어도 자식이 생기는 경우
- 실선(Identifying) : 식별관계
-
기호의 종류(도형 혹은 식별자)
- |: 1개 / 실선은(dash) ‘1’을 나타낸다.
- ∈ : 여러개 / 까마귀 발(crow’s foot or Many)은 ‘다수’ 혹은 ‘그 이상’을 나타낸다.
- ○ : 0개 / 고리(ring or Optional)은 ‘0’을 나타낸다.
-
위와 같은 기호들을 서로 조합하여 사용될 수 있으며, 다음과 같은 조합이 가능하다.
- Type1(실선과 실선): 정확히 1 (하나의 A는 하나의 B로 이어져 있다.)
- Type2(까마귀발): 여러개 (하나의 A는 여러개의 B로 구성되어 있다.)
- Type3(실선과 까마귀발): 1개 이상 (하나의 A는 하나 이상의 B로 구성되어 있다.)
- Type4(고리와 실선): 0 혹은 1 (하나의 A는 하나 이하의 B로 구성되어 있다.)
- Type5(고리와 까마귀발): 0개 이상 (하나의 A는 0또는 하나 이상의 B로 구성되 있다.)