1주차 - 기본 개념

1. 파일시스템과 데이터베이스의 차이점에 대해서 설명해주세요.

파일 시스템은 소프트웨어로 데이터를 파일 단위로 관리합니다. 파일이란 기억 장치에 저장되는 데이터 묶음(Byte Stream)을 말합니다. 파일 시스템은 파일이 중복되는 경우 데이터도 중복됩니다. 또한 모든 파일이 동일한 제약 조건을 준수하기 어려워 데이터의 일관성이 떨어집니다. 파일 시스템의 예시로는 FAT, NTFX, EXT 등이 있습니다. 데이터베이스는 데이터를 DBMS라는 소프트웨어로 관리합니다. DBMS는 데이터 중복 방지와 일관성 유지를 위한 다양한 기능을 제공합니다. DBMS의 예시로는 MySQL, PostgreSQL 등이 있습니다.

모범 예상 답변

펼치기

파일시스템에서는 데이터를 파일로 관리합니다. 데이터를 파일로 관리할 경우 중복이 발생할 수 있고 일관성이 깨질 수 있습니다. 반면, 데이터베이스에서는 데이터를 DBMS을 통해 관리합니다. DBMS를 통해 데이터의 중복을 방지하고 일관성을 유지할 수 있습니다. 또한 여러 사용자가 동시사용할 수 있고 데이터 복구나 보안성까지 제공합니다.

2. 데이터베이스의 특징에 대해 설명해주세요.

DB(Database, 데이터베이스)는 구조화된 정보 또는 데이터의 조직화된 모음을 말합니다. DB는 컴퓨터 시스템에 저장되고 DBMS로 제어합니다. 스프레드 시트와 비교한 DB의 특징은 다음과 같습니다.

스프레드 시트
데이터베이스

데이터 저장 및 조작 방법

복잡한 데이터 조작 수행 불가

복잡한 로직과 언어로 데이터 조작 수행

데이터에 액세스 할 수 있는 사람

단일 사용자 혹은 적은 수의 사용자

여러 명의 사용자

저장할 수 있는 데이터 양

사용자의 특성이 반영된 소규모 정보 보관

방대한 양의 조직화된 정보 보관

모범 예상 답변

펼치기

데이터베이스는 데이터가 저장되는 공간을 뜻합니다. 관계형 데이터베이스의 경우 데이터를 테이블 형태로 저장하며 중복없는 데이터를 일관성 있게 유지합니다.

3. DBMS는 뭘까요? 특징에 대해 설명해주세요.

DBMS(Database Management System, 데이터베이스 관리 시스템)은 데이터베이스를 관리하는 소프트웨어입니다. 특징은 다음과 같습니다.

  • 중복 제어: 모든 데이터를 단일 DB로 통합해서 DB 내부의 데이터 중복 제어

  • 데이터 공유: 모든 사용자가 동일한 DB를 사용하므로 여러 사용자 간에 동시에 데이터 공유 가능

  • 백업 및 복구 기능: 자동으로 데이터 백업 생성 or 필요할 때 데이터를 복원하는 백업 및 복구 기능 제공

  • 무결성 제약 조건 적용: 일부 제약 조건을 적용한 후 정제된 데이터가 DB에 저장되고 이것이 DBMS로 이어짐

  • 데이터의 독립성: 응용 프로그램의 구조에 영향을 주지 않고 데이터의 구조를 변경할 수 있음

모범 예상 답변

펼치기

DBMS는 사용자 또는 애플리케이션으로부터 데이터베이스를 생성하거나 데이터베이스에 데이터를 저장, 수정, 삭제 등의 작업을 수행할 수 있게 해주는 소프트웨어입니다.

4. 스키마가 뭘까요? 3단계 데이터베이스 구조에 대해 설명해주세요.

png

데이터베이스 구조는 계층에 따라 분리되어 있습니다. 구조를 나눔으로써 여러 사용자에게 개인화된 경험을 제공하고 각 계층을 보호할 수 있습니다.

1. External Level(외부 레벨)

png

