주니어 개발자로 성장하기

데이터 베이스 개념 잡기

Seojoo21 2022. 2. 18. 11:12

*출처: <비전공자도 기초부터 확실하게! 오라클로 배우는 데이터베이스 입문>, 이지훈, 이지스퍼블리싱 

 

1. 데이터 베이스

1-1. 데이터와 데이터베이스, DBMS

- DBMS: Database Management System, 데이터베이스 관리 시스템

- 실무에서는 데이터베이스와 데이터베이스 관리 시스템을 따로 구별하지 않고 '디비(DB)' 또는 '데이터베이스'라고 부른다.

- 데이터베이스를 통한 데이터 관리: 응용 프로그램이 필요한 데이터 작업을 DBMS에 요청하면, DBMS는 자신이 관리하는 데이터베이스로 관련 작업을 수행하고 결과값을 제공한다. 

 

1-2. 데이터 모델

- 데이터 모델: 컴퓨터에 데이터를 저장하는 방식을 정의해 놓은 개념 모형. 

- 대표 데이터 모델: 계층형, 네트워크형, 관계형, 객체 지향형 등

 

1) 계층형 데이터 모델

- 나뭇가지 형태의 트리(tree) 구조를 활용하여 데이터 관련성을 계층별로 나누어 부모 자식 같은 관계를 정의하고 데이터를 관리한다.

- 일대다(1:N) 관계의 구조를 가진다.

- 상위 개념에 하위 개념이 포함되어 있는 특징을 가진다.

- 하나의 부모 개체가 여러 자식을 가질 수 있는 반면 자식 개체는 여러 부모 개체를 가질 수 없다는 제약이 있다.

- 일대다 구조의 데이터를 표현하기에는 알맞지만 자식 개체가 여러 부모를 가진 관계는 표현할 수 없다.

 

2) 네트워크형 데이터 모델

- 망형 데이터 모델이라고 하며 그래프 구조를 기반으로 한다.

- 개체 간 관계를 그래프 구조로 연결하므로 자식 개체가 여러 부모 개체를 가질 수 있다는 점에서 계층형 데이터 모델과 차이가 있다.

 

3) 객체 지향형 데이터 모델

- 객체 지향 프로그래밍처럼 데이터를 독립된 객체로 구성하고 관리하며 상속, 오버라이드 등 객체 지향 프로그래밍에 사용되는 강력한 기능을 활용할 수 있다.

- 객체 지향형 모델 개념을 완전히 데이터베이스에 적용하는 것은 쉽지 않기 때문에 이를 적용한 상용 DBMS는 많지 않다. 

- 다만 오라클 데이터베이스와 같은 여러 DBMS 제품군이 관계형 데이터 모델을 바탕으로 객체 개념을 도입하여 '객체 관계형 DBMS'로 영역을 확장하고 있다.

 

4) 관계형 데이터 모델

- 관계형 데이터 모델은 다른 모델과 달리 데이터 간 관계(relationship)에 초점을 둔다.

- 관계형 데이터 모델에서는 각 데이터의 독립 특성만을 규정하여 데이터 묶음으로 나눈다. 그리고 중복이 발생할 수 있는 데이터는 별개의 릴레이션(relation)으로 정의한 후 공통 코드를 가지고 데이터 묶음을 연결한다. 

 - 관계형 데이터 모델의 핵심 구성 요소

이름 설명
개체 (entity) 데이터베이스에서 데이터화하려는 사물, 개념의 정보 단위이다. 관계형 데이터베이스의 테이블(table)개념과 대응되며 테이블은 릴레이션(relation)으로 표기하기도 합니다. 
속성 (attribute) 개체를 구성하는 데이터의 가장 작은 논리적 단위로서 데이터의 종류, 특성, 상태 등을 정의한다. 관계형 데이터베이스의 열(column) 개념과 대응된다. 
관계 (relationship) 개체와 개체 또는 속성 간의 연관성을 나타내기 위해 사용한다. 관계형 데이터베이스에서는 테이블 간의 관계를외래키(foreign key) 등으로 구현하여 사용한다. 

