1. 데이터베이스

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

 

데이터

어떤 필요에 의해 수집했지만 아직 특정 목적을 위해 평가하거나 정제하지 않은 값이나 사실 또는 자료 자체를 의미한다.

 

정보

수집한 데이터를 어떠한 목적을 위해 분석하거나 가공하여 가치를 추가하거나 새로운 의미를 이끌어 낼 수 있는 결과를 의미한다.

 

효율적인 데이터 관리를 위한 조건
  • 데이터를 통합하여 관리
  • 일관된 방법으로 관리
  • 데이터 누락 및 중복 제거
  • 여러 사용자(응용 프로그램 포함)가 공동으로 실시간 사용 가능

 

데이터베이스

효율적인 데이터 관리를 위한 조건을 만족하면서 특정 목적을 위해 여러 사람이 공유하여 사용할 수 있으며, 효율적인 관리와 검색을 위해 구조화한 데이터 집합을 의미한다.

 

파일 시스템을 통한 데이터 관리
  • 데이터베이스 개념이 등장하기 전에는 주로 파일 시스템 방식을 사용하여 데이터를 관리하였다.
  • 파일 시스템은 서로 다른 여러 응용 프로그램이 제공하는 기능에 맞게 필요한 데이터를 각각 저장하고 관리한다.
  • 각 파일에 저장한 데이터는 서로 연관이 없고 중복 또는 누락이 발생할 수 있다.
  • 파일 시스템을 단층 파일 구조(flat file structure)라고 한다.

 

서비스의 역할 분담
  • 시간이 흐름에 따라 점점 거대해지고 복잡해지는 데이터를 각각의 응용 프로그램이 직접 관리한다면 데이터 관리에 소모되는 시간과 자원 또한 점점 증가하게 된다.
  • 또, 각 데이터 간의 불일치로 인한 오류 발생 확률도 높아진다.
  • 이는 본래 의도한 기능, 즉 특정 서비스를 제공하는 효율과 질을 떨어뜨리는 원인이 된다.
  • 이러한 문제를 방지하기 위해서는 하나의 서비스를 처리하는 데 역할 분담이 필요하다.
  • 역할 분담을 하면 데이터 누락이나 중복 등으로 생기는 오류를 방지할 수 있다.
DBMS를 통한 데이터 관리
  • 효율적인 데이터 관리 조건을 만족하며 서비스 제공의 효율성을 높이기 위해 데이터베이스 관리 시스템이 등장했다.
  • 데이터베이스 관리 시스템은 데이터베이스의 데이터 조작과 관리를 극대화한 시스템 소프트웨어이다.
  • 데이터베이스 관리 시스템은 보통 '디비엠에스(DBMS : DataBase Management System)'라고 많이 부르며, 실무에서는 데이터베이스와 데이터베이스 관리 시스템을 따로 구별하지 않고 '디비(DB)' 또는 '데이터베이스'라고 부른다.
  • 데이터베이스를 통한 데이터 관리란 여러 목적으로 사용할 데이터의 접근·관리 등의 업무를 DBMS가 전담하는 방식을 말한다.
  • 다시 말해, 응용 프로그램이 필요한 데이터 작업을 DBMS에 요청하면, DBMS는 자신이 관리하는 데이터베이스로 관련 작업을 수행하고 결과값을 제공한다.
  • 이러한 작업 영역의 분리는 응용 프로그램의 서비스 제공과 데이터 관련 작업 효율을 높인다.
  • 또한, 여러 응용 프로그램이 하나의 통합된 데이터를 같은 방식으로 사용·관리할 수 있으므로 데이터 누락이나 중복을 방지할 수 있다.

 

