기본 콘텐츠로 건너뛰기

방송대 방통대 컴퓨터과학개론 14강 - 데이터베이스 (2) - 요약 노트 시험족보 예상문제 - 올에이클래스

컴퓨터과학개론 14강 - 데이터베이스 (2)

컴퓨터과학개론 14강 - 데이터베이스 (2)

관계형 데이터베이스의 릴레이션 구조와 키·무결성 제약조건을 학습한다. 이어서 사용자 요구 분석부터 구현까지 데이터베이스 설계 과정을 살펴보고, SQL을 이용한 테이블 정의·변경과 데이터 검색·삽입·삭제·갱신 및 뷰의 활용을 정리한다.

1. 관계형 데이터 모델과 릴레이션

관계형 데이터 모델은 실세계의 정보를 2차원 테이블 형식으로 표현하고 구현한다. 데이터베이스에서 이 테이블을 릴레이션(relation)이라고 부른다. 예를 들어 고객 릴레이션에는 주민등록번호·이름·주소·신용도를, 은행계좌 릴레이션에는 계좌번호·잔고·고객 주민등록번호를 저장할 수 있다.

DB는 여러 릴레이션으로 구성된다. 각 릴레이션은 구조를 정의하는 릴레이션 스키마와 특정 시점에 저장된 실제 데이터인 릴레이션 인스턴스로 이루어진다. 스키마는 비교적 안정적이지만 인스턴스는 삽입·삭제·갱신에 따라 계속 변한다.

구성 요소의미
릴레이션 이름테이블을 구별하는 이름
속성(attribute)테이블의 열이며 필드 또는 데이터 항목이라고도 함
투플(tuple)테이블의 한 행이며 레코드라고도 함
도메인(domain)하나의 속성이 가질 수 있는 모든 값의 집합
차수(degree)릴레이션에 포함된 속성의 개수
카디널리티(cardinality)릴레이션에 포함된 투플의 개수

릴레이션 = 릴레이션 스키마 + 릴레이션 인스턴스이다. 차수는 열의 수, 카디널리티는 행의 수이다.

2. 릴레이션의 특성

관계형 모델의 릴레이션은 일반적인 표와 비슷하지만 데이터의 정확한 처리를 위해 몇 가지 특성을 만족한다.

특성내용
투플의 유일성하나의 릴레이션에 완전히 동일한 투플은 존재하지 않음
투플의 무순서성투플에는 논리적으로 정해진 순서가 없음
속성의 무순서성릴레이션을 구성하는 속성에도 논리적 순서가 없음
속성값의 원자성각 속성값은 더 나눌 필요가 없는 하나의 값이어야 함

투플과 속성의 무순서성은 화면에 행과 열이 특정 순서로 보인다고 해서 그 순서가 데이터의 논리적 의미가 되는 것은 아니라는 뜻이다. 특정 순서로 결과를 보고 싶다면 검색 과정에서 명시적으로 정렬해야 한다.

속성값의 원자성은 한 칸에 여러 전화번호처럼 값의 목록을 한꺼번에 넣기보다 데이터 모델이 요구하는 하나의 값으로 저장해야 한다는 뜻이다.

3. 키의 개념과 종류

키(key)는 릴레이션의 투플을 유일하게 구별하기 위한 속성 또는 속성의 집합이다. 좋은 키는 두 조건을 고려한다. 유일성은 키값이 각 투플을 유일하게 식별하는 성질이고, 최소성은 유일성을 유지하는 데 불필요한 속성을 포함하지 않는 성질이다.

키 종류정의
슈퍼키유일성을 만족하는 하나 이상의 속성 집합
후보키유일성과 최소성을 모두 만족하는 슈퍼키
기본키후보키 중 릴레이션을 대표하도록 선택한 키
대체키후보키 가운데 기본키로 선택되지 않은 키
외래키다른 릴레이션의 기본키를 참조하는 속성 집합

슈퍼키는 투플을 구별할 수만 있으면 불필요한 속성을 포함할 수도 있다. 후보키는 슈퍼키에서 불필요한 속성을 제거하여 최소성까지 만족한다. 후보키가 여러 개이면 하나를 기본키로 선택하고 나머지는 대체키가 된다.

외래키는 릴레이션 사이의 관계를 표현한다. 예를 들어 납품 릴레이션의 공급자번호는 공급자 릴레이션의 기본키를, 부품번호는 부품 릴레이션의 기본키를 참조할 수 있다.

4. 관계형 모델의 무결성 제약조건