외부 단계는 뷰 단계라고도 합니다. 외부 단계는 DBMS와 최종 사용자의 상호 작용을 설명합니다. 각 외부 스키마는 특정 사용자 그룹이 관심을 갖는 데이터베이스 부분을 설명하고 해당 사용자 그룹으로부터 나머지 데이터베이스를 숨깁니다.

2. Conceptual level(개념 단계)

png

개념 단계는 논리 단계라고도 합니다. 개념 스키마는 개념적 수준의 전체 DB 디자인(구조)를 설명하는데 사용됩니다. 개념 단계는 DB에 어떤 데이터가 저장되는지, 데이터 간에 어떤 관계가 존재하는지 설명하고 데이터 구조 구현과 같은 내부 세부 사항을 숨깁니다. 프로그래머와 DB 관리자는 이 수준에서 작업합니다.

3. Internal Level(내부 단계)

png

내부 단계는 물리 단계라고도 합니다. 내부 단계는 복잡한 하위 수준 데이터 구조를 자세히 설명합니다. 내부 단계는 물리적 데이터 모델을 사용해서 데이터가 블록에 저장되는 방식을 정의합니다. 내부 단계에는 DB의 물리적 저장 구조를 설명하는 내부 스키마가 있습니다.

모범 예상 답변

펼치기

스키마는 데이터베이스의 구조나 제약 조건등에 대한 명세라고 말할 수 있습니다. 데이터베이스는 3단계 구조로 설명할 수 있습니다. 외부스키마는 사용자단에서 데이터베이스를 바라보는 뷰를 정의합니다. 개념스키마는 전체 데이터베이스의 구조를 정의합니다. 내부스키마는 데이터의 물리적 저장구조를 정의합니다.

5. 데이터 독립성에 대해서 설명해주세요.

png

데이터 독립성은 데이터의 논리적(물리적) 구조의 변경이 응용 프로그램에 영향을 미치지 않는 걸 말합니다.

  • 논리적 데이터 독립성: DBMS가 기존 응용 프로그램에 영향을 미치지 않고 DB의 논리적 구조를 변경

    • 관련 사상: 논리적 구조 사상(Mapping)

    • DBMS가 하나의 논리적 데이터 구조를 가지고 많은 응용 프로그램들이 제각각 요구하는 다양한 형태의 데이터 구조로 사상시켜 줄 수 있는 능력이 있을 때 가능

  • 물리적 데이터 독립성: DBMS가 기존 응용 프로그램과 DB의 논리적 구조에 영향을 미치지 않고 물리적 구조 변경

    • 관련 사상: 물리적 구조 사상(Mapping)

    • DBMS가 하나의 논리적 데이터 구조를 가지고 여러 가지 상이한 물리적 구조를 지원할 수 있는 사상 능력이 있을 때 가능

3단계 데이터베이스 구조와 데이터 독립성의 관계는 다음과 같습니다.

png

모범 예상 답변

펼치기

데이터 독립성은 3단계 데이터베이스 구조의 특징입니다. 논리적 데이터 독립성은 개념 스키마가 변경되어도 외부 스키마에 영향을 주지 않는 것을 뜻합니다. 애플리케이션에 영향을 주지 않고 데이터베이스의 논리적 구조를 변경할 수 있는 것을 뜻합니다. 물리적 데이터 독립성은 내부 스키마가 변경되어도 개념 스키마에 영향을 주지 않는 것을 뜻합니다. 데이터베이스의 논리적 구조에 영향을 주지 않고 물리적 저장 장치를 변경할 수 있는 것을 뜻합니다.

6. RDBMS(관계형 데이터베이스 관리시스템)는 뭘까요?

RDBMS(Relational Database Management System, 관계형 데이터베이스 관리 시스템)은 1970년대 E.F Codd에 의해서 제안된 관계형 데이터 모델에 기반한 데이터베이스 관리 시스템을 말합니다. RDBMS의 특징은 다음과 같습니다.

  • 간단한 모델

    • 이차원 구조(열,행)에 문자/숫자/날짜 정보 저장하는 형태

  • 수학적 이론의 바탕 위에 성립

    • 수학의 집합론을 바탕으로 하고 있어 개발할 시스템의 성능을 수학적으로 미리 예측

    • 검증할 수 있으며, 여러 연산을 수학적으로 최적화 가능

  • 질의어(Query Language) 존재

    • 4GL 형식의 간단한 질의어만 익히면 누구나 원하는 정보를 쉽게 검색할 수 있음

  • 시대적 상황에 부응하는 기술의 지속적 지원 - C/S 구조, 대규모 병렬 처리의 지원 등