- 이 핵심 구성 요소를 활용하여 데이터의 독립성(independency)과 무결성(integrity)과 같은 데이터를 안전하게 관리하기 위해 필요한 개념들을 정의하게 된다.  

 

1-3. 관계형 데이터베이스와 SQL 

1) 관계형 데이터베이스란?

- 관계형 데이터베이스를 관리하는 시스템을 RDBMS(Relational Database Management System), 즉 관계형 데이터베이스 관리 시스템이라고 부른다.

- 실무에서는 보통 오라클 데이터베이스와 같은 RDBMS를 가리켜 '디비' 또는 '데이터베이스'라고 부른다. 

 

2) SQL 이란?

- SQL은 Structrued Query Language 의 약자로 '에스큐엘' 또는 '시퀄'이라고 부른다.

- SQL은 RDBMS에서 데이터를 다루고 관리하는데 사용하는 데이터베이스 질의 언어이다. 

- SQL은 사용 목적에 따라서 다음과 같이 나뉜다.

종류 설명 다루는 장 
DQL(Data Query Language) RDBMS에 저장한 데이터를 원하는 방식으로 조회하는 명령어 교재 4~9장
DML(Data Manipulation Language) RDBMS 내 테이블의 데이터를 저장, 수정, 삭제하는 명령어 10장
DDL(Data Definition Language) RDBMS 내 데이터 관리를 위해 테이블을 포함한 여러 객체를 생성, 수정, 삭제하는 명령어 12~14장
TCL(Transaction Control Language) 트랜잭션 데이터의 영구 저장, 취소 등과 관련된 명령어 11장
DCL(Data Control Language) 데이터 사용 권한과 관련된 명령어 15장

 

2. 관계형 데이터베이스와 오라클 데이터베이스 

2-1. 관계형 데이터베이스의 구성 요소

- 관계형 데이터베이스를 구성하는 주요 요소는 다음과 같다.

1) 테이블

- 관계형 데이터베이스는 기본적으로 데이터를 2차원 표 형태로 저장하고 관리한다. 이 표 형태의 데이터 저장 공간을 테이블(table)이라고 한다.

- 가로줄을 행(row), 세로줄을 열(column)이라고 한다. 

- 관계형 데이터베이스에서 테이블은 관계(relation), 행은 튜플(tuple) 또는 레코드(record) 그리고 열은 속성을 의미하는 애트리뷰트(attribute) 또는 필드(field)라고 한다. 

 

2) 특별한 의미를 지닌 열, 키

- 키는 하나의 테이블을 구성하는 여러 열 중에서 특별한 의미를 지닌 하나 또는 여러 열의 조합을 의미한다. 

- 종류별로 데이터를 구별하거나 테이블 간의 연관 관계를 표현할 때 키로 지정한 열을 사용한다. 

- 키는 기본키(primary key), 후보키(candidate key), 외래키(foreign key), 복합키(composite key) 등으로 구분할 수 있다.

 

2-1) 기본키(primary key, PK) 

- 기본키는 여러 키 중에서 가장 중요한 키로서 한 테이블 내에서 중복되지 않는 값만 가질 수 있는 키이다. 기본 속성은 다음과 같다.

* 테이블에 저장된 행을 식별할 수 있는 유일한 값이어야 한다.

* 값의 중복이 없어야 한다.

* NULL 값을 가질 수 없다. 

- 기본키는 중복되지 않는 유일한 값이라는 특성을 가졌기 때문에 하나 또는 여러 열의 조합으로 만들 수 있다.

 

2-2) 보조키 

- 보조키는 대체키(alternate key) 라고도 부르며 후보키(candidate key)에 속해 있는 키이다. 그리고 후보키 중에서 기본키로 지정되지 않은 열이다. 

 