파일 시스템 VS DBMS
파일 시스템 방식의 문제 -> DBMS를 통한 데이터 관리
데이터 중복 하나의 소프트웨어가 데이터를 관리하므로 데이터 중복을 피할 수 있다.
응용 프로그램이 개별 데이터를 직접 관리 여러 응용 프로그램이 하나의 DBMS를 통해 데이터를 사용하므로 데이터를 동시에 공유할 수 있다.
응용 프로그램이 데이터를 쓰는 방식이 각각 다르다. 하나의 DBMS를 통해 데이터를 관리하기 때문에 각각의 응용 프로그램이 데이터를 관리하는 방식이 통합된다.
데이터가 특정 응용 프로그램에 종속되어 있으므로 응용 프로그램을 변경하면 기존 데이터를 사용할 수 없다. 응용 프로그램과는 별도로 데이터가 DBMS에 의해 관리·보관되기 때문에 응용 프로그램의 업데이트 또는 변경과 관계없이 데이터를 사용할 수 있다.

 

데이터베이스 용어의 등장과 최초의 DBMS
  • 데이터베이스라는 용어는 1963년 SDC(System Development Corporation)에서 개최한 'Development and Management of Computer-Center DataBase' 심포지엄 제목에서 처음 사용되었다.
  • 최초의 DBMS는 제너럴 일렉트릭(GE : General Electric) 사의 찰스 바흐만이 1963년에 만든 IDS(Integrated Data Store)로서 데이터베이스 개념을 확립한 소프트웨어라고 할 수 있다.

 

01-2 데이터 모델

 

데이터 모델
  • 데이터 모델이란 컴퓨터에 데이터를 저장하는 방식을 정의해 놓은 개념 모형이다.
  • 대표 데이터 모델은 계층형, 네트워크형, 관계형, 객체 지향형 등이 있다.

 

계층형 데이터 모델(hierarchical data model)
  • 계층형 데이터 모델은 나뭇가지 형태의 트리(tree) 구조를 활용하여 데이터 관련성을 계층별로 나누어 부모 자식 같은 관계를 정의하고 데이터를 관리한다.
  • 계층형 데이터 모델을 이해하기 위해서는 일대다(1:N) 관계의 데이터 구조를 파악해야 한다.
  • 이 모델에서 데이터가 저장된 파일은 상위 개념에 하위 개념이 포함되어 있는 특징이 있다.
  • 기본적으로 하나의 부모 개체가 여러 자식을 가질 수 있는 반면에 자식 개체는 여러 부모 개체를 가질 수 없다는 제약이 있다.
  • 따라서 일대다 구조의 데이터를 표현하기에는 알맞지만 자식 개체가 여러 부모를 가진 관계는 표현할 수 없다.

 

네트워크형 데이터 모델(network data model)
  • 네트워크형 데이터 모델은 망형 데이터 모델이라고도 하며 그래프(graph) 구조를 기반으로 한다.
  • 개체 간 관계를 구조로 연결하므로 자식 개체가 여러 부모 개체를 가질 수 있다는 점에서 계층형 데이터 모델과 차이가 있다.

 

객체 지향형 데이터 모델(object-oriented data model)
  • 객체 지향형 데이터 모델(object-oriented data model)은 1980년대 후반에 등장한 모델로 객체지향 프로그래밍에서 사용하는 객체 개념을 기반으로 한 데이터 모델이다.
  • 객체지향 프로그래밍처럼 데이터를 독립된 객체로 구성하고 관리하며 상속, 오버라이드 등 객체 지향 프로그래밍에 사용되는 강력한 기능을 활용할 수 있다.
  • 이를 적용한 상용 DBMS는 많지 않다.
  • 오라클 데이터베이스는 관계형 데이터 모델을 바탕으로 객체 개념을 도입하여 '객체 관계형(object-relational data model) DBMS'로 영역을 확장하고 있다.

 

관계형 데이터 모델
  • 관계형 데이터 모델(relational data model)은 1970년 에드거 프랭크 커드(E.F.Codd)가 제안한 모델로서 현대에 가장 많이 사용하는 관계형 데이터베이스의 바탕이 되는 모델이다.
  • 관계형 데이터 모델은 다른 모델과 달리 데이터 간 관계(relationship)에 초점을 둔다.
  • 핵심 구성 요소를 활용하여 데이터의 독립성(independency)과 무결성(integrity)과 같은 데이터를 안전하게 관리하기 위해 필요한 개념들을 정의하게 된다.

 

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

 

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

 