모범 예상 답변

펼치기

RDBMS는 관계 데이터 모델을 기반으로 데이터를 구조화하고 관리하는 DBMS입니다. 데이터는 릴레이션(테이블) 표현되며 릴레이션(테이블) 간에는 관계를 맺을 수 있습니다.

7. 릴레이션 스키마와 릴레이션 인스턴스에 대해서 설명해주세요.

릴레이션(Relation)은 RDBMS에서 스키마(열 머리글)와 인스턴스(표)로 데이터를 표현하는 것입니다.

릴레이션 스키마(Relation Schema)는 테이블의 열 머리글을 말합니다. 스키마는 관계의 이름, 각 필드(열, 속성)의 이름 및 도메인을 지정합니다. 도메인은 릴레이션 스키마에서 이름으로 참조되며 연관된 값 세트를 가집니다. 릴레이션 인스턴스(Relation Instance)는 정보를 기재한 표를 말합니다. 릴레이션 인스턴스는 Recode라고 하는 튜플의 집합으로 각 튜플은 릴레이션 스키마와 동일한 수의 필드를 가집니다. 릴레이션 인스턴스는 각 튜플이 행이고 모든 행이 동일한 수의 필드를 갖는 테이블로 생각할 수 있습니다.

모범 예상 답변

펼치기

릴레이션 스키마는 릴레이션의 속성, 도메인, 차수등을 정의한 것입니다. 릴레이션 인스턴스는 릴레이션 스키마에 정의된대로 저장된 데이터를 뜻합니다. 릴레이션에 저장된 하나의 행을 튜플이라고 부릅니다.

8. 릴레이션의 차수와 카니덜리티에 대해 설명해주세요.

릴레이션은 고유한 행(튜플)의 집합으로 정의됩니다. 여기서 차수(Degree)는 속성(필드)의 수를 나타냅니다. 카디널리티(Cardinality)는 튜플의 수를 나타냅니다.

png

위 예시에서 차수는 5, 카디널리티는 4입니다.

모범 예상 답변

펼치기

릴레이션에서 차수란 속성의 개수를 뜻합니다. 예를들어 학생 릴레이션에 나이, 이름, 학교 등의 속성이 있다면 차수는 3입니다. 카디널리티는 릴레이션에 저장된 튜플의 수를 뜻합니다. 튜플들은 서로 중복되지 않는 특징이 있습니다.

9. 키(Key)에 대해서 설명해주세요. (슈퍼키, 후보키, 기본키, 대리키, 외래키)

png

키(Key)는 단일 필드 또는 여러 필드의 조합으로 이루어지는 식별자를 말합니다.

1. 기본 키

png

기본 키는 테이블의 각 행을 고유하게 식별하는 열 또는 열 그룹을 가리킵니다. 열에 UNIQUE 값이 포함되어 있으며 NULL 값을 포함하지 않습니다. 각 테이블에는 하나의 기본 키와 여러 개의 후보 키만 있을 수 있습니다. 예를 들어 TABLE-1에서 Empid는 기본 키입니다.

2. 후보 키

png

후보 키는 기본 키가 될 수 있는 키입니다. 예를 들어 TABLE-1에서 Empid, EmpLicence 및 EmpPassport는 후보 키입니다.

3. 고유 키

고유 키는 기본 키와 유사하며 열에 중복 값을 허용하지 않는 키입니다.

  • 기본 키와의 비교

    • 열에 하나의 null 값을 허용

    • 기본적으로 힙 테이블에 비클러스터형 인덱스를 생성

4. 대체 키

대체 키는 필요한 경우 기본 키로 작동할 수 있는 키입니다. 예를 들어 Table-1에서 Empid 는 기본 키이지만 EmpLicence & EmpPassport를 기본 키로 사용하여 테이블에서 고유한 레코드를 가져올 수 있습니다. 이것이 바로 EmpLicence & EmpPassport 가 대체 키이지만 지금은 기본 키가 아닌 이유입니다.

