데이터베이스
1. 데이터 베이스의 기본
Q. 데이터 베이스는 무엇인가요.
데이터베이스는 일정한 규칙, 혹은 규약을 통해 구조화되어 저장되는 데이터 모음
데이터베이스를 제어, 관리하는 통합 시스템을 DBMS
데이터베이스 안에 있는 데이터들은 특정 DBMS마다 정의된 쿼리 언어를 통해 삽입, 삭제, 수정, 조회 등을 수행
데이터베이스는 실시간 접근과 동시 공유가 가능
Q. SQL
SQL은 RDBMS에서 데이터 조작, 관리, 쿼리하는 데 사용하는 프로그래밍 언어
SQL을 사용하여 데이터를 효율적으로 관리하고 유용한 정보를 추출하는 것
데이터베이스와 상호작용하여 데이터를 조작하고 쿼리하는 데 사용
데이터베이스에서 데이터를 추출하거나 저장, 수정, 삭제하는 등의 작업에 사용
SQL은 데이터 정의 언어와 쿼리 언어로 구성
- 데이터 정의 언어 (Data Definition Language, DDL)
- 데이터베이스, 테이블, 인덱스 등 데이터 구조를 생성, 수정, 삭제하는데 사용
- 대표적 DDL 문법
- CREATE: 데이터베이스, 테이블, 인덱스 등 생성
- ALTER: 데이터베이스 or 테이블 구조 변경
- DROP: 데이터베이스, 테이블, 인덱스 등 삭제
- 쿼리 언어 (Data Manipulation Language, DML)
- 데이터베이스에서 데이터 검색, 삽입, 수정, 삭제하는데 사용
- 대표적인 DML 문법
- SELECT: 데이터 조회
- INSERT: 테이블에 새로운 레코드 삽입
- UPDATE: 테이블의 레코드 수정
- DELETE: 테이블에서 레코드 삭제
Q. 키
데이터베이스에서 데이터를 효율적으로 검색, 정렬 및 관리하기 위해 중요한 역할
- 기본 키
- 유일성과 최소성 만족
- 테이블의 각 레코드를 고유하게 식별하는 역할
- 대체 키
- 유일성과 최소성 만족
- 레코드를 식별할 수 있지만 기본키로 선택되지 않은 것
- 후보 키
- 유일성과 최소성 만족
- 후보 키 = 기본 키 + 대체 키
- 기본 키로 선택될 수 있는 모든 키
- 외래 키
- 다른 테이블의 기본키를 그대로 참조하는 값
- 두 테이블간의 일관성 유지
- 슈퍼 키
- 유일성 만족
- 하나 이상의 필드로 구성된 키로, 레코드들을 식별할 수 있는 것
- 복합 키
- 두 개 이상의 필드로 구성된 키로, 레코드들을 식별할 수 있는 것
2. ERD와 정규화
Q. ERD (Entity Relationship Diagram)
개체(Entity)와 관계(Relationship)를 중점적으로, 데이터베이스 구조 이해하기 위해 그리는 다이어그램
Q. 정규화
릴레이션 간의 잘못된 종속 관계로 인해 데이터베이스 이상 현상이 일어나 이를 해결하기 위함
저장 공간을 효율적으로 사용하기 위해 릴레이션을 여러 개로 분리하는 과정
- 제 1 정규형(First Normal Form, 1NF)
- 제 2 정규형(Second Normal Form, 2NF)
- 제 3 정규형(Third Normal Form, 3NF)
-
BCNF(Boyce-Codd Normal Form)
- 어떠한 테이블에 대해 테이블에 존재하는 모든 함수 종속 관계의 Determinant가 Candidate key
- 함수 종속 관계를 만족하는 것은 Determinant 항목이자 Candidate key에 해당
-
제 4 정규형(Fourth Normal Form, 4NF)
- 4NF는 MVD(Multivalued Dependency)라는 개념을 통해 정의
- MVD는 functional dependency의 일반화된 개념
- functional dependency에서는 determinant X에 의해 Y의 값이 하나만 결정되었다면, MVD에서는 determinant X에 의해 다수의 Y값이 결정된다. 위와 같은 MVD 관계는 X →→ Y로 표기한다.
- MVD의 종류
- Trivial MVD : Y가 X의 부분집합이거나, X와 Y를 합한 것이 테이블 그 자체인 경우 (X U Y = R)
- Nontrivial MVD : 위에서 정의된 trivial MVD가 아닌 모든 MVD
-
제 5 정규형(Fifth Normal Form, 5NF)
- 5NF는 어떠한 테이블이 오직 테이블의 Candidate key를 포함하는 부분집합에 의해서만 Join Dependency가 성립되는 것
- 어떠한 테이블 필드들의 부분집합을 포함하는 테이블들을 JOIN 하여 작성하면, 테이블 T는 join dependency를 갖는다.
3. 트랜잭션과 무결성
Q. 트랜잭션
데이터베이스에서 한 번에 수행되어야 하는 하나 이상의 작업을 묶은 논리적인 작업 단위
- 원자성 (Atomicity): 한 트랜잭션 내에서 실행한 작업들은 하나의 작업으로 간주. 모두 성공 또는 실패
- 일관성 (Consistency): 트랜잭션이 완료되면 데이터베이스는 일관된 상태를 유지
- 격리성 (Isolation): 동시에 실행되는 트랜잭션들이 서로 영향을 미치지 않도록 격리
- 지속성 (Durability): 트랜잭션에서 성공적으로 완료된 변경 사항은 영구적으로 데이터베이스에 반영
Q. 무결성
데이터의 정확성, 일관성, 유효성을 유지하는 것.
- 개체 무결성: 기본 키의 필드 값은 Null 허용하지 않음.
- 참조 무결성: 참조 관계인 두 테이블은 항상 일관된 값 유지.
- 고유 무결성: 특정 속성에 대해 각 튜플의 값이 달라야 하는 조건이 주어지면 달라야 함. Unique
- Null 무결성: 특정 속성 값에 Null이 올 수 없다는 조건이 주어지면 Null 못옴
4. 데이터베이스의 종류
| SQL | NoSQL |
---|
데이터 모델 | 관계형 데이터베이스 모델을 사용. 데이터는 테이블로 구성되며, 각 테이블은 정해진 스키마에 따라 열(필드)로 구성 | 다양한 데이터 모델을 사용. 주요한 모델로는 문서(Document), 키-값(Key-Value), 열(Column-Family), 그래프(Graph) 등. 스키마가 유연하며, 각각의 문서나 항목은 고유한 구조 |
쿼리 언어 | SQL 사용하여 데이터를 쿼리하고 조작 | 각각의 모델에 맞는 쿼리 언어를 사용 |
확장성 | 수평적 확장 어렵고, 주로 수직적 확장으로 운영. 즉, 하드웨어 성능을 높이는 방식으로 확장. | 수평적 확장 가능. 클러스터를 추가하여 확장하거나 분산 데이터베이스로 운영. |
일관성과 트랜잭션 | ACID(Atomicity, Consistency, Isolation, Durability) 트랜잭션을 지원하여 데이터 일관성과 안정성 보장 | 일관성과 트랜잭션에 대한 지원 정책 다양. 몇몇 NoSQL 데이터베이스는 분산 환경에서 일관성을 보장하지 않는 CP(일관성, 분할 허용성) 모델을 따르기도 하며, 다른 일부 데이터베이스는 AP(가용성, 분할 허용성) 모델을 따릅니다. |
스키마 설계 | 스키마 미리 정의, 데이터 구조 변경하기 어렵. | 스키마 유연하므로, 데이터 구조 변경 상대적 간단 |
활용성 | 정형화된 데이터와 강력한 트랜잭션을 요구하는 경우에 적합 | 비정형화된 데이터와 빠른 확장이 필요한 경우에 유용 |