제약조건은 모든 릴레이션 인스턴스가 만족해야 하는 조건이다. 데이터가 아무 값이나 저장되어 모순되거나 참조 관계가 깨지는 것을 방지한다.

제약조건내용
도메인 제약조건각 속성값은 그 속성에 정해진 도메인에 속해야 함
키 제약조건서로 다른 두 투플이 키 속성에서 같은 값을 가질 수 없음
개체 무결성기본키를 구성하는 어떤 속성도 널값을 가질 수 없음
참조 무결성외래키는 널값이거나 참조 대상 릴레이션에 존재하는 기본키값이어야 함

개체 무결성은 기본키로 각 투플을 반드시 식별할 수 있도록 한다. 참조 무결성은 존재하지 않는 공급자나 부품을 납품 데이터가 참조하는 문제를 막는다.

기본키는 널이 될 수 없고, 외래키는 널이거나 참조 대상에 실제 존재하는 키값이어야 한다.

5. 데이터베이스 설계의 전체 과정

데이터베이스 설계는 사용자의 요구조건에서 데이터베이스 구조를 도출하고 구축하는 과정이다. 데이터 내용과 구조를 설계하는 활동은 응용 프로그램의 기능과 트랜잭션을 설계하는 활동과 연결된다.

  1. 사용자 요구 사항 분석
  2. 개념적 데이터베이스 설계
  3. 논리적 데이터베이스 설계
  4. 물리적 데이터베이스 설계
  5. 구현

사용자 요구 사항 분석

사용자가 의도하는 데이터베이스의 목적과 용도를 파악하고 잠정적인 주요 사용자와 범위를 식별한다. 공식·비공식 요구조건 명세를 작성하며 데이터 요구조건, 동적 처리조건과 변경조건을 함께 확인한다. 요구사항 명세, 요구사항 정의서 등의 문서화 작업도 포함한다.

개념적 설계

개체 타입과 개체 사이의 관계를 나타내기 위해 특정 DBMS와 무관한 개념적 데이터 모델을 사용한다. 사용자의 요구를 추상적으로 표현하며 대표적인 도구가 E-R 모델이다. 이 단계의 결과인 개념적 스키마는 DBMS 독립적이다.

논리적 설계

선택한 상용 DBMS가 사용하는 데이터 모델에 맞도록 개념적 구조를 변환한다. 관계형 DBMS를 선택했다면 E-R 구조를 릴레이션 스키마로 사상하며, 입출력과 기능적 형태 및 트랜잭션 인터페이스도 설계한다. 결과인 논리적 스키마는 DBMS에 의존한다.

물리적 설계와 구현

물리적 설계에서는 논리적 구조로부터 효율적이고 구현 가능한 물리적 저장구조를 설계한다. 저장 레코드 형식, 레코드 간 관계와 접근 경로를 정하고 트랜잭션을 상세히 설계한다. 구현 단계에서는 DBMS의 데이터 정의어로 스키마를 만들고, 데이터베이스를 실제 적재·실행·운영하며 트랜잭션을 구현한다.

단계주요 산출물·특징
요구 분석요구사항 명세와 트랜잭션 요구 파악
개념적 설계고수준 개념적 스키마, DBMS 독립적
논리적 설계선택한 데이터 모델의 논리적 스키마, DBMS 의존적
물리적 설계저장 레코드와 접근 경로를 포함한 물리적 스키마
구현스키마 생성, 데이터 적재, 응용 프로그램과 트랜잭션 구현

6. E-R 모델에서 관계형 스키마로

논리적 모델링은 개념적 구조를 목표 DBMS의 구조로 변환하는 과정이다. E-R 다이어그램에서 사각형은 개체 타입, 마름모는 관계 타입, 타원은 속성을 표현한다.

각 개체 타입은 하나의 릴레이션으로 변환하고 개체의 속성은 릴레이션의 속성이 된다. 개체 사이의 관계는 별도의 관계 릴레이션으로 만들 수 있다. 예를 들어 고객과 계좌 사이의 ‘거래’ 관계를 주민등록번호·계좌번호·거래일자를 가진 릴레이션으로 표현할 수 있다.

관계의 형태에 따라 별도 관계 릴레이션 없이 외래키를 이용해 묵시적으로 표현하기도 한다. 고객 한 명이 여러 계좌와 연결되는 1:N 관계라면 계좌 릴레이션에 고객의 주민등록번호를 외래키로 넣어 관계를 표현할 수 있다.