5. 복합/복합 키

복합 키는 테이블의 둘 이상의 열을 조합한 키입니다. 예를 들어 Table-1에서 Empid 및 EmpLicence 열을 결합하여 테이블에서 데이터를 가져올 수 있습니다.

6. 슈퍼 키

png

슈퍼 키는 테이블의 행을 식별하는 단일 또는 다중 키 그룹입니다. 예를 들어 TABLE-1에서 기본 키, 고유 키, 대체 키는 슈퍼 키의 하위 집합입니다.

  • {Empid, Empname}, {Empid, EmpPassport, Empname}, {EmpLicence, Empname}

EmpLicence, EmpPassport 또는 Empid를 포함하는 모든 열 집합은 테이블의 슈퍼 키입니다.

7. 외래 키

png

외래 키는 다른 테이블의 속성으로 참조되는 키입니다.

모범 예상 답변

펼치기

키는 릴레이션에서 특정한 튜플을 식별할때 사용하는 것입니다. 키의 종류에는 슈퍼키, 후보키, 기본키, 대체키, 외래키, 대리키 등이 있는데, 이중 기본키와 외래키에 대해서 설명 드리겠습니다. 기본키는 후보키중 하나가 선택되어 투플의 식별자로 쓰이는 대표키 입니다. 외래키는 다른 릴레이션의 기본키는 참조하는 키입니다. 외래키를 통해 릴레이션(테이블)간 관계를 맺을 수 있습니다. (꼬리질문) 나머지 키에 대해서도 설명해줄래요?

10. 무결성 제약조건에 대해서 설명해주세요. (도메인 무결성, 개체 무결성, 참조 무결성)

IC(Integrity Constraint, 무결성 제약조건)는 데이터의 품질을 유지하고 보호하기 위한 제약 조건을 말합니다. IC의 유형은 다음과 같습니다.

  • 도메인 무결성 제약

  • 엔터티 무결성 제약

  • 참조 무결성 제약

1. Domain Integrity(도메인 무결성)

도메인 무결성이란 특정 속성의 값이 정의된 도메인을 벗어날 수 없는 것을 말합니다. 예를 들어 성별 속성의 도메인이 '남'과 '여'라면 다른 값은 입력할 수 없습니다.

2. Entity Integrity(개체 무결성)

개체 무결성은 릴레이션에서 기본키를 구성하는 속성은 Null 혹은 중복값을 가질 수 없는 것을 말합니다. 예를 들어 '아이디'가 기본키인 경우 새로운 회원을 생성할 때 아이디를 비워둘 수 없습니다.

3. Referential Integrity(참조 무결성)

참조 무결성이란 외래키로 연결된 두 테이블의 속성에 대한 일관성을 보장하는 것을 말합니다. 예를 들어 직원 테이블과 부서 테이블이 있고 직원 테이블의 부서 번호 속성이 부서 테이블을 참조하는 외래키라고 가정해 보겠습니다. 영업팀에서 근무하는 직원이 있다면 연쇄 삭제(CASCADE)가 허용되지 않은 경우 영업팀이라는 부서만 삭제할 수 없습니다. 참조 무결성을 해치기 때문입니다.

모범 예상 답변

펼치기

무결성 제약조건이란 DB에 저장된 데이터들이 일관성있고 정확하게 관리되기 위한 규칙입니다. 도메인 무결성 제약 조건은 튜플의 값은 속성의 도메인에 해당하는 값만을 가져야하는 조건입니다. 개체 무결성 제약 조건은 기본키는 null값을 가져서는 안된다는 조건입니다. 참조 무결성 제약 조건은 외래키는 참조하는 테이블의 기본키와 일치해야한다는 조건입니다.

11. 사용했던 데이터베이스에 대해서 설명해주세요. (오라클DB, MySQL, MariaDB, MongoDB 등)

MySQL은 오픈 소스 데이터베이스로 다음과 같은 특징을 가집니다.

  • 오픈 소스: 누구나 소프트웨어를 사용하고 수정할 수 있음

  • RDBMS: 관계형 데이터 모델에 기반한 데이터베이스 관리 시스템

    • 데이터를 테이블에 저장

  • 응용 프로그램 지원: 클라이언트/서버 또는 임베디드 시스템에서 작동

