Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 |
Tags
- 오블완
- 국비지원교육
- KDT
- Java
- UXUIPrimary
- 내일배움카드
- 티스토리챌린지
- 오픈챌린지
- 디자인교육
- baekjoon
- 환급챌린지
- 디자인강의
- OPENPATH
- 객체지향
- Spring
- 백엔드 부트캠프
- 국비지원취업
- UXUI챌린지
- mysql
- 자바
- 오픈패스
- JPA
- 부트캠프
- Be
- 국비지원
- 백엔드개발자
- 백준
- 패스트캠퍼스
- 디자인챌린지
- UXUI기초정복
Archives
- Today
- Total
군만두의 IT 개발 일지
[스터디11] 5. 데이터베이스 본문
목차
CHAPTER 06 데이터베이스
1. 데이터베이스의 큰 그림
데이터베이스와 DBMS
- 데이터베이스(Database): 원하는 기능을 동작시키기 위해 마땅히 저장해야 하는 정보의 집합
- DBMS(Database Management System): 데이터베이스를 관리하기 위한 프로그램(소프트웨어)로, 크게 관계형 데이터베이스 관리 시스템(RDBMS)과 NoSQL 데이터베이스 관리 시스템 두 가지 유형으로 나뉜다.
- RDBMS: MySQL, Oracle, PostgreSQL, SQLite, MariaDB, Microsoft SQL Server 등
- NoSQL: MongoDB, Redis 등
서버로서의 DBMS
- DBMS는 다른 응용 프로그램과 상호작용하며 서버처럼 동작한다. 응용 프로그램은 DBMS에 쿼리(query)를 보내 데이터를 요청하며, 이때 SQL(Structured Query Language)과 같은 데이터베이스 언어를 사용한다.
- SQL은 크게 4가지로 분류된다.
- DDL(데이터 정의 언어): CREATE, ALTER, DROP 등
- DML(데이터 조작 언어): SELECT, INSERT, UPDATE, DELETE 등
- DCL(데이터 제어 언어): GRANT, REVOKE 등
- TCL(트랜잭션 제어 언어): COMMIT, ROLLBACK 등
파일 대신 데이터베이스를 이용하는 이유
단순히 파일에 데이터를 저장하는 방식에 비해 DBMS를 사용하면 다음과 같은 장점이 있다.
- 데이터의 일관성 및 무결성을 보장하기 용이하다.
- 불필요한 데이터 중복을 줄일 수 있다.
- 데이터 변경 시 연관된 다른 데이터를 수정하기 편리하다.
- 다양한 조건으로 정교한 검색이 가능하다.
- 백업 및 복구가 용이하다.
데이터베이스의 저장 단위와 트랜잭션
- 엔티티(Entity): 독립적으로 존재하며 고유한 특성(속성, Attribute)을 가진 객체로, 데이터베이스에는 이러한 엔티티들이 레코드(Record) 형태로 저장된다.
- 스키마(Schema): 데이터베이스에 저장될 데이터의 구조와 제약 조건을 정의한 '틀'이다. RDBMS는 정해진 스키마를 따르는 반면, NoSQL은 스키마가 없어 유연한 데이터 저장이 가능하다.
- 트랜잭션(Transaction): 데이터베이스와의 논리적 상호작용 단위를 의미한다. 트랜잭션은 안전한 처리를 위해 ACID라는 4가지 성질을 만족해야 한다.
- 원자성(Atomicity): 트랜잭션의 모든 작업이 성공하거나 모두 실패해야 한다.
- 일관성(Consistency): 트랜잭션 전후로 데이터베이스 상태는 일관성을 유지해야 한다.
- 격리성(Isolation): 여러 트랜잭션이 동시에 수행될 때 서로 간섭하지 않아야 한다.
- 지속성(Durability): 성공적으로 완료된 트랜잭션의 결과는 영구적으로 저장되어야 한다.
2. RDBMS의 기본
테이블의 구성: 필드와 레코드
- 필드 타입: 테이블의 각 필드(열)에 저장될 수 있는 데이터의 유형을 지정한다. (예: INT, VARCHAR, DATE)
- 키(Key): 테이블의 각 레코드(행)을 고유하게 식별하기 위한 필드 또는 필드의 집합
- 후보 키: 레코드를 유일하게 식별할 수 있는 최소한의 필드 집합
- 기본 키(Primary Key): 여러 후보 키 중에서 레코드를 대표하도록 선택된 단 하나의 키다. NULL 값을 가질 수 없다.
- 외래 키(Foreign Key): 다른 테이블의 기본 키를 참조하여 테이블 간의 관계를 형성하는 키
테이블의 관계
- 일대일(One-to-One): 한 테이블의 레코드가 다른 테이블의 레코드 하나와만 대응된다. (예: 승객과 여권)
- 일대다(One-to-Many): 한 테이블의 레코드가 다른 테이블의 여러 레코드와 대응될 수 있다. (예: 고객과 주문)
- 다대다(Many-to-Many): 양쪽 테이블의 레코드들이 서로 여러 개와 대응될 수 있다. 주로 중간 테이블을 통해 구현된다. (예: 사용자와 그룹)
무결성 제약 조건
데이터의 일관성과 유효성을 유지하기 위한 규칙
- 도메인 제약 조건: 필드에 저장될 값의 타입이나 범위가 정해진 규칙을 따라야 한다.
- 엔티티 무결성 제약 조건: 기본 키는 NULL 값을 가질 수 없으며, 고유해야 한다.
- 참조 무결성 제약 조건: 외래 키는 참조하는 테이블의 기본 키 값 중 하나이거나 NULL이어야 한다.
3. SQL
RDBMS를 다루기 위한 표준 언어
- 데이터 정의 언어(DDL): CREATE(생성), ALTER(수정), DROP(삭제) 등의 명령어로 데이터베이스 객체의 구조를 정의한다.
- 데이터 조작 언어(DML): INSERT(삽입), UPDATE(수정), DELETE(삭제), SELECT(조회) 등의 명령어로 데이터를 관리한다.
- 트랜잭션 제어 언어(TCL): COMMIT(반영), ROLLBACK(취소), SAVEPOINT(롤백 지점 설정) 등의 명령어로 트랜잭션을 제어한다.
- 데이터 제어 언어(DCL): GRANT(권한 부여), REVOKE(권한 회수) 등의 명령어로 사용자 접근 권한을 관리한다.
4. 효율적 쿼리
데이터베이스에서 원하는 정보를 효율적으로 가져오기 위한 방법들
- 서브 쿼리(Subquery): 다른 SQL문 안에 포함된 SELECT문을 의미하며, 복잡한 질의를 구성할 때 유용하다.
- 조인(Join): 두 개 이상의 테이블을 특정 조건에 따라 하나로 합쳐서 조회하는 기능이다.
- INNER JOIN: 두 테이블에 공통으로 존재하는 레코드만 결합한다.
- OUTER JOIN (LEFT, RIGHT, FULL): 한쪽 테이블의 모든 레코드를 포함하고, 조건에 맞지 않는 다른 쪽 테이블의 필드는 NULL로 채운다.
- 뷰(View): 하나 이상의 테이블로부터 유도된 가상의 테이블이다. 복잡한 SELECT문을 단순화하거나 특정 데이터만 노출하는 보안 목적으로 사용된다.
- 인덱스(Index): 테이블의 검색 속도를 높이기 위해 특정 필드를 기준으로 만들어진 자료구조로, 책의 '찾아보기'와 유사한 역할을 하며, 주로 B 트리 자료구조로 구현된다.
5. 데이터베이스 설계
- ER 다이어그램(ERD): 데이터베이스를 구성하는 엔티티(테이블)와 그 관계를 시각적으로 표현한 설계도
- 정규화(Normalization): 데이터의 중복을 줄이고 무결성을 높이기 위해 테이블을 구조화하고 분해하는 과정
- 제1 정규형: 모든 필드가 원자 값을 가져야 한다.
- 제2 정규형: 부분 함수 종속성을 제거해야 한다. (모든 필드가 기본 키 전체에 종속)
- 제3 정규형: 이행적 종속성을 제거해야 한다. (기본 키가 아닌 필드끼리 종속되면 안 됨)
- 보이스/코드 정규형(BCNF): 모든 결정자가 후보 키여야 한다.
6. NoSQL
RDBMS와 상반되는 특징을 가진 비관계형 데이터베이스
RDBMS vs NoSQL
RDBMS가 정형화된 데이터와 ACID 트랜잭션을 통한 일관성을 중시한다면, NoSQL은 유연한 스키마, 수평적 확장성(스케일 아웃), 높은 성능과 가용성을 특징으로 한다.
NoSQL의 종류
- 키-값 데이터베이스: 키와 값의 쌍으로 데이터를 저장한다. (예: Redis)
- 도큐먼트 데이터베이스: JSON이나 XML과 같은 문서(도큐먼트) 형태로 데이터를 저장한다. (예: MongoDB)
- 그래프 데이터베이스: 데이터를 노드와 관계로 표현하여 관계 중심의 데이터를 저장하는 데 특화되어 있다. (예: Neo4j)
- 칼럼 패밀리 데이터베이스: 행과 열, 그리고 칼럼 패밀리라는 단위로 데이터를 관리하며, 스키마가 유연하다. (예: Cassandra)
기술 면접 질문
- 데이터 저장 및 관리를 위해 파일 시스템 대신 데이터베이스를 사용하는 이유를 설명해주세요.
- 트랜잭션과 ACID가 무엇인지 설명해주세요.
- 인덱스가 무엇인지 설명해주세요.
- NoSQL 데이터베이스란 무엇이며, 관계형 데이터베이스와 어떤 차이가 있는지 설명해주세요.
이 글은 『 이것이 취업을 위한 컴퓨터 과학이다 with CS 기술 면접』 책을 읽고 학습한 내용을 정리한 것입니다.
'학습일지 > CS' 카테고리의 다른 글
| 5. 동시성 문제 해결: 비관적 락, 낙관적 락, 원자적 연산 (0) | 2025.09.07 |
|---|---|
| 4. 비동기 연동, 언제 어떻게 써야 할까? (0) | 2025.08.30 |
| [스터디11] 4. 네트워크 (1) | 2025.08.29 |
| [스터디11] 3. 자료구조 (5) | 2025.08.22 |
| [스터디11] 2. 운영체제 (5) | 2025.08.07 |
Comments