관계를 별도 릴레이션으로 만들 것인지 외래키로 포함할 것인지는 관계의 대응수와 관계 자체가 가진 속성 등을 고려한다.

7. SQL과 데이터 정의어

SQL(Structured Query Language)은 관계형 데이터베이스 시스템을 위한 표준 데이터베이스 언어이다. IBM의 SYSTEM R을 위해 설계된 언어에서 발전했으며 관계형 모델에 기반한다. 검색을 위한 단순 질의어가 아니라 데이터의 정의·조작·제어 기능을 모두 제공한다.

SQL은 관계대수처럼 논리적 연산을 사용하는 비절차적 언어이며, 릴레이션·투플·속성보다 테이블·행·열이라는 용어를 선호한다. 사용자 편의를 위해 자연어와 비슷한 형태로 작성하며 대화식 사용과 응용 프로그램 내 삽입 방식 모두 지원한다.

데이터 정의어

데이터 정의어는 스키마, 도메인, 테이블, 뷰와 인덱스를 정의·수정·제거한다. 대표 명령은 CREATE, ALTER, DROP이다.

분류대표 데이터 타입
정수TINYINT, SMALLINT, MEDIUMINT, INT, BIGINT
실수FLOAT, DOUBLE
정형 숫자DECIMAL(p,s), NUMERIC
문자CHAR(n), VARCHAR(n), TEXT
날짜·시간DATE, TIME, DATETIME

CREATE TABLE

CREATE TABLE은 열 이름과 데이터 타입, 널 허용 여부, 기본키와 외래키를 정의하여 기본 테이블을 만든다.

CREATE TABLE 납품 (
  납품번호 CHAR(5) NOT NULL,
  공급자번호 CHAR(5),
  부품번호 CHAR(5),
  수량 INT,
  PRIMARY KEY (납품번호),
  FOREIGN KEY (공급자번호) REFERENCES 공급자(공급자번호),
  FOREIGN KEY (부품번호) REFERENCES 부품(부품번호)
);

ALTER TABLE과 DROP TABLE

ALTER TABLE은 새 열 추가, 기존 열 삭제, 기본값 지정과 삭제에 사용한다. CASCADE는 의존 객체까지 연쇄 처리하고 RESTRICT는 의존 관계가 있으면 연산을 제한한다. DROP TABLE은 명시한 기본 테이블을 시스템에서 제거한다.

8. SQL 데이터 검색 SELECT

데이터 조작어는 테이블의 데이터를 검색·삽입·삭제·갱신한다. 대표 명령은 SELECT, INSERT, DELETE, UPDATE이다.

SELECT [ALL | DISTINCT] 열_리스트
FROM 테이블_리스트
[WHERE 조건]
[GROUP BY 열 [HAVING 조건]]
[ORDER BY 열 [ASC | DESC]];
절·기능의미
SELECT결과에 표시할 열 또는 계산식을 지정
DISTINCT중복 행을 제거
FROM데이터를 읽을 테이블 지정
WHERE개별 행이 만족할 조건 지정
GROUP BY같은 값을 가진 행을 그룹으로 묶음
HAVING그룹이 만족할 조건 지정
ORDER BY결과를 오름차순 또는 내림차순 정렬

*는 모든 열을 의미하고 AS는 결과 열에 별명을 붙인다. COUNTSUM 같은 집계함수는 개수와 합계를 구한다. LIKE 'ㅅ%'는 ㅅ으로 시작하는 문자열을 찾는 패턴 검색이다.

여러 테이블을 함께 검색할 때는 대응하는 열의 값이 같다는 조인 조건을 지정한다. IN은 하위질의 결과에 포함된 값인지 검사하며, EXISTS는 하위질의 결과 행이 존재하는지를 검사한다.

WHERE는 그룹화 전 개별 행을 제한하고, HAVINGGROUP BY로 만들어진 그룹을 제한한다.

9. INSERT·DELETE·UPDATE

데이터 삽입

INSERT는 새 투플을 테이블에 추가한다. 일부 열만 지정하면 지정하지 않은 열에는 정의된 기본값이나 널값이 들어갈 수 있지만 제약조건을 만족해야 한다.

INSERT INTO 부품(부품번호, 창고소재지, 무게)
VALUES ('P7', '세종', 24);

데이터 삭제

DELETE는 조건을 만족하는 행을 삭제한다. WHERE가 없으면 테이블 구조는 남겨 둔 채 모든 행을 삭제한다. 반면 DROP TABLE은 테이블 정의 자체를 제거한다.