관계형 데이터베이스
  • 관계형 데이터베이스는 관계형 데이터 모델 개념을 바탕으로 데이터를 저장·관리하는 데이터베이스를 의미한다.
  • 관계형 데이터베이스를 관리하는 시스템은 DBMS에 데이터 간의 관계를 강조하기 위한 'relational'을 앞에 붙여 RDBMS(Relational Database Management System), 즉 관계형 데이터베이스 관리 시스템이라고 부른다.
  • RDBMS는 1980년 후반부터 지금까지 가장 많이 사용하는 데이터베이스이다.
  • MS-SQL, MySQL, MariaDB, PostgreSQL, DB2, Oracle 등 유명한 DBMS 제품은 대부분 관계형 데이터베이스 관리시스템이거나 최소한 부분적으로 관계형 데이터베이스를 사용하고 있다.
  • 실무에서 이야기하는 DB 또는 데이터베이스는 보통 DBMS를 가리키는데 이 중 대부분이 RDBMS라고 보아도 무방하다.
  • 오라클 데이터베이스는 보통 관계형 데이터베이스라고 부르지만 더 정확하게 표현한다면 관계형 데이터베이스에 객체 개념을 도입한 객체 관계형 데이터베이스라고 부르는 것이 맞다.

 

SQL
  • SQL은 Structured Query Language의 약자로서 '에스큐엘' 또는 '시퀄'이라고 부른다.
  • SQL은 RDBMS에서 데이터를 다루고 관리하는 데 사용하는 데이터베이스 질의 언어이다.
  • SQL 정의를 'RDBMS에게 데이터에 관해 물어보고 결과를 얻는다' 정도만 기억해도 된다.

 

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

 

SQL : 에스큐엘? 시퀄?
  • SQL은 1970년대 IBM에서 도널드 D. 챔벌린과 레이먼드 F.보이스가 SEQUEL(Structured English Query Language)이라는 이름으로 개발한 DBMS 관리 언어이다.

 


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

 

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

 

 

테이블
  • 관계형 데이터베이스는 기본적으로 데이터를 2차원 표 형태로 저장하고 관리한다.
  • 이 표 형태의 데이터 저장 공간을 테이블(table)이라고 한다.
  • 테이블은 2차원 형태이므로 가로줄과 세로줄로 구성된다.
  • 이때 가로줄을 행(row), 세로줄을 열(column)이라고 부른다.

 

행(row)
  • 행은 저장하려는 하나의 개체를 구성하는 여러 값을 가로로 늘어뜨린 형태이다.

 

열(column)
  • 열은 저장하려는 데이터를 대표하는 이름과 공통 특성을 정의한다.
  • 열은 저장 정보의 종류(자료형)와 저장 가능한 값의 최대 길이 그리고 값의 중복을 허용하지 않는 등의 저장 조건과 범위를 지정할 수 있다.

 

관계형 데이터베이스와 테이블
  • 관계형 데이터베이스에서 관계란 행과 열의 특성에 맞추어 데이터를 저장한 테이블 하나하나를 의미한다.
  • 여러 테이블의 구성과 관계를 잘 규정하고 관리하는 것이 관계형 데이터베이스에서 데이터를 관리하는 핵심이다.

 

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

 

키(Key)
  • 키(key)는 단어 뜻 그대로 '열쇠'라는 의미에서 비롯된 용어이다.
  • 수많은 데이터를 구별할 수 있는 유일한 값이라는 뜻이다.
  • 키는 하나의 테이블을 구성하는 여러 열 중에서 특별한 의미를 지닌 하나 또는 여러 열의 조합을 의미한다.
  • 종류별로 데이터를 구별하거나 테이블 간의 연관 관계를 표현할 때 키로 지정한 열을 사용한다.
  • 키는 기본키(primary key), 후보키(candidate key), 외래키(foreign key), 복합키(composite key) 등으로 구분할 수 있다.

 

기본키(PK)
  • 기본키(PK; Primary Key)는 여러 키 중에서 가장 중요한 키로서 한 테이블 내에서 중복되지 않는 값만 가질 수 있는 키이다.
  • 기본키는 중복되지 않는 유일한 값이라는 특성을 가졌기 때문에 하나 또는 여러 열의 조합으로 만들 수 있습니다.

 

