본문 바로가기

개념정리/기술면접대비

[기술면접 대비] 5. CS 공통 - 데이터베이스

Database

 - schema (구조&제약 조건) + instance (내용, 실제 데이터)

 - 연관 있는 데이터들의 집합

 - 지속적인 변화와 운영 : retrieve(검색), insert, delete, update

 - 다중 사용자가 동시에 공유 가능

 - 사용자의 요구 내용에 따라 데이터를 참조 가능

 

DBMS 

 - 데이터 추상화 : 일반 사용자에게 편의성 제공 및 데이터 보호

 - 운영을 위한 query language 제공

 - 다중 사용자의 데이터 공유

 - transaction control : 동시성 제어

 - 권한 제어

 - 시스템 실패로 인한 에러 복구

 - 쿼리 최적화

 - 사용자 클래스 별 다양한 인터페이스 제공

 

Query Language

 - DDL (Data Definition Lang) : schema, table, view를 정의. CREATE, DROP, ALTER

 - DML (Data Manipulation Lang) : 데이터 조작. SELECT, INSERT, UPDATE, DELETE

 

Schema Architecture

Schema란? 

데이터베이스의 구조를 기술한 것. DB를 구성하는 데이터 개체(Entity), 속성(Attribute), 관계(Relationship)등을 정의.

1) 내부 스키마 physical : DB의 레코드가 물리적으로 저장된 내부 구조를 묘사. 

2) 개념 스키마 conceptual : DB전체의 논리적 구조를 생성. 데이터의 의미, 개체간의 관계와 제약조건, 접근권한, 보안 등을 포함하며 DB관리자가 구성함.

3) 외부 스키마 external (view) : DB 사용자의 입장에서 정의한 구조. 저장된 데이터를 목적에 맞게 가져와 사용자들의 다양한 요구사항을 반영한 각각의 view를 생성.

* 스키마 아키텍쳐는 각 계층의 독립성(physical, logical)을 보장.

 

 

 

DB모델링

DB요구사항 -> ER 모델링(Entity-Relationship) -> Relational Model 관계형 DB생성(Table)

 

ER Model

Entity와 Relationship의 관계를 다이어그램으로 표현한 모델

 

Entity : 개별적인 개체들 ex) 특정 학생 한 명

Entity Type : 개체들의 추상화된 집합(학생, 사원 등), Attribute를 가짐

Attribute : 데이터의 속성을 나타내는 값. 

타입에 따라 simple(단일 속성), composite(다른 속성을 통해 생성된 속성), Multi-Valued(다중 값을 가지는 속성), Null(unknow 또는 does not exist), Derived(다른 속성을 통해 계산 가능한 속성), complex(derived + multi-valued) 등으로 나뉨.

Key 각각의 개체를 유일하게 식별할 수 있는 속성들의 집합. 

* Weak Entity Type

식별가능한 key가 없는 Entity Type.

이를 식별하기 위한 Owner가 필요함 (이 때 Owner는 항상 key를 가져야 함)

Weak Entity Type의 key = Owner Key + its Partial Key 

Weak 개체의 존재는 Owner에 종속되므로 Owner가 DB에서 삭제되면 이와 관계를 맺는 모든 Weak Entity Type이 함께 삭제되어야 함

 

Relationship : 여러 Entity Type을 연결하는 관계

- Recursive한 관계가 형성될 수 있음 (서로 같은 Entity Type이 관계를 맺음, 구분하기 위해 role을 명시함)

- Relationship도 attribute를 가질 수 있음

ex) 같은 사원 Entity Type이지만 상사와 부하의 관계를 맺을 수 있음

Mapping 제약조건

1) 1:M

2) M:1

3) 1:1

4) M:N

Participation 제약조건

1) Total (의무)

2) Partial (선택)

(Min, Max) 제약조건

 - min = 0이면 partial 과 동일함

 - min>0 이면 total과 동일

 

ER 디자인 가이드라인

1. Redundancy 불필요한 Attribute 중복을 피할 것

2. Attribute로 표현 가능한 항목은 불필요한 Entity Type을 만들지 말 것

> Entity Type과 Attribute 분리에 관한 이슈!

 

ER 모델 확장

1. Class : Entity Type을 Subclass/Superclass 로 그룹화 (sub IS-A super)

2. Inheritance : subclass는 superclass(들)의 attribute, relatioship, function 을 상속받음

3. Contraints : super-sub간 제약조건 (Disjoint vs Overlap / Total vs Partial)

4. Specialization : 세분화. super로부터 sub로 내려가는 하향식 모델링(큰->작은)

5. Generalization : 일반화. sub로부터 super로 올라가는 상향식 모델링(작은->큰)

 

Relational Model

Table(Relation)

관계형 데이터베이스에서 데이터를 저장하는 기본 단위.

Tuple (행) : 테이블에서 실제로 저장된 데이터 값을 표현.(Entity or Relationship)

튜플의 개수는 유한함