DELETE FROM 공급자
WHERE 도시 = '광주';

데이터 갱신

UPDATE는 조건을 만족하는 행의 열값을 변경한다. SET에 하나 이상의 열과 새 값 또는 산술식을 지정한다.

UPDATE 부품
SET 색상 = '황'
WHERE 부품번호 = 'P2';

DELETEUPDATE에서 WHERE를 생략하면 모든 행이 대상이 될 수 있으므로 조건 범위를 정확히 확인해야 한다.

10. 뷰의 개념과 장단점

뷰(view)는 하나 이상의 기본 테이블로부터 유도하여 만든 가상 테이블이다. 뷰의 내용이 별도의 실제 데이터로 저장되는 것이 아니라 뷰를 정의한 논리적 조건이 저장된다. 기본 테이블을 필요한 관점에서 들여다보는 ‘유리창’과 같다.

CREATE VIEW 공급자2
AS SELECT 공급자번호, 거래포인트
FROM 공급자
WHERE 거래포인트 > 15;

DROP VIEW 공급자2;

뷰 정의의 AS SELECT는 일반 검색문과 유사하지만 강의록의 범위에서는 ORDER BY를 사용할 수 없다. 기본 테이블이 제거되면 이를 기초로 만든 뷰와 인덱스도 자동으로 제거될 수 있다.

구분내용
장점DB 재구성 때 논리적 독립성 제공, 같은 데이터에 다양한 사용자 관점 제공, 불필요한 데이터 은폐, 보안의 자동적 제공
단점독자적인 인덱스를 가질 수 없고 정의·갱신 연산에 제약이 따름

기본 테이블은 실제 데이터를 저장하지만 뷰는 기본 테이블에서 유도된 가상 테이블이며 사용자별 관점과 보안을 제공한다.

핵심 개념 정리

  • 릴레이션은 스키마와 인스턴스로 구성되며 속성·투플·도메인·차수·카디널리티를 구분한다.
  • 키는 투플을 식별하며 슈퍼키·후보키·기본키·대체키·외래키가 있다.
  • 도메인·키·개체·참조 무결성 제약조건은 데이터의 정확성과 관계 일관성을 지킨다.
  • DB 설계는 요구 분석-개념적-논리적-물리적 설계-구현 순서로 진행된다.
  • 개념적 스키마는 DBMS 독립적이고 논리적 스키마는 선택한 DBMS의 데이터 모델에 의존한다.
  • SQL의 정의어는 CREATE·ALTER·DROP, 조작어는 SELECT·INSERT·DELETE·UPDATE이다.
  • SELECT는 조건·그룹·정렬·조인·하위질의를 이용해 필요한 데이터를 검색한다.
  • 뷰는 기본 테이블로부터 유도된 가상 테이블로 사용자별 관점과 보안을 제공한다.

시험 대비 최종 정리: 차수와 카디널리티, 후보키와 외래키, 개체 무결성과 참조 무결성을 먼저 구분한다. 설계 5단계의 순서와 DBMS 의존 여부를 연결하고, SQL에서는 DDL과 DML, WHERE와 HAVING, DELETE와 DROP TABLE, 기본 테이블과 뷰의 차이를 정확히 기억한다.

예상문제 20선

1. 릴레이션의 차수가 의미하는 것은?

정답입니다.

오답입니다. 답안을 다시 선택해 보세요.

정답 및 해설 보기

정답: ①
차수는 릴레이션을 구성하는 속성, 즉 열의 개수이다.

2. 특정 시점에 릴레이션에 저장된 실제 데이터는?

정답입니다.

오답입니다. 답안을 다시 선택해 보세요.

정답 및 해설 보기

정답: ②
릴레이션 인스턴스는 특정 시점의 투플 집합이고 스키마는 구조 정의이다.

3. 릴레이션의 특성으로 옳지 않은 것은?

정답입니다.

오답입니다. 답안을 다시 선택해 보세요.

정답 및 해설 보기

정답: ③
릴레이션의 투플은 무순서이므로 화면의 저장 순서 자체에 논리적 의미가 없다.

4. 유일성과 최소성을 모두 만족하는 키는?

정답입니다.

오답입니다. 답안을 다시 선택해 보세요.

정답 및 해설 보기

정답: ④
후보키는 유일성을 만족하는 슈퍼키 중 불필요한 속성이 없는 최소 키이다.

5. 후보키 중 기본키로 선택되지 않은 키는?

정답입니다.

오답입니다. 답안을 다시 선택해 보세요.