기본키의 속성
  1. 테이블에 저장된 행을 식별할 수 있는 유일한 값이어야 한다.
  2. 값의 중복이 없어야 한다.
  3. NULL 값을 가질 수 없다.

 

보조키
  • 보조키는 대체키(alternate key)라고도 부르며 후보키(candidate key)에 속해 있는 키이다.
  • 후보키 중에서 기본키로 지정되지 않은 열이다.
  • 엄밀한 의미의 후보키는 기본키가 될 수 있는 모든 키를 의미한다.
  • 즉 기본키 역시 후보키에 속한다.
  • 이 후보키 중 기본키로 지정되지 않은 키를 보조키 또는 대체키라고 한다.
  • 행 식별이 가능한 키의 모든 조합을 의미하는 슈퍼키(super key) 개념도 존재한다.
  • 유일한(중복되지 않은) 데이터를 가지고 있고 빈 값(NULL)이 없는 열은 기본키가 될 수 있는 후보키이다.

 

외래키
  • 외래키(FK; Foreign Key)는 특정 테이블에 포함되어 있으면서 다른 테이블의 기본키로 지정된 키를 의미한다.
  • 외래키를 사용하면 엑셀의 병합과 유사한 효과를 얻을 수 있어 데이터 중복을 최소화할 수 있다.

 

실무에서 사용되는 테이블 규모
  • 실무에서는 데이터베이스를 활용하여 프로그램 및 서비스를 구축할 때 테이블 개수는 많게는 몇 백, 몇 천개에 이른다.

 

응용 프로그램 개발과 외래키
  • 외래키는 데이터의 중복을 피하기 위해 테이블 사이의 관계를 규명하기 위한 필수 요소이다.
  • 하지만, 실무에서 데이터베이스를 활용하여 응용 프로그램을 만들 때 데이터의 구조 및 설계가 외래키를 사용해 너무 엄격하게 정의하면 응용 프로그램의 제작과 테스트 진행에 걸림돌이 되기도 한다.
  • 따라서 테이블 사이의 관계에서 개념적으로 외래키가 필수인 상황일지라도 응용 프로그램 제작의 효율 및 편의를 위해 외래키를 따로 정의하지 않고, 테이블 사이의 관계를 '느슨하게' 설계하여 이를 응용 프로그램 영역에서 처리하는 경우도 종종 발생한다.

 

복합키
  • 복합키(composite key)는 여러 열을 조합하여 기본키 역할을 할 수 있게 만든 키를 의미한다.
  • 복합키를 만들 때 적게는 두세 개, 많게는 열 개가 넘는 열을 조합하기도 한다.
  • 왜냐하면 하나의 열만으로 행을 식별하는 것이 불가능하여 두 개 이상의 열 값을 함께 사용해야 각 행이 유일한 데이터로서 가치를 지니기 때문이다.
  • 다양한 키는 결국 관계형 데이터베이스에서 테이블 행을 구분하기 위해 그리고 여러 테이블 간의 관계를 정의하기 위해 사용한다.

 

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

 

데이터베이스의 버전 업그레이드가 어려운 이유
  • 서비스의 바탕이 되는 데이터베이스를 최신 버전으로 바꾸면 데이터 관리에 문제가 생길 수 있다.
  • 심지어 전체 서비스의 마비를 초래할 수도 있다.
  • 이런 이유로 현업에서는 데이터베이스의 최신 버전이 나와도 현재 사용하고 있는 버전에 큰 문제가 없다면 기존 데이터베이스 버전을 그대로 유지하는 경우가 많다.

 

