데이터베이스 기초
관계형 데이터베이스의 표와 키, SQL의 검색·집계·조인·부질의, 정규화와 E-R 다이어그램, 트랜잭션과 ACID 특성, 동시 실행의 문제와 격리 수준, 락과 데드락, 장애 복구, 인덱스, NoSQL을 객관식 문제로 학습합니다.
—내 정답률
0 / 40푼 문제 수
데이터베이스 기초: 핵심 정리
온라인 쇼핑몰의 재고도 은행 계좌도, 많은 정보 시스템은 데이터베이스에 데이터를 맡기고 있습니다. 관계형 데이터베이스는 데이터를 표의 형태로 가지고, 기본 키와 외래 키로 표끼리를 연결하며, SQL이라는 언어로 필요한 데이터를 꺼내거나 고쳐 씁니다.
SQL의 SELECT 문에 의한 검색, GROUP BY와 HAVING에 의한 집계, 내부 조인과 외부 조인, 부질의를 작은 표의 예로 결과를 세어 가며 학습합니다. 표를 올바르게 나누는 정규화와 E-R 다이어그램, 트랜잭션의 ACID 특성, 갱신 손실이나 더티 리드 등 동시 실행의 문제와 격리 수준, 락과 데드락, 로그를 사용한 장애 복구, 인덱스의 구조와 NoSQL의 개념도 다루며, IT 자격시험의 데이터베이스 분야 학습에도 도움이 됩니다.
데이터베이스 기초 전체 문제 (40)
- 관계형 데이터베이스의 용어에서 표(릴레이션)의 한 행에 해당하는 것은?
- 관계형 데이터베이스의 표에서 기본 키로 지정하는 열(또는 열의 조합)이 반드시 만족해야 하는 조건은?
- 사원 표(사원번호, 이메일주소, 이름, 부서)에서 사원번호와 이메일주소는 둘 다 사원마다 다르며 NULL이 되지 않는다. 이름과 부서는 다른 사원과 같아질 수 있다. 이 표의 후보 키를 모두 든 것은?
- 수강 표(학생번호, 과목번호, 성적)는 어느 학생이 어느 과목을 수강하여 어떤 성적을 받았는지를 기록한다. 한 학생은 여러 과목을 수강하고, 한 과목은 여러 학생이 수강한다. 같은 학생이 같은 과목을 두 번 등록하는 일은 없을 때, 이 표의 기본 키로 적절한 것은?
- 고객 표(고객ID, 이름)의 기본 키는 고객ID이며, 주문 표(주문ID, 고객ID)의 고객ID는 고객 표의 고객ID를 참조하는 외래 키로 정의되어 있다. 고객 표에는 고객ID가 'C1'과 'C2'인 행만 있다. 이 상태에서 INSERT INTO 주문 VALUES ('O9', 'C5')를 실행했을 때의 결과로 올바른 것은?
- SQL 문은 데이터 정의어(DDL), 데이터 조작어(DML), 데이터 제어어(DCL)로 나뉜다. DDL로 분류되는 것은?
- 상품 표에 (상품명, 가격)이 (펜, 120), (노트, 250), (지우개, 80), (파일, 300), (자, 150)인 5개 행이 있다. SELECT 상품명 FROM 상품 WHERE 가격 >= 150 ORDER BY 가격 DESC의 결과로 반환되는 행을 순서대로 나열한 것은?
- 사원 표의 부서 열에 위의 행부터 차례로 영업, 개발, 영업, 총무, 개발, 영업의 값이 들어 있다(전체 6행). SELECT DISTINCT 부서 FROM 사원의 결과는 몇 행이 되는가?
- SQL에서 DELETE FROM 사원을 WHERE 절 없이 실행했을 때의 결과로 올바른 것은?
- 시험 표의 점수 열에 80, NULL, 70, 90의 4개 값이 있다(NULL은 미응시를 나타낸다). SELECT AVG(점수) FROM 시험의 결과는?
- 성적 표의 점수 열에 50, NULL, 70, NULL, 90, 30의 6개 값이 있다. SELECT COUNT(*), COUNT(점수), AVG(점수) FROM 성적의 결과를 순서대로 나열한 것은?
- 사원 표(사원번호, 부서, 급여)에서 부서별 평균 급여가 300 이상인 부서와 그 평균 급여를 구하려고 한다. 올바른 SQL 문은?
- 매출 표(매장, 금액)에 (A, 500), (A, 700), (B, 300), (B, 400), (C, 1200), (D, 200), (D, 900)의 7개 행이 있다. SELECT 매장, SUM(금액) FROM 매출 GROUP BY 매장 HAVING SUM(금액) >= 1000의 결과는 몇 행이 되는가?
- 사원 표(이름, 부서, 급여)에 8개 행이 있고, 부서별 급여는 영업이 320, 280, 350, 개발이 400, 310, 총무가 260, 300, 기획이 330이다. SELECT 부서, COUNT(*) FROM 사원 WHERE 급여 >= 300 GROUP BY 부서 HAVING COUNT(*) >= 2의 결과는 몇 행이 되는가?
- 사원 표(사원번호, 이름, 부서ID)에 4개 행이 있고, 부서ID는 차례로 10, 20, 10, NULL이다. 부서 표(부서ID, 부서명)에는 부서ID가 10, 20, 30인 3개 행이 있다. SELECT 사원.이름, 부서.부서명 FROM 사원 INNER JOIN 부서 ON 사원.부서ID = 부서.부서ID의 결과는 몇 행이 되는가?
- 사원 표(사원번호, 이름, 부서ID)에 5개 행이 있고, 부서ID는 차례로 10, 20, 10, NULL, NULL이다. 부서 표(부서ID, 부서명)에는 부서ID가 10, 20, 30인 3개 행이 있다. SELECT 부서.부서명, 사원.이름 FROM 부서 LEFT OUTER JOIN 사원 ON 부서.부서ID = 사원.부서ID의 결과는 몇 행이 되는가?
- 표 R의 열 x의 값은 1, 1, 2, 3의 4개 행, 표 S의 열 x의 값은 1, 1, 2, 4의 4개 행이다. SELECT * FROM R INNER JOIN S ON R.x = S.x의 결과는 몇 행이 되는가?
- 고객 표(고객ID, 이름)에는 (C1, 아오키), (C2, 이노우에), (C3, 우에다), (C4, 에토)의 4개 행이 있다. 주문 표(주문ID, 고객ID, 금액)에는 (O1, C1, 3000), (O2, C2, 8000), (O3, C1, 6000), (O4, C3, 2000), (O5, C2, 9000)의 5개 행이 있다. SELECT 이름 FROM 고객 WHERE 고객ID IN (SELECT 고객ID FROM 주문 WHERE 금액 > 5000)의 결과는 몇 행이 되는가?
- 고객 표(고객ID, 이름)와 주문 표(주문ID, 고객ID, 금액)에서 한 번도 주문하지 않은 고객의 이름을 구하려고 한다. 올바른 SQL 문은?
- 관계형 데이터베이스의 뷰에 대한 설명으로 올바른 것은?
- 관계형 데이터베이스의 표를 정규화하는 주된 목적은?
- 수주 표(수주번호, 상품번호, 수량, 고객번호, 고객명)의 기본 키는 {수주번호, 상품번호}이고, 함수 종속은 {수주번호, 상품번호} → 수량, 수주번호 → 고객번호, 고객번호 → 고객명이다. 이 표를 제3정규형까지 정규화한 결과로 올바른 것은?
- 사원 표(사원번호, 이름, 부서코드, 부서명)의 기본 키는 사원번호이며, 모든 열은 하나의 값만 가진다. 함수 종속은 사원번호 → 이름, 사원번호 → 부서코드, 부서코드 → 부서명이다. 이 표의 정규형으로 올바른 것은?
- 읽기가 대부분을 차지하는 집계용 데이터베이스에서 정규화한 표를 일부러 하나로 합쳐 같은 데이터를 중복해서 갖게 하는 설계(반정규화)를 하는 경우가 있다. 이 설계의 장점과 단점의 조합으로 올바른 것은?
- E-R 다이어그램에서 학생과 과목 사이에 '한 학생은 여러 과목을 수강하고, 한 과목은 여러 학생이 수강한다'는 다대다 관계가 있다. 이 관계를 관계형 데이터베이스의 표로 구현하는 방법으로 적절한 것은?
- 계좌 표에서 트랜잭션을 시작하고, 계좌 A의 잔액에서 300을 빼는 UPDATE와 계좌 B의 잔액에 300을 더하는 UPDATE를 실행했다. 그 후 COMMIT 대신 ROLLBACK을 실행했다. 계좌 표는 어떻게 되는가?
- 트랜잭션이 가져야 할 ACID 특성 중 '계좌 A에서 출금하여 계좌 B에 입금하는 이체 처리가, 도중에 장애가 일어나도 둘 다 수행되거나 전혀 수행되지 않거나 둘 중 하나가 된다'는 성질은?
- 재고 표에서 어떤 상품의 재고 수는 10이다. 트랜잭션 T1은 재고 수를 읽어 3을 뺀 값을 쓰고, T2는 재고 수를 읽어 5를 뺀 값을 쓴다. 락을 걸지 않고 T1의 읽기, T2의 읽기, T1의 쓰기, T2의 쓰기 순서로 실행되었을 때 최종 재고 수는 얼마가 되는가?
- 트랜잭션을 동시에 실행했을 때 일어나는 문제 중 더티 리드에 대한 설명으로 올바른 것은?
- 트랜잭션 T1이 SELECT COUNT(*) FROM 주문 WHERE 금액 >= 1000을 실행했더니 8건이었다. 그 직후 T2가 금액 2000인 주문 행을 INSERT하고 커밋했다. T1이 같은 SELECT 문을 다시 실행하자 9건이 되었다. 이 현상은?
- SQL 표준 규격이 정하는 격리 수준 중 READ COMMITTED에서 일어날 수 있는 현상의 조합으로 올바른 것은?
- 트랜잭션 T1이 어떤 행에 공유 락을 걸고 읽고 있다. 이 행에 대해 T2가 공유 락을, T3가 배타 락을 요구했다. T1이 락을 해제할 때까지의 동안에 대해 올바른 것은?
- 트랜잭션의 동시성 제어에 사용되는 2단계 로킹 방식에 대한 설명으로 올바른 것은?
- 트랜잭션 T1은 행 A에 배타 락을 건 뒤 행 B의 락을 요구하고, T2는 행 B에 배타 락을 건 뒤 행 A의 락을 요구했기 때문에 둘 다 앞으로 나아갈 수 없게 되었다. DBMS가 이 상태를 감지했을 때 하는 일반적인 대처는?
- 많은 DBMS는 데이터를 갱신할 때 갱신 내용을 로그(저널)에 기록하고, 그 로그를 데이터베이스 본체보다 먼저 비휘발성 저장 장치에 쓴다(WAL: 로그 선행 기록). 이 방식을 취하는 주된 이유는?
- 트랜잭션 T1~T5가 있고, 장애가 발생하기 전에 체크포인트를 한 번 잡았다. T1은 체크포인트 전에 시작하여 커밋했다. T2와 T3는 체크포인트 전에 시작했으며, T2는 체크포인트 후 장애 전에 커밋했고, T3는 장애 시점에 커밋하지 않았다. T4와 T5는 체크포인트 후에 시작했으며, T4는 장애 전에 커밋했고, T5는 커밋하지 않았다. 장애 후의 복구에서 로그를 사용하여 롤포워드해야 하는 트랜잭션은?
- 100만 행이 있는 회원 표의 회원번호 열에 B+ 트리 인덱스를 만들었다. 일반적으로 기대할 수 있는 효과와 그 대가의 조합으로 올바른 것은?
- 100만 행의 회원 표에서 회원번호(모두 다름), 도도부현(47종류), 성별(2종류로 거의 반반) 열에 각각 B+ 트리 인덱스를 만드는 것을 생각한다. WHERE 절로 한 열의 값을 지정하여 검색할 때 인덱스의 효과가 가장 작다고 생각되는 열은?
- NoSQL이라고 불리는 데이터베이스 중 키-값형의 특징으로 일반적으로 올바른 것은?
- 여러 서버에 데이터의 복제본을 두는 분산 데이터베이스에 대한 CAP 정리의 설명으로 적절한 것은?
컴퓨터 시스템의 다른 분야
- 컴퓨터 산술 IEEE 754, 고정소수점, 반올림 오차
- 확률·통계와 대기행렬 경우의 수·확률 분포·추정과 검정·M/M/1
- ISA와 어셈블리 RISC-V, 주소 지정 방식, 호출 규약
- 컴파일러 구문 분석, SSA, 최적화, 레지스터 할당
- 링커, 로더, 실행 파일 ELF, 심벌 해석, 재배치, 동적 링킹
- OS와 하드웨어 인터럽트, 시스템 콜, 페이지 폴트
- Linux와 커맨드 라인 기초 셸·권한·파이프·스크립트
- 메모리 계층 구조 캐시, 교체 정책, 세 가지 미스
- 멀티코어와 동기화 MESI, 원자적 명령어, 메모리 배리어
- GPU 프로그래밍 워프, 공유 메모리, 병합 접근, 점유율
- AI 하드웨어·소프트웨어 스택 추론과 학습, 양자화, 루프라인 모델
- 머신러닝의 기초 학습의 종류·평가 지표·신경망
- 임베디드 시스템과 펌웨어 GPIO, UART/SPI/I2C, RTOS
- HDL과 검증 Verilog, 래치, 상태 머신, 테스트벤치
- I/O 인터페이스와 버스 PCIe, USB, SerDes, CXL
- 네트워크 기초 TCP/IP, 서브넷 계산, DNS, TLS
- 웹 기술 기초 HTTP·Cookie·REST·CORS·캐시
- 무선 통신의 기초 변조·OFDM·MIMO·RF 회로
- 정보 보안 기초 암호, 인증, 웹 공격과 대책
- 자료 구조와 알고리즘 시간 복잡도, 탐색, 정렬, 그래프
- 프로그래밍의 기초(의사 코드 트레이스) 의사 코드, 트레이스, 배열, 재귀
- C 언어 기초 포인터·메모리·미정의 동작
- 소프트웨어 개발과 프로젝트 관리 개발 프로세스, 테스트, 일정·비용 관리
- 경영 전략과 회계의 기초(전략 분야) 회계, 손익분기점, 경영 전략, 마케팅
- 서비스 관리와 시스템 감사 SLA·인시던트와 문제·감사와 내부 통제
- 시스템 구성과 신뢰성 설계 이중화·RAID·백업·클라우드
- 성능 분석 암달의 법칙, CPI, 병목
- 하드웨어 보안 사이드 채널, 시큐어 부트, TEE, PUF
- 전력 관리 DVFS, 파워 게이팅, 슬립 상태