정답 및 해설 보기

정답: ①
후보키가 여러 개일 때 대표로 선택되지 않은 후보키를 대체키라고 한다.

6. 개체 무결성 제약조건은?

정답입니다.

오답입니다. 답안을 다시 선택해 보세요.

정답 및 해설 보기

정답: ②
기본키는 각 투플을 식별해야 하므로 그 구성 속성은 널이 될 수 없다.

7. 참조 무결성을 만족하는 외래키 값은?

정답입니다.

오답입니다. 답안을 다시 선택해 보세요.

정답 및 해설 보기

정답: ③
외래키는 관계가 없으면 널일 수 있고 값이 있다면 참조 대상 키가 실제 존재해야 한다.

8. DBMS와 독립적인 고수준 스키마를 만드는 단계는?

정답입니다.

오답입니다. 답안을 다시 선택해 보세요.

정답 및 해설 보기

정답: ④
개념적 설계는 E-R 모델 같은 고수준 모델로 DBMS 독립적인 개념적 스키마를 만든다.

9. 사용자 요구 사항 분석에서 수행하는 일은?

정답입니다.

오답입니다. 답안을 다시 선택해 보세요.

정답 및 해설 보기

정답: ①
요구 분석은 데이터베이스의 목적·범위·데이터 및 처리 요구를 조사하고 문서화한다.

10. 관계형 DBMS를 위한 논리적 설계의 작업은?

정답입니다.

오답입니다. 답안을 다시 선택해 보세요.

정답 및 해설 보기

정답: ②
논리적 설계는 개념적 구조를 선택한 데이터 모델인 관계형 스키마로 사상한다.

11. SQL 데이터 정의어에 해당하는 것은?

정답입니다.

오답입니다. 답안을 다시 선택해 보세요.

정답 및 해설 보기

정답: ③
CREATE는 스키마나 테이블 같은 데이터 구조를 정의하는 DDL 명령이다.

12. 기본 테이블의 구조 자체를 제거하는 명령은?

정답입니다.

오답입니다. 답안을 다시 선택해 보세요.

정답 및 해설 보기

정답: ④
DELETE는 행을 지우지만 DROP TABLE은 테이블 정의 자체를 제거한다.

13. SELECT에서 중복 행을 제거하는 키워드는?

정답입니다.

오답입니다. 답안을 다시 선택해 보세요.

정답 및 해설 보기

정답: ①
DISTINCT는 결과에서 같은 값을 가진 중복 행을 제거한다.

14. 그룹화된 결과에 조건을 적용하는 절은?

정답입니다.

오답입니다. 답안을 다시 선택해 보세요.

정답 및 해설 보기

정답: ②
WHERE는 개별 행, HAVING은 GROUP BY로 만들어진 그룹에 조건을 적용한다.

15. 결과를 거래포인트 내림차순으로 정렬하는 표현은?

정답입니다.

오답입니다. 답안을 다시 선택해 보세요.

정답 및 해설 보기

정답: ③
ORDER BY 열 DESC는 해당 열을 기준으로 내림차순 정렬한다.

16. 하위질의 결과 행이 존재하는지 검사하는 연산자는?

정답입니다.

오답입니다. 답안을 다시 선택해 보세요.

정답 및 해설 보기

정답: ④
EXISTS는 하위질의가 하나 이상의 행을 반환하는지 검사한다.

17. 새 투플을 추가하는 SQL 명령은?

정답입니다.

오답입니다. 답안을 다시 선택해 보세요.

정답 및 해설 보기

정답: ①
INSERT INTO와 VALUES를 사용해 새 행을 테이블에 삽입한다.

18. DELETE 문에서 WHERE를 생략하면?

정답입니다.

오답입니다. 답안을 다시 선택해 보세요.

정답 및 해설 보기

정답: ②
WHERE 없는 DELETE는 모든 행을 제거하지만 테이블 구조는 남긴다.

19. 뷰에 대한 설명으로 옳은 것은?

정답입니다.

오답입니다. 답안을 다시 선택해 보세요.

정답 및 해설 보기

정답: ③
뷰는 기본 테이블을 특정 관점에서 보여 주도록 정의된 가상 테이블이다.

20. 뷰의 장점으로 보기 어려운 것은?

정답입니다.

오답입니다. 답안을 다시 선택해 보세요.

정답 및 해설 보기

정답: ④
뷰는 독자적 인덱스를 가질 수 없다는 제약이 있으며 이는 장점이 아니다.

댓글