자료형(Data Type)
자료형 설명
VARCHAR2(길이) 4000byte 만큼의 가변 길이 문자열 데이터를 저장할 수 있다.(최소 크기는 1byte)
NUMBER(전체 자릿수, 소수점 이하 자릿수) ±38 자릿수의 숫자를 저장할 수 있다.
NUMBER(p, s)와 같이 표기할 경우 s 자리만큼 소수점 이하 자릿수를 표현하고, 이 소수점 자리를 포함한 전체 p자리만큼 숫자 데이터를 저장한다.
DATE 날짜 형식을 저장하기 위해 사용하는 자료형으로 세기, 연, 월, 일, 시, 분, 초 저장이 가능하다.
CHAR(길이) 4000byte 만큼의 고정 길이 문자열 데이터를 저장할 수 있다.(최소 크기는 1byte)
NVARCHAR2(길이) 40000byte만큼의 가변 길이 국가별 문자 세트 데이터를 저장할 수 있다.(최소 크기는 1byte)
BLOB 최대 크기 4GB의 대용량 이진 데이터를 저장할 수 있다.
CLOB 최대 크기 4GB의 대용량 텍스트 데이터를 저장할 수 있다.
BFILE 최대 크기 4GB의 대용량 이진 데이터 파일을 저장할 수 있다.
  • 자료형은 테이블을 구성하는 열에 지정한다.
  • 예를 들어, NUMBER(4)로 지정한 열이 있다면 네 자리 숫자만 저장할 수 있다.
  • 이 열에는 문자열을 저장할 수 없고 다섯 자리 숫자를 저장할 수도 없다.
  • 이렇게 하나의 자료형에 맞춰 한 종류의 데이터를 저장할 수 있는 자료형을 스칼라(scalar)형이라고 한다.
  • 자료형은 여러 종류가 있으며 한 번에 여러 데이터를 저장할 수 있는 VARRAY, NESTED  TABLE 같은 컬렉션(collection)형도 있다.

 

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

 

오라클 객체의 종류
객체 설명
테이블
(table)
데이터를 저장하는 장소
인덱스
(Index)
테이블의 검색 효율을 높이기 위해 사용한다.

(View)
하나 또는 여러 개의 선별된 데이터를 논리적으로 연결하여 하나의 테이블처럼 사용하게 해 준다.
시퀀스
(Sequence)
일련 번호를 생성해 준다.
시노님
(Synoym)
오라클 객체의 별칭(다른 이름)을 지정한다.
프로시저
(Procedure)
프로그래밍 연산 및 기능 수행이 가능하다.(반환 값 없음)
함수
(Function)
프로그래밍 연산 및 기능 수행이 가능하다.(반환 값 있음)
패키지
(Package)
관련 있는 프로시저와 함수를 보관한다.
트리거
(Trigger)
데이터 관련 작업의 연결 및 방지 관련 기능을 제공한다.

 

PL/SQL
  • 오라클 데이터베이스를 포함한 여러 관계형 데이터베이스에서 데이터를 관리하기 위해 복잡한 기능이 필요할 때 기존 SQL만으로 이를 구현하는 것은 다소 한계가 있다.
  • 그래서 오라클 데이터베이스는 데이터를 관리를 위해 별도의 프로그래밍 언어를 제공하는데 이를 PL/SQL(Procedural Language extension to SQL)이라고 한다.
  • 보통 오라클 데이터베이스 프로그래밍이라고 하면 SQL문과 PL/SQL을 사용하여 프로그램을 제작하는 것을 의미한다.
  • PL/SQL을 사용하면 변수, 조건문, 반복문 등 프로그래밍 언어에서 제공하는 요소를 사용하여 데이터를 관리할 수 있다.
  • 따라서 SQL문만 사용하는 것보다 강력한 데이터 관리 기능을 구현할 수 있다.

 

변수, 조건문, 반복문이란?
  • 변수 : 변수는 특정 값을 저장하는 메모리 공간이다. 예를 들어 로그인을 위해 사용자가 아이디와 비밀번호를 입력하면 입력된 값이 정확한지 확인하기 전까지 일시적으로 저장하는 공간이 있는데 이것이 바로 변수이다.
  • 조건문 : 특정 조건에 따라 다른 기능을 수행하는 코드를 작성할 때 사용한다.예를 들어 '로그인 하지 않는 사용자는 이메일 열람이 불가능하다'라는 기능을 만들 때 사용자의 '로그인 여부'가 바로 조건문이 된다.
  • 반복문 : 특정 기능을 반복하여 수행할 때 사용한다. '문서를 10번 인쇄하라'라고 명령할 때 문서 출력이 10번 반복되는 것이 바로 반복문이다.

+ Recent posts