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간 튜플들의 관계. PK와 FK (외래키 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
'개념정리 > 기술면접대비' 카테고리의 다른 글
[기술면접 대비] 6. 기타 (0) | 2021.05.31 |
---|---|
[모의면접 1차] (0) | 2021.05.26 |
[JS 기초탄탄 프로젝트] 브라우저 이해하기 - 문서, 이벤트, 인터페이스 (0) | 2021.05.11 |
[기술면접 대비] 4. CS 공통 - 네트워크 (1) | 2021.04.02 |
[기술면접 대비] 3. CS 공통 - 운영체제 (0) | 2021.04.02 |