2-3) 외래키(foreign key, FK) 

- 외래키는 특정 테이블에 포함되어 있으면서 다른 테이블의 기본키로 지정된 키를 의미한다.

- 외래키는 데이터의 중복을 피하기 위해 테이블 사이의 관계를 규명하기 위한 필수 요소이다. 

 

2-4) 복합키(composite key) 

- 복합키는 여러 열을 조합하여 기본키 역할을 할 수 있게 만든 키를 뜻한다.

- 복합키를 만들 때 적게는 두세 개, 많게는 열 개가 넘는 열을 조합하기도 한다. 왜냐하면 하나의 열만으로 행을 식별하는 것이 불가능하여 두 개 이상의 열 값을 함께 사용해야 각 행이 유일한 데이터로서 가치를 지니기 때문이다. 

- 다양한 키는 결국 관계형 데이터베이스에서 테이블 행을 구분하기 위해 그리고 여러 테이블 간의 관계를 정의하기 위해 사용한다는 점을 기억해야한다. 

 

2-2. 오라클 데이터 베이스 

1) 오라클 데이터베이스와 버전

- 현업에서는 데이터베이스를 한번 구축하면 업그레이드가 쉽지 않기 때문에 아직도 많은 기업에서는 오라클 11g 버전을 사용한다. 

 

2) 자료형

- 오라클 데이터베이스는 여러 자료형을 제공하고 있으며 가장 많이 사용하는 대표적인 자료형은 다음과 같다.

- VARCHAR2(길이), NUMBER(전체 자릿수, 소수점이하 자릿수), DATE 

예) NUMBER(4): 네자리 숫자만 저장 가능 

* 이와 같이 하나의 자료형에 맞춰 한 종류의 데이터를 저장할 수 있는 자료형을 스칼라(scalar)형이라고 한다. 

- 자료형은 테이블을 구성하는 열에 지정한다. 

 

3) 객체

- 객체는 오라클 데이터베이스 내에서 데이터를 저장하고 관리하기 위한 논리 구조를 가진 구성 요소이다.

- 일반적으로 가장 많이 사용하고 있는 객체의 종류는 다음과 같다. 

객체 설명 다루는 부분
테이블(table) 데이터를 저장하는 장소 전체
인덱스(index) 테이블의 검색 효율을 높이기 위해 사용함 13장
뷰(view) 하나 또는 여러 개의 선별된 데이터를 논리적으로 연결하여 하나의 테이블처럼 사용하게 해 줌 13장
시퀀스(sequence) 일련 번호를 생성해 줌  13장 
시노님(synonym) 오라클 객체의 별칭(다른 이름)을 지정함 13장
프로시져(procedure) 프로그래밍 연산 및 기능 수행이 가능함 (반환 값 없음) 넷째마당
함수(function) 프로그래밍 연산 및 기능 수행이 가능함 (반환 값 있음)  넷째마당
패키지(package) 관련 있는 프로시저와 함수를 보관함 넷째마당
트리거(trigger) 데이터 관련 작업의 연결 및 방지 관련 기능을 제공함 넷째마당

4) PL/SQL 

- 오라클 데이터베이스를 포함한 여러 관계형 데이터베이스에서 데이터를 관리하기 위해 복잡한 기능이 필요할 때 기존 SQL만으로 이를 구현하는 것은 다소 한계가 있다.

- 그래서 오라클 데이터베이스는 데이터 관리를 위해 별도의 프로그래밍 언어를 제공하는데 이를 PL/SQL(Procedural Language extension to SQL)이라고 한다.

- 보통 오라클 데이터베이스 프로그래밍이라고 하면 SQL문과 PL/SQL을 사용하여 프로그램을 제작하는 것을 말한다. 

- PL/SQL을 사용하면 변수, 조건문, 반복문 등 프로그래밍 언어에서 제공하는 요소를 사용하여 데이터를 관리할 수 있다.