튜플의 순서는 무관하다

동일한 튜플이 중복해서 존재할 수 없다.

Attribute (열) : 데이터의 속성을 나타내는 값.

각 속성의 이름은 다르게

속성은 더이상 쪼개질 수 없는 atomic한 값(Multi-valued 안 됨)

속성의 값은 단 하나 혹은 NULL값만 허용한다

*NULL : unknown or unavailable or undefiend

 

Key

Super Key

튜플을 식별할 수 있는 속성들의 집합. (유일성)

서로 다른 튜플의 super key는 모두 다르다.

Key

튜플을 식별할 수 있는 최소한이 속성들 (유일성 + 최소성)

super key를 포함하지 않는다.

* super key ⊃ key (super key ≠ key)

Candidate Key

relation에는 여러 종류의 key들이 존재함. (후보키)

Primary Key 

여러 후보키들 중 실제로 식별에 사용할 단 하나의 키를 PK로 정함 (우선키, 기본키)

모든 Relation마다 PK가 존재해야 한다.

좋은 PK를 선정하는 기준

- stable : 안정성. 데이터베이스가 존재하는 동안 변하지 않는 값

- definitive : 항상 존재하는 값

- numeric : 숫자형 값

- minimal : 최소한의 속성들을 사용하는 값(속성값 3개 이하로 구성)

- short : 길이가 짧은 값

- security : 민감한 정보를 포함하지 않음

 

무결성 제약조건 Integrity Constraint

1. Key integrity : 모든 key는 고유한 튜플을 식별할 수 있어야 한다.

 어떤 relation의 튜플 t1, t2에 대해 t1[K] ≠ t2[k]

2. Entity integrity : PK의 값이 null이면 안된다.  t[PK] ≠ NULL

3. Referential integrity : 참조무결성. relations간 튜플들의 관계. PKFK (외래키 Foreign Key)

서로 다른 두 relation R1, R2이 서로 참조관계를 형성할 때 반드시 공통 속성을 포함해야 한다.

참조하는 R1은 참조되는 R2의 PK를 FK로 가져온다. (반드시 PK만 가져와야 함) 

참조되는 R2의 PK를 R1의 FK로 가져올 때 R1에서 FK속성에 해당하는 값이 없다면 NULL을 허용한다.

자기 자신의 PK을 FK로 참조할 수 있다. 

참조무결성 위반사항

- 다른 R에 의해 참조되는 R`가 어떤 튜플을 DELETE하거나 UPDATE했을 때 자신의 PK에 영향을 미친 경우

- 참조하는 R이 새로운 튜플을 추가한 경우 

 

Relational Algebra

R에서 원하는 데이터를 검색하기 위한 질의 처리 연사자들의 모임

N개의 입력 R에 대해 질의 연산의 결과인 1개의 출력 R`가 생성됨

 

1. 종류

1) SELECT ( σ<condition>(R) ) : 단일 R에서 주어진 조건을 만족하는 튜플들을 검색. 조건식은 비교 연산자와 논리연산자 사용.

2) PROJECT ( π<list>(R) ) : 단일 R에서 원하는 속성들의 목록을 가지고 검색

3) UNION ( R  S ) : 2개의 relation이 가지는 튜플들의 합집합

4) INTERSECTION ( R ∩ S ) : 2개의 relation이 가지는 튜플들의 교집합

5) DIFFERENCE ( R - S ) : 2개의 relation이 가지는 튜플들의 차집합

6) CARTESIAN PRODUCT ( R x S ) : 2개의 relation이 가지는 속성들의 합집합 ( 튜플에 대해서 U가 더하기라면 얘는 곱하기 ) 

7) JOIN ( R ⋈ S ) : (조건을 가지는 X) 2개의 relation에 속하는 각각의 join attribute가 join condition을 만족하는 경우만 연결하여 합침.

8) DIVISION ( R % S ) :  R이 S를 모두 포함 할 때, S에는 없고 R에만 속한 속성들. all 조건에 사용됨. ( R에서 S의 속성을 모두 포함하는 것들만 나눠진 후 몫으로 나오기 때문)

 

 

3),4),5)의 조건

 - 2개의 relatiion의 컬럼의 갯수가 서로 같다.

 - 2개의 relatiion에서 동일한 위치에 있는 컬럼의 타입(정수형, 문자형 등)이 서로 같다.

 - 컬럼명은 서로 달라도 허용

 

JOIN의 종류

 - conditon join : 비교 연산자들 중 {≠, <, ≤, >, ≥}를 사용하는 조인

 - equi join : 비교 연산자 중 = 을 사용해 컬럼의 값이 같은 경우만 조인. join 연산 중 가장 자주 사용 ( PK와 FK 등 ) 

 - natural join : equi-join 수행 중 각각의 join attribute명이 동일해 join 결과에 중복된 attribute가 나오는 경우 후자를 삭제해줌

- self join : recursive join, 단일 R이 자기 자신에 대해 조인.

 

Outer join