1. 데이터베이스의 개요
1.1 데이터베이스
빠른 탐색과 검색을 위해 조직된 데이터의 집합체
1.1.1 왜 데이터베이스가 필요한가?
1.1.1.1 파일 시스템 등의 저장소를 이용하여 직접 Database 관리 프로그램을 짜면 더 효율적이고, 응용 프로그램에 적합하게 제작할 수 있지 않을까?
1.1.1.2 초기 응용 프로그램에서는 프로그래머가 직접 모든 프로그램을 작성(OS의 파일 시스템 등을 이용)
1.1.2 파일 시스템의 문제점
1.1.2.1 데이터의 중복(Redundancy)과 일관성(Consistency) 문제
Multiple file formats, duplication of information in different files
1.1.2.2 데이터 접근의 어려움
각 직업마다 별도의 프로그램 작성
각각 별도의 방법이 필요할 수 있음
1.1.2.3 데이터 종속성(Dependency)
데이터의 포맷이나 접근 방법 등이 프로그램 코드에 종속됨
프로그램의 변경이나 데이터 형태, 종류 등이 변경이 불가능
1.1.2.4 데이터 독립성 (Isolation)
여러 프로그램에서 동시에 데이터를 수정하면?
하나의 수정 작업이 다른 작업에 영향을 줄 수 있음
1.1.2.5 변경의 원자성(Atomicity) 문제
일련의 작업(ex. 트랜잭션 처리) 중 시스템의 failure가 발생하면?
ex. 계좌이체 중 내 계좌에서 돈이 나갔는데, 다른 계좌에 입금되기 전에 정전이 일어난다면?
1.1.2.6 동시 사용성(Concurrency) 제어 문제
동시에 일련의 작업들이 이루어질 경우 올바른 수행을 보장할 수 있는가? (일관성의 문제)
ex. 두 명이 동시에 한 계좌에서 돈을 인출하려고 한다면?
1.1.2.7 데이터 무결성 (Integrity) 문제
Integrity constraints (ex. account balance > 0) 가 프로그램 코드 속에 기술
프로그램 코드를 복잡하게 만들고 유지 보수를 어렵게 함
제약조건 변경이나 추가 등이 힘들다.
1.1.2.8 보안 문제
보안을 보장하기 힘듦 : 다양한 파일, 다양한 접근 경로, 다양한 프로그램의 이용
1.2 DBMS(DataBase Management System)
1.2.1 데이터의 종속성과 중복성의 문제 해결
1.2.2 데이터베이스를 공유할 수 있도록 관리하는 시스템
1.2.3 DBMS의 장단점
1.2.3.1 장점
데이터 중복(redundancy)의 최소화
데이터의 공유(sharing)
일관성(consistency) 유지
무결성(integrity) 유지
보안(security) 보장
표준화(standardization) 용이
전체 데이터 요구의 조정
1.2.3.2 단점
비용 : H/W, DBMS, 운영비, 교육비, 개발비
프로그램의 복잡화
성능상의 오버헤드
1.2.4 DBMS의 주요 기능
1.2.4.1 데이터의 추가/조회/변경/삭제
1.2.4.2 데이터의 무결성(integrity) 유지
1.2.4.3 트랜젝션 관리
1.2.4.4 데이터의 백업 및 복원
1.2.5 주요 DBMS
1.2.5.1 BIG 3
Oracle : RDBMS 최초 상용화, RDBMS 시장 점유율 가장 높음(국내 점유율 특히 높음)
IBM DB2 : RDBMS 최초 개발, 메인 프레임 등에서 점유율 높음
MS-SQL Server : Sybase 코드에 기반
1.2.5.2 기타
Informix, Sybase
Cubrid
Main-Memory(Real-time) DB : Altibase
Embedded DB : SQLite
My-SQL, MariaDB
[세계 DBMS 시장 점유율]
[ 국내 DBMS 시장 점유율(BIG 3 업체) ]
한국데이터베이스 진흥원_2016데이터산업백서
1.3 오라클 데이터베이스
1.3.1 History
1979: Oracle 2 - 최초의 상용 RDBMS (basic SQL)
1992: Oracle 7
1999: Oracle 8i - 객체 관계형 데이터 모델과 인터넷 관련 기능
2001: Oracle 9i - XMl과 애플리케이션 서버 기능
2003: Oracle 10g - Gird 컴퓨팅을 위해 설계
2008: Oracle 11g
2013: Oracle 12c
1.3.2 오라클의 시동과 종료
제어판 > 관리도구 > 서비스에서 관련 서비스를 시작/종료
아래 2개의 서비스가 반드시 시작되어 있지 않으면 오라클을 사용할 수 없음
OracleService서비스이름
Oracle서비스이름TNSListener
1.3.3 오라클 설치 시 주의사항
1.3.3.1 사용자계정, 컴퓨터이름, 디렉토리 이름에 한글이 들어가면 안됨
1.3.3.2 사용자계정이 한글인 경우 영문 이름의 계정을 새로 만들고 영문 계정으로 로그인하여 오라클을 설치한 후 한글 이름의 계정에서 오라클 사용은 가능함
1.3.3.3 컴퓨터이름에 한글이 포함된 경우 반드시 영문으로 바꾸고 설치해야 함
1.3.3.4 설치가 실패할 경우의 해결 방법
1.3.3.5 오라클 관련 서비스를 모두 중지시킴
1.3.3.6 Express Edition의 경우 제어판 - 프로그램 추가/제거에서 오라클 프로그램 삭제(다른 버전의 경우 Oracle Universal Installer를 실행하여 설치된 프로그램 제거)
1.3.3.7 실행 - regedit(레지스트리 편집기) 프로그램을 실행하여 관련 레지스트리 삭제
HKEY_LOCAL_MACHINE\Software\Oracle
HKEY_LOCAL_MACHINE\System\ControlSet001\Services\Oracle~
HKEY_LOCAL_MACHINE\System\ControlSet002\Services\Oracle~
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\EventLog\Application\Oracle~
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Oracle~
HKEY_CLASSESROOT\Oracle~
1.3.3.8 오라클 관련 환경변수 삭제
1.3.3.9 컴퓨터 재시작
1.3.3.10 서비스에서 Oracle 관련 서비스가 모두 삭제되었는지 확인
1.3.4 오라클 접근법
1.3.4.1 명령프롬포트에서 sqlplus.exe 실행
1.3.4.2 toad, Oracle SQL developer 등의 툴을 사용하여 실행
-- F9: 실행
SELECT * FROM TAB;
1.3.5 기본 사용자 계정
1.3.5.1 sys : 오라클의 super 사용자 id. 데이터베이스에서 발생하는 모든 문제를 처리할 수 있는 권한을 가짐(최상위 관리자 계정)
1.3.5.2 system : sys계정과 같은데 차이는 데이터베이스를 생성할 수 있는 권한이 없음(차상위 관리자 계정)
1.3.6 시스템 계정 비밀번호 변경 방법
SQL> conn / as sysdba
SQL> alter user system identified by 1234;
1.3.7 hr 계정 활성화
'hr 계정은 오라클에 내장되어 있는 샘플 계정; 처음에는 lock이 되어 있음
SQL> conn / as sysdba
SQL> alter user hr identified by hr account unlock;
1.3.8 실습용 데이터 설치
<hr 계정에 실습용 데이터 설치>
test_data.sql 파일을 toad에서 로드하여 실행시킴
<사용 가능한 테이블 목록보기>
select * from tab;
<emp 테이블의 구성형식 보기>
desc emp;
1.4 주요 용어
1.4.1 데이터베이스(Database) : Relation(Table)의 집합
1.4.2 릴레이션(Relation), 테이블(Table) : Tuple(Record)의 집합
1.4.3 튜플(Tuple), 레코드(Record) : 테이블의 1개 Row, 하나의 유효한 데이터, COLUMN들의 집합
1.4.4 애트리뷰트(Attribute), 컬럼(Column), 필드(Field) : 릴레이션의 특정 컬럼(열)
1.4.5 도메인(Domain) : 특정 Attribute가 가질 수 있는 값의 집합
1.4.6 PRIMARY KEY : 기본키. 테이블에서 각 ROW를 유일하게 구분하는 COLUMN
1.4.7 FOREIGN KEY : 외래키. 다른 테이블의 COLUMN 값을 참조
1.4.8 NULL : 데이터가 존재하지 않는 FIELD