모범 예상 답변

펼치기

주로 MySQL을 사용했습니다. MySQL 서버는 MySQL 엔진, 스토리지 엔진으로 이루어져 있습니다. 비지니스 로직 구현시 트랜잭션 처리가 필요했기에, 스토리지 엔진으로 innoDB 엔진을 사용했었습니다.

11.1. (MySQL을 사용했다면) MySQL 엔진에 대해서 설명해주세요.

스토리지 엔진은 MySQL의 구성요소로 테이블 유형에 대한 SQL 작업을 처리합니다. MySQL은 다양한 엔진을 지원하며 특징은 다음과 같습니다.

특징
MyISAM
Memory
InnoDB
Archive
NDB

B-트리 인덱스

Y

Y

Y

N

N

백업/특정 시점 복구

Y

Y

Y

Y

Y

클러스터 DB 지원

N

N

N

N

Y

클러스터형 인덱스

N

N

Y

N

N

압축된 데이터

Y

N

Y

Y

N

데이터 캐시

N

N/A

Y

N

Y

암호화된 데이터

Y

Y

Y

Y

Y

외래 키 지원

N

N

Y

N

Y

전체 텍스트 검색 색인

Y

N

Y

N

N

자리공간 데이터 유형 지원

Y

N

Y

Y

Y

자리공간 색인 지원

Y

N

Y

N

N

해시 인덱스

N

Y

N

N

Y

인덱스 캐시

Y

N/A

Y

N

A

잠금 세분성

Table

Table

Column

Column

Column

MVCC

N

N

Y

N

N

복제 지원

Y

Limited

Y

Y

Y

저장용량 한도

256TB

RAM

64TB

None

384EB

T-트리 인덱스

N

N

N

N

Y

업무

N

N

Y

N

Y

데이터 사전 통계 업데이트

Y

Y

Y

Y

Y

모범 예상 답변

펼치기

MySQL 엔진은 사용자가 요청한 파서를 통해 SQL을 분석, 파싱하고, 옵티마이저를 통해 SQL 실행 계획을 최적화한 다음, 스토리지 엔진을 호출하여 데이터를 읽고 쓰는 역할을 합니다.

11.2. (MySQL을 사용했다면) InnoDB에 대해 설명해주세요.

InnoDB는 MySQL 8.0의 기본 스토리지 엔진입니다. 다른 기본 스토리지 엔진을 구성하지 않은 경우 CREATE TABLE 명령문을 실행하면 InnoDB가 생성됩니다. InnoDB의 이점은 다음과 같습니다.

  • DML 작업은 사용자 데이터를 보호하기 위한 커밋, 롤백 및 충돌 복구 기능을 갖춘 트랜잭션과 함께 ACID 모델을 따름

  • 행 수준 잠금 및 Oracle 스타일의 일관된 읽기는 다중 사용자 동시성 및 성능을 향상

  • InnoDB 테이블은 기본 키를 기반으로 쿼리를 최적화하기 위해 디스크에 데이터를 정렬

    • 각 InnoDB 테이블에는 클러스터된 인덱스라고 하는 기본 키 인덱스가 있어 기본 키 조회를 위한 I/O를 최소화하도록 데이터를 구성

  • 데이터 무결성을 유지하기 위해 InnoDB는 외래 키 제약 조건을 지원

    • 외래 키를 사용하면 삽입, 업데이트 및 삭제가 관련 테이블 간에 불일치를 초래하지 않는지 확인

모범 예상 답변

펼치기

InnoDB는 레코드를 기본키 순으로 정렬해서 저장하고, 기본키에 대한 인덱스를 자동 생성해주기 때문에, 기본키를 통한 범위 검색에 유리합니다. 또한 InnoDB는 레코드의 여러 버전을 유지할 수 있게 해주는 MVCC라는 기술을 통해 트랜잭션이 가능하게 해줍니다. 추가로 버퍼풀이라는 공간에 인덱스 정보를 캐싱 해두거나 쓰기 지연 용도로도 사용하기에 I/O를 줄일 수 있다는 장점이 있습니다.

참고 자료

Last updated