본문 바로가기
ORACLE(DB)

데이터베이스 구현

by 둥바 2022. 5. 24.

데이터베이스 시스템 개요

데이터 : 관찰의 결과로 나타난 정량적, 정성적인 실제 값

정보 : 데이터에 의미를 부여

지식 : 사물, 현상에 대한 이해

데이터베이스란?

조직에 필요한 정보를 얻기 위해 논리적으로 연관된 데이터를 모아 구조적으로 통합해놓은 것

데이터베이스 시스템 구성 

(1) 구성요소

데이터베이스의 사용자 : 일반사용자, 프로그래머, DBA(데이터베이스 관리자)

데이터베이스 시스템 : 데이터 모델(데이터가 저장되는 기법)을 활용하여 만들어진 논리적, 물리적 DB(데이터베이스)와 이 DB를 통합하여 시스템화하여 사용자와 연결시켜주는 DBMS(데이터베이스 관리시스템)로 구성되어 있다.

데이터베이스  시스템의 발전 ( 기업 업무 환경 관점 )

1970년대) 정보 시스템 없음, 수작업으로 회계 업무

1980년대) 파일 시스템 사용, 파일 이용한 응용 프로그램으로 업무 처리

1990년대) 정보 시스템, 데이터베이스시스템(DBMS) 활용한 업무처리, 정보 공유, 실시간 서비스, LAN 서비스

2000년대) 정보 시스템, 웹 데이터베이스 시스템, 인터넷 사용, 온라인 상거래 및 웹 브라우저 기술 등 발전

2010년대) 정보 시스템, 분산 데이터베이스 시스템, 대규모 응용 시스템에 사용

 

파일 시스템

데이터를 파일 단위로 파일 서버에 저장하는데, 각 컴퓨터는 LAN을 통해 파일 서버에 연결되어 있고, 파일 서버에 저장된 데이터를 사용하기 위해서 각 컴퓨터의 응용 프로그램에서 열기/닫기(open/close)요청

각 응용 프로그램이 독립적으로 파일을 다루기 때문에 데이터의 중복 저장 가능성이 높고, 동시에 다루기 때문에 일관성 훼손의 문제

 

데이터베이스 관리 시스템 (Database Management Systems)

DBMS를 도입하여 데이터를 통합 관리하는 시스템으로, DBMS가 설치되어 데이터를 가지고 있는 쪽이 서버 그리고 외부에서 데이터를 요청하는 쪽이 클라이언트인 CS환경을 가짐.

DBMS 서버가 파일을 객체화하여 다루며, 데이터의 일관성 유지 / 복구 / 동시 접근 제어 등의 기능을 수행함 

따라서 데이터의 중복을 줄이고, 데이터를 표준화하여 무결성 유지

 

웹 데이터베이스 시스템

데이터 베이스를 웹 브라우저에서 사용할 수 있도록 서비스하는 시스템

기존은 LAN을 통해서 접근했다면, 외부에서 인터넷을 통해 DB활용이 가능

 

분산 관계형 데이터베이스 시스템(Relational Database Management Systems)

여러 곳에 분산된 DBMS 서버를 연결하여 운영하는 시스템, 대규모의 응용 시스템에 주로 사용

 

파일 시스템과 DBMS 비교

(1) 파일 시스템의 문제점

- 데이터 종속성 : 데이터를 사용하는 프로그램의 구조가 데이터 구조(파일 구조)의 영향을 받아 개발과 유지보수에 어려움

예) 학생 파일에서 필드 순서를 바꾸고 싶다면 아예 프로그램의 구조를 바꿔야 하는 등의 문제

- 데이터 무결성 침해 : 데이터 무결성이란 저장된 데이터의 내용이 본래 의도했던 데이터의 형식, 범위를 준수(데이터 무결성의 정의)

예) 나이 필드는 숫자 형식이고, 음수가 아닌 양수여야 하며 범위가 0~150 사이여야 하는 등의 규칙이 프로그래밍적으로 다 처리되어 있었어야 했다. 따라서 이 같은 데이터의 무결성은 프로그래머 책임이었음.

- 데이터 중복성 : 같은 내용의 데이터가 여러 곳에 저장되어서 저장 공간 낭비되고 데이터 불일치, 보안의 문제 등 발생

- 데이터 불일치 : 중복 저장된 데이터들이 서로 일치하지 않음

예) 퇴사를 하는데, 인사부에서는 알고 있지만 총무부에서는 몰라서(각각 관리되어) 따로 월급이 지급되는 경우 등

- 데이터 표준화의 어려움 : 일정 규모 이상의 시스템 개발에는 수 많은 개발자들의 협력 작업이 필요한데, 각 개발자마다 같은 데이터를 각각 다르게 작업하는 경우 제 3자가 이해하기도 어렵고 호환성에도 문제, 표준화된 규칙이 있어도 개발자가 지키지 않을 수 있음

예) 학생 이름을 한 개발자는 S_NAME 으로, 한 개발자는 student_name 으로 설정

-데이터 보안성의 결여 : 데이터가 저장되어 있는 파일은 파일을 공유하기 위해 접근이 쉬운 위치에 저장했기 때문에 보안유지 어려움

또 잘 알려진 형식으로 저장되기 때문에 쉽게 파일을 열 수 있었음. 보안성 결여는 매우 심각한 문제.

 

이 같은 단점을 극복하면서, 다수의 사용자들이 정보를 공유할 수 있어야 한다는 요구에 의해 탄생한 것이 데이터베이스다.

 

(2) 데이터베이스의 등장

- 파일의 형태로 흩어져 있는 데이터를 객체화하여 정보들을 하나로 모아서 정리

- 모아놓은 데이터를 관리하고 사용자와 데이터 사이의 인터페이스 역할을 할 수 있는 S/W(DBMS) 제공

- 초기에는 계층, 데이터베이스, 네트워크형 DB가 사용되었으나 현재에는 관계형 데이터베이스가 주류

 

(2-1) 데이터베이스의 특징

- 데이터베이스 독립성 지원 : 직접 데이터베이스접근 X DBMS를 통해서만 접근이 가능, DBMS는 DB 내 데이터의 물리적, 논리적 변화가 응용 시스템에 영향을 미치지 않게 하여 데이터 독립성 보장

- 데이터 무결성 유지 : DBMS가 무결성 위반 데이터 처리 거절

- 데이터 중복 및 불일치 최소화 : 데이터베이스를 공용하는 조직 전체의 관점에서 관리되므로 중복성 방지

- 데이터 표준화 용이성 : DBA가 설계과정을 주도하여 데이터 표준화, 응용 프로그램에서 접근 시 DBMS의 구조정보에 따라야

- 높은 데이터 보안성 : DBMS는 사용자 권한에 따라 데이터 접근 제한이 가능, 또 DBMS 통하지 않고서는 외부에서 접근 X

- 데이터 공유 용이성 : DBMS는 여러 사용자의 요구를 동시에 처리하는 능력, 데이터를 쉽게 이용하는 수단 제공

 

  파일 시스템 데이터베이스
장점 처리속도 DB에 비해 빠르다. 자료의 독립성 보장
  구현이 간편 데이터 무결성 보장
  비용이 저렴 개발 생산성 보장(표준화, 개발기간 절감,운영비용 절감)
단점 자료 중복 발생(보안,불일치 문제) 시스템 부하 및 복잡성(CPU,주기억장치 사용 높음)
  무결성 보장 어려움 별도의 관리 이력 필요
  개발 생산성 기대 어려움 추가 도입비용(서버 확대 등) 발생

 

관계형 데이터베이스 관리 시스템(RDBMS)

(1) 관계형 데이터베이스 모델

- 현재 가장 많이 사용되는 DB 모델

- 데이터가 테이블 형태로 표현되며, SQL(질의어) 제공

- SQL 명령어나 문법은 표준화 -> 모든 관계형 데이터베이스 제품에서 공통으로 사용 가능

- SQL(4세대 언어로, 3세대 언어인 JAVA나 C보다 더 자연어에 가까워서 이해가 쉬움)

 

(2) 관계형 데이터베이스 용어

테이블 = 릴레이션 

열 = 컬럼 = 속성 = 어트리뷰트

행 = 로우 = 레코드 = 튜플

도메인 : 데이터의 범위 ( age : 0~150 , 학과의 종류들 )

에드거 F.커드의 용어 File 시스템 용어 자주 사용되는 용어
릴레이션 파일(file) 테이블
속성(애트리뷰트) 필드(field) - 클래스 멤버필드와 관련 열(Column)
튜플 레코드(record) 행(row)

 

예 ) 학생정보 테이블

학번 이름 학년
1 홍길동 3
2 김태연 4
학번,이름,학년 : 필드 = 속성(애트리뷰트) = 컬럼 = 열
1, 홍길동, 3 : 행 = 레코드 = 튜플
학번의 범위 1,2 : 도메인
학생정보 : 테이블 = 릴레이션

 

(2-1) 릴레이션

- 테이블이라는 용어로 더 많이 사용(현실세계의 개체 표현)

- 관계형 데이터베이스에서 정보를 구분하여 저장하는 기본 단위, 같은 데이터베이스 내에서 같은 이름을 가질 수 없음

 

(2-2) 속성

- 릴레이션에서 관리하는 구체적인 정보 항목 

- 현실 세계의 개체는 많은 속성을 가지는데 그 중에서 관리할 속성만을 선택하여 릴레이션에 포함

- 속성 역시 고유한 이름을 가지며 같은 릴레이션 내에서는 같은 이름의 속성 존재할 수 없음

 

(2-3) 튜플

- 릴레이션이 현실세계의 어떤 개체를 표현한다면 튜플은 그 개체에 속한 구성원의 개개인의 정보를 표현

- 한 릴레이션에 포함된 튜플의 개수는 시간에 따라 변화하며, 한 릴레이션은 적게는 수십 개 많게는 수십만 개의 튜플 포함

 

(2-4) 도메인

- 도메인이란 릴레이션에 포함된 각각의 속성들이 갖는 값의 범위이자 집합

- 왜 필요한가? 본래 의도했던 값들만 저장되고 관리하는데 있음

- 현실적인 도메인 구현이 어렵기 때문에 사용자 정의 데이터타입으로 사용

 

(2-5) 후보키(candidate key)

- 테이블에서 각 튜플(레코드)를 구별하는데 기준이 되는 하나 혹은 그 이상의 컬럼들의 집합 ( 후보키는 테이블에 있는 각 튜플들을 고유하게 식별할 수 있어야 한다)

- 후보키는 기본키(primary key)와 대체키(alternate key)로 나눌 수 있다.

- 레코드의 중복 여부 확인 시에 기존 레코드의 모든 컬럼값을 비교하는 대신, 후보키 컬럼값 만 비교

 

< 키의 종류>

1) 기본키 : 테이블에서 각 레코드를 유일하게 구분하는 컬럼(중복 불가)

2) 대체키 : 후보키 중 기본키로 선택되지 않은 키

3) 외래키 : 상호관련이 있는 테이블 사이에서 데이터의 일관성을 보장해 주는 수단으로 다른 테이블의 COLUMN 값을 참조하는 키

4) 복합키(composite key) : 하나의 컬럼이 후보키의 역할을 하지 못하고, 두 개 이상의 컬럼이 합쳐져야 후보키 역할

 

<그 외 용어>

- NULL : 데이터가 존재하지 않는 필드

- 디그리 : 어트리뷰트(컬럼)의 수 

- 카디널리티 : 릴레이션의 튜플(레코드)의 수인데, 보통 전체 행에 대한 특정 컬럼의 중복 수치를 나타내는 지표

- 인덱스 : 빠른 검색을 위한 색인 ( 기본키는 인덱스가 자동 생성 )

-  데이터베이스 스키마 : 전체적인 데이터베이스 구조, 자주 변경되지 않으며 데이터베이스의 모든 가능한 상태 정의. 내포(intension)

- 데이터베이스 상태 : 특정 시점의 데이터베이스의 내용, 시간이 지남에 따라 변한다. 외연(extension)

 

(3) DBMS의 주요 기능 

- 데이터의 생성/조회/변경/삭제(CRUD)

- 데이터의 무결성 유지

- 트랜잭션 관리 ( 커밋, 롤백 )

- 데이터의 백업, 복원

 

데이터베이스 프로그래밍의 일반적 순서

DBMS 클라이언트 ----- DBMS 1) 클라 --- > DBMS 연결2) 클라 ----> DBMS로 명령어 전송(SQL)3) DBMS -----> 클라 (결과 전송)4) 연결종료

 

즉, JDBC 드라이버가 로드 되어야 데이터베이스와 연결되고, SQL문을 실행한 뒤 데이터베이스와 연결이 종료

 

JDBC(Java DataBase Connectivity)를 이용한 데이터베이스 프로그래밍

응용프로그램이 다양한 데이터베이스에 연결(접근)하기 위해서는 JDBC 드라이버가 있어야 한다.

JVM에서 JDBC모듈이 돌아가고, JDBC 모듈 안에서 드라이버가 작동하면 DBMS가 쿼리를 연결하고 result 값을 받아온다.

- JDBC는 자바와 데이터베이스의 연동 작업을 지원하는 기술이다.

- 자바에서는 interface만 제공하고, DB vendor(Oracle 등)에서 class를 구현한다.

 

- JDBC 드라이버

1) DBMS와 통신을 담당하는 라이브러리

2) DBMS별로 맞는 JDBC 드라이버 필요 

3) JDBC 드라이버 로딩 ( DBMS와 통신을 하기 위해서는 먼저 로딩해줘야 한다 )

로딩 코드 : Class.forName("JDBC드라이버 클래스의 완전한 이름");

4) 주요 DBMS의 JDBC 드라이버 중 오라클 드라이버

oracle.jdbc.driver.OracleDriver

5) JDBC URL

DBMS와의 연결을 위한 식별 값

일반적 구성 -> jdbc:[DBMS]:[데이터베이스식별자]

오라클의 경우) Oracle: jdbc:oracle:thin:@HOST:PORT:SID

6) JDBC oracle driver : ojdbc6.jar 사용

c: \oraclexe \app \oracle \product \11.2.0 \server \jdbc \lib에서    복사

 Java Project에서는 libs 디렉토리 생성 후 복사