달력

3

« 2024/3 »

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

'Work/Database General'에 해당되는 글 8

  1. 2011.02.07 개체 관계 모델 (Entity-Relationship Model)
  2. 2011.01.27 OLAP vs OLTP
  3. 2011.01.26 데이터마이닝 (Datamining) 1
  4. 2011.01.25 2PL(2 Phase Lock)
  5. 2011.01.25 2PC (2 Phase Commit)
  6. 2010.08.05 정규화
  7. 2009.01.14 MSSQL Oracle 분산트랜잭션
  8. 2009.01.12 Database 란??
정의
개체-관계 모델은 1976년에 피터 첸(Peter Chen)에 의해서 최초로 제안되었으며 그의 논문을 통 해 이 모델의 기본적인 구성 요소가 정립되었다. 
그 후 데이터 모델을 만들어 주는 많은 도구와 기법 이 소개되었는데 계층적 데이터 모델, 네트워크 데이터 모델, ANSI/SPARC 데이터 모델, 개체-관 계 데이터 모델, 의미 객체 모델 등을 예로 들 수 있다. 
이 가운데에서 개체-관계 모델은 표준적인 데이터 모델로 부상했는데 이 모델이 지니고 있는 단순성 때문에 현재 개념/논리 데이터 모델링에서 가장 일반적으로 사용되고 있다.
이 모델에 서브타입이 추가되면서 확장된 개체-관계 모델 (Extended Entity-Relationship model)이 만들어졌으며 이제 일반적으로 개체-관계 모델이라고 하면 이 확장된 개체-관계 모델을 의미한다.

개체-관계 모델은 개체-관계 다이어그램(ERD, Entity Relationship Diagram)으로 표현된다. 
개체-관계 다이어그램은 최종 사용자의 관점에서 데이터 구조를 그림 형태로 묘사하기 위해 개체, 관계, 속성이라는 세 개의 기본 요소를 사용하며, 엔터티와 이들간의 관계를 미리 약속된 도형을 사 용하여 알기 쉽고 일목요연하게 그림으로 표시한 것이라 정의할 수 있다.

구성요소
* 엔터티 (Entity)
업무 활동상 지속적인 관심을 가지고 있어야 하는 대상으로서 그 대상들간에 동질성을 지닌 것으로 볼 수 있는 개체 집합이나 그들이 행하는 행위의 집합
* 속성 (Attribute)
엔터티에 저장되는 개체 집합의 특성을 설명하는 항목
* 식별자 (Unique Identifier)
인스턴스를 구별해 낼 수 있는 속성 혹은 속성들.
* 관계 (Relationship)
엔터티와 엔터티간 연관성
* 카디날리티 (Cardinality)
관계에 참여하는 하나의 개체에 대해 다른 엔터티에서 몇 개의 개체가 참여하는지를 나타내는 것. (1:1, 1:M, M:M)
* 존재 종속 (Existence- Dependent)
한 엔터티의 존재가 다른 엔터티(들)의 존재에 영향을 받는 경우를 이르는 말.
* 서브타입 (Sub-type)
서브타입은 정확한 의미로는 서브 타입 엔터티이며 그것의 전체집합인 슈퍼타입(Supertype)의 부분집합.

표기법
* 바커 표기법 (Baker Notation)
영국 컨설팅 회사 CACI에 의해 처음 개발되었고 리차드 바커(Richard Barker)에 의해 지속으로 업그레이드 되었다. 오라클에서 Case Method(Custom Development Method)로 채택하여 사용하고 있다.
* I/E 표기법 (Information Engineering Notation)
Information Engineering(I/E)은 1970년에 제임스 마틴(James Martin)에 의해서 개발되었다. 이 모델은 관계의 다(Many)쪽을 나타내기 위해 까마귀 발을 사용하기 때문에 때때로 까마귀 발 모델(Crow’s Foot Model)이라고 부른다

:
Posted by Elick
2011. 1. 27. 14:15

OLAP vs OLTP Work/Database General2011. 1. 27. 14:15

데이터베이스의 모델을 설계할 때, 혹은 데이터 베이스를 사용하는 환경을 결정할 때 가장 중요한 요소 중 하나는 해당 데이터베이스의 용도가 OLTP(Online Transaction Processing)용인지 아니면 DSS(Decision Support System)용인지를 파악하는 것이다.
두 가지는 배타적인 것이 아니므로 OLTP용 데이터베이스에 DSS적인 성격이 포함되기도 하지만, 보통 대부분의 데이터베이스들은 어느 한쪽의 특성이 더 크다.

OLTP
On-Line Transaction Processing
주 컴퓨터와 통신 회선으로 접속되어 있는 복수의 사용자 단말에서 발생한 트랜잭션을 주 컴퓨터에서 처리하여 그 결과를 즉석에서 사용자 단말 측으로 되돌려 보내 주는 처리 형태. 

트랜잭션:단말에서 주 컴퓨터로 보내는 처리 단위 1회의 메시지로, 보통 여러 개의 데이터베이스 조작을 포함하는 하나의 논리 단위. 
예를 들어, 데이터베이스 내의 어떤 표의 수치를 변경하는 경우, 
그 표와 관련된 다른 표의 수치도 변경하지 않으면 데이터 무결성(data integrity)을 유지할 수 없다. 
이런 경우에는 2개의 처리를 1개의 논리 단위로 연속해서 행해야 하는데, 이 논리 단위가 트랜잭션이다. 
1개의 트랜잭션은 그 전체가 완전히 행해지든지, 아니면 전혀 행해지지 않든지 둘 중 하나여야 한다. 
그 이유는 1개의 트랜잭션 처리 도중에 그 트랜잭션의 처리를 중지하면 데이터 무결성이 사라질 우려가 있기 때문이다. 

OLTP용 데이터베이스들은 기업(혹은 조직)내부의 트랜잭션에서 발생되는 데이터들을 효율적으로 저장하는 데에 초점을 맞추고 있다. 트랜잭션(Transaction)의 특징은 일련 작업들이 모두 성공해야만 하나의 트랜잭션이 수행되고, 이를 트랜잭션을 커킷(Commit)했다고 이야기 한다.
트랜잭션 중 단 한 가지 작업에서 오류가 발생했다면, 모든 트랜잭션을 롤백(Rollback)시킨다. 트랜잭션의 역할이 대부분 데이터베이스에 대한 변경 작업이므로, 데이터베이스의 데이터들은 자주 변경되고 액세스된다. 따라서 읽기 작업보다는 쓰기 및 변경, 삭제 작업이 우선하는 경우가 많다.
이러한 OLTP용 데이터베이스의 최대 목적은 현재 기업의 데이터에 대한 무결성을 확보하는 것이다. 트랜잭션이라는 것이 동시에 수 십에서 수 백, 수 천 명의 사용자들이 수행하므로 데이터가 잘못 변경되거나, 잘못된 의미를 가져서는 이를 운영 데이터로 사용할 수 없다. 따라서 데이터 무결성을 확보하기 위해서 두 가지의 주요 원칙을 지켜야만 OLTP라고 할 수 있다.
발생한 데이터 변경 사항이 이용되는 모든 곳에 반영되어야만 한다.
트랜잭션을 지원해야만 한다.
이러한 트랜잭션 지향의 OLTP 데이터베이스는 데이터의 분석보다는 트랜잭션 성능 및 데이터 무결성을 확보하기 위해서 설계된다. OLTP용 데이터 베이스는 트랜잭션을 중요하게 여기므로 수 초 이내에 데이터가 변경되어야 하며, 데이터의 구조는 데이터 무결성을 지키기 위해서 엄격하게 매우 복잡하다. 데이터의 크기도 이력관리를 하지 않는다면 대부분이 수 기가 바이트 이하다.

OLAP
On-Line Analytical Processing
이용자가 직접 데이터베이스를 검색, 분석해서 문제점이나 해결책을 찾는 분석형 애플리케이션 개념. 

대규모 데이터를 이용한 질의 검색 시 발생한 대량의 결과값을 단순히 사용하기는 어렵다. 대부분 이 같은 질의는 복수의 데이터 정보 테이블을 기반으로 처리되고, 요약화된 정보를 얻기 위해 연산 처리가 수반되어 장시간이 소요되기 때문이다. 올랩 툴 또는 올랩 서버는 온라인 검색을 지원하는 데이터 웨어하우스(DW) 지원 도구인데, 이 같은 대규모 연산이 필요한 질의를 고속으로 지원한다.

DSS 용도의 데이터베이스를 OLTP(Online Analysis Processing)이라고 부른다. CRM이나 데이터웨어하우스, 데이터 마트 등이 이러한 OLAP 솔루션에 들어간다. OLTP의 단점들을 극복하기 위해서, 데이터를 분석 및 읽기 작업에 적합하도록 가공하여 사용하게 된다.
이와는 반대로 OLAP 데이터들은 트랜잭션이나 데이터 무결성을 확보할 필요가 없다. 이미 운영 데이터베이스에서 이러한 무결성이 확보된 데이터를 변환/추출한 것이기 때문이다. 동시에 여러 명이 사용하는 OLTP 데이터베이스에 비해서 분석을 위한 수 십 명 내외의 사람들이 사용하므로, 응답 결과도 그다지 빠를 필요는 없다. 그래서 상당 기간의 데이터들을 분석하기 때문에, 다루는 데이터 양은 OLTP보다 많아질 수 있다. 대부분의 정보들이 시간을 기준으로 분석되기 때문이다.

OLTP 와 OLAP의 차이점
OLTP은 현재 업무의 효율적인 처리에 관심을 갖는 반면에 OLAP는 의사결정에 도움되는 데이터 분석에 관심을 가진다.
OLTP와 OLAP 간의 실제적인 관점에서의 주된 차이는 OLTP는 거의 읽고/쓰는 작업이, OLAP는 대량의 읽기 작업이 중심이라는 것이다. OLTP에서의 I/O 작업은 랜덤 I/O 이다. 여기를 읽고서 데이터 수정하고, 또 저기를 읽고 데이터를 삭제한다. 반면, OLAP에서는 순차적인 I/O가 주된 작업이다. 여기서부터 저기까지를 쭈욱 읽어 들인다. 몇 배만큼이나 인데긋 크기가 커질 수 있다. 일기 작업이 주된 목적이기 때문이다.

 구분  OLTP  OLAP
데이터 구조  복잡  단순
 데이터 갱신  동적으로 순간적  정적으로 주기적
 응답시간  수 초 이내  수초에서 몇분 사이
데이터 범위  수십일 전후  오랜기간(몇년)
 데이터 성격  정규적인 핵심 데이터  비정규적인 읽기 데이터
 데이터 크기 수 기가 바이트   수 테라 바이트 
데이터 내용  현재 데이터  요약된 데이터 
 데이터 특성  트랜잭션 중심  주제 중심
 데이터 액세스 빈도  높음  보통
 질의 결과 예측  주기적이며 예측 가능  예측하기 곤란


:
Posted by Elick
2011. 1. 26. 15:56

데이터마이닝 (Datamining) Work/Database General2011. 1. 26. 15:56

1. Overview
가. 정의
  * 대용량의 숨겨진 데이터로 부터 유용한 정보 및 패턴을 추출하여 의사결정에 활용하는 과정

나. 통계적 분석과 데이터마이닝의 비교
 구분 통계적 분석  데이터마이닝 
데이터 규모  Sampling 기반  대용량 기반 
장점  수치데이터 의존
명확한 결과 제시 
과거 데이터 특성에 의존
의사 결정을 위한 고급 정보
단점  Sampling 선정문제
입력값의 타당성 
다양한 전문지식 필요 

2. 데이터마이닝 기법
  * 예측적 모델(Predicative Mode) : 이미 알려진 졀과로 예측
  * 탐색적 모델(Descriptive Mode) : 결과가 알려지지 않은 데이터로 예측
 구분 기법 내용 예시 
예측적 모델  의사결정 나무(Decision Tree)  축적된 데이터를 분석하여 나무모형으로 분류  우수고객(예탁금->약관->거래년수) 
  신경망(Neural Network)  뇌를 모방한 방식으로 학습을 통한 예측  우수고객 및 연체자 분석(입력-은닉-출력)

분류화(Classification) 특정 특성으로 분류 신규 고객, 불만 고객
탐색적 모델  연관성 분석(Association)  데이터의 종속관계를 분석  기저귀와 맥주
  연속규칙(Sequence)  연관성 분석에서 시간정보를 추가한 방식(이력사항 필요)  신차구입 후 캠핑장비 구입 
  군집화(Clustering) 특정 거리 기반으로 데이터 분류(K-Means 알고리즘)  기업 밀집 지역에 은행 지점 입점 

3. 데이터마이닝 절차 및 활용
가. 데이터 마이닝 절차
 절차 내용  고려사항 
요구분석  데이터마이닝 목적을 정의  불량 고객 최소화
신규 고객 창출 
데이터 선택  필요한 데이터의 위치, 형태 파악 및 통합  DW 활용 
데이터 정제 정확성을 높이기 위한 데이터 모호성, 중복성 제거 및 오류 데이터 보정  오류 데이터 보정 (9월 31일)
데이터 보강  데이터 양을 늘이기 위한 외부데이터 추가  외부 데이터 활용 
데이터 변환  불필요한 데이터 제거 및 신규 파생데이터 생성 파생 데이터 생성 (월 소득 200 이상 ->'1')
마이닝 수행  비즈니스 목적에 맞는 마이닝 기법 선택 및 수행 (의사결정 나무, 신경망.. 등)  해석 가능한 모델 선택 
해석 및 평가  마이닝 결과를 해석하고 실 업무에 적용하고 평가  Feedback 

나. 데이터마이닝의 활용
 구분 분야  내용 
금융  은행  우수 고객, 대출 심사 
  카드  신용평가, 카드사고 감시, 고객 세분화 
  증권  주가 예측 
  보험  Claim 분석 
통신  이동 통신  연체자 분석, 고객이탈 방지, 고객 충성도 분석 
유통  유통  마켓팅 전략분석, 고객 관리 
제조  제조  불량율 예측, 품질 관리 
소매  소매  고객 세분화 마켓팅, 교차 판매 
의학  의료  환자의 질병 예측, 환자의 특성에 따른 의약품 부작용 분석 

4. 데이터마이닝의 기대효과 및 의견
가. 데이터마이닝의 기대효과
 BSC 관점 재무관점  경쟁력 향상, 수익 증대, 주주의 가치 증대 
  고객관점  욕구에 부합하는 제품사용, 기업에 대한 충성도 향상 
  프로세스 관점  고객 세분화, 불량율 감소 등을 위한 내부절차 개선 
  학습과 성장  마켓팅 정보, 판매 정보, 고객 정보 등 유용한 정보 획득 

나. 의견
  * OLAP, 지능현 Agent, Expert 시스템, KMS 등과 연계되어 주요 의사결정 지원 기술요소로 정착이 기대됨.
  * 통계적 분석 등 경험이 필요하며, 전문가의 수준에서 이해가 가능한 알고리즘 등 보편적인 사용이 현실적으로 쉽지 않으나, Visualization 분야 및 신용카드 회사 등 마이닝이 잘 맞는 특정 산업을 중심으로 사용이 용히한 패키지 형태로 확산될 전망임.
:
Posted by Elick
2011. 1. 25. 18:39

2PL(2 Phase Lock) Work/Database General2011. 1. 25. 18:39

정의
분산, 다중사용자 환경에서 트랜잭션의 동시 실행을 보장하면서 데이터베이스의 일관성을 유지하기 위한 트랜잭션 제어 메커니즘.
트랜잭션 serializability를 보장
Expanding : locks are acquired and no locks are released. => lock만 수행
Shrinking : locks are released and no locks are acquired. => unlock만 수행
S2PL (Strict 2PL) : 트랜잭션이 종료되어야 Write Lock을 Release
SS2PL (Strong Strict 2PL) : 트랜잭션이 종료되어야 Write Lock, Read Lock을 Release => 대부분의 상용 DB에서 지원
:
Posted by Elick
2011. 1. 25. 18:38

2PC (2 Phase Commit) Work/Database General2011. 1. 25. 18:38

정의
분산 데이터베이스 환경에서 원자성을 보장하기 위해 분산 트랜잭션에 포함되어 있는 모든 노드가 Commit하거나 Rollback하는 메커니즘
분산 환경의 데이터 처리에서 데이터 신뢰성 향상을 위한 트랜잭션 처리 구조

필요성
분산 데이터베이스 환경에서는 Commit과 Rollback만으로 여러 노드에 분산된 데이터베이스의 일관성이 보장되지 않음
분산 데이터베이스에서는 모든 노드의 데이터베이스에서 트랜잭션이 성공적으로 완료되었음을 확인한 후에 트랜잭션의 처리가 완료되어야 함

실행주체, 처리절차
실행주체: 서버, 조정자(Global Coordinator),참여자(Participant),클라이언트(Client)
2PC의 처리절차 (GC: Global Coordinator, C:Client 노드, P:Participant 서버, LC:Local Coordinator)
1. C -> G : Commit요청 (트랜잭션 처리 요청)
2. G -> LC in P's : Commit Point Site결정 (분산 로컬 사이트에 트랜잭션 처리 알림)
3. LC in P's -> G : Prepare메시지 전송
4. G -> LC in P's : Prepare메시지 응답
5. G -> LC in P's : Commit/Rollback 명령

장단점
장점: 분산환경에서 데이터 신뢰성 향상을 위한 방안
단점: 분산의 규모가 증가할수록 다양한 환경이 존재하므로 신뢰할 수 있는 트랜잭션 보호가 어려움

2PC 활용시 고려사항
다단계로 증가시 신뢰성은 증가하지만 오버헤드는 증가하므로 적정수준 결정
상용 DBMS로는 완벽한 2PC를 지원하기 어려움
TP-monitor등의 트랜잭션 관리를 위한 미들웨어 제품 필요
:
Posted by Elick
2010. 8. 5. 00:01

정규화 Work/Database General2010. 8. 5. 00:01

생각보다 정규화를 위반한 테이블을 많이 보게 되고, 어느 정규화를 위반했는지도 파악이 안되는 테이블도 많이보게 된다.
그리고, 가장 두려운 것은 내가 정규화를 위반한 것인지 아닌지 판단이 안되는 경우이다.

제 1 정규화(1NF)
 모든 도메인이 원자값(atomic value)만으로 된 릴레이션
 여러 값을 가진 속성이 존재할 수 없다. 즉 반복되는 그룹이 존재해서는 안된다.
제 2 정규화(2NF)
 1NF이고, 식별자에 속하지 않는 속성들은 모두 식별자에 완전 함수 종속
 식별자가 아닌 속성은 식별자에 의존적이어야 한다. 식별자의 일부분에 의존적이어서는 안된다.
제 3 정규화(3NF)
 2NF이고, 식별자가 아닌 모든 속성들은 식별자에 이행적 함수 종속되지 않음
 식별자가 아닌 속성은 식별자 이외에 다른 속성에 의존적이어서는 안된다.
반정규화 종류
 이유:시스템 성능, 개발 과정 편의성, 운영의 단순화
 분할(수평분할, 수직분할), 중복테이블 생성(집계, 진행), 중복 컬럼 생성
:
Posted by Elick
2009. 1. 14. 14:47

MSSQL Oracle 분산트랜잭션 Work/Database General2009. 1. 14. 14:47

한동안 고민했었던 것인데... 아래처럼 하면 된다.
그런데... MSSQL에서 이렇게 연결한 Oracle의 package를 호출하는 방법을 누가 좀 알려줬으면 좋겠다..


Distribute transaction for MSSQL-ORACLE.

- 연결된 두 서버의 네트워크 주소가 C 클래스까지 일치해야 한다고 한다. 
   이 문제에 대한 공식 문서를 찾지 못했지만, 실제로 테스트해본 결과로는 믿을만한 정보다. 
   몇몇 증언들을 보면 C클래스까지 일치하지 않으면 분산트랜잭션이 실패한다고 한다.
--> 이것은 정확하지 않다. 컴퓨터 이름으로 ping이 갈 수 있으면 이 조건은 무시해도 될 것 같다.

 - Windows 구성요소 중 네트워크 COM+ 엑세스 사용, 네트워크 DTC 엑세스 사용이 모두 설치되어 있어야 한다.

 - 고급 TCP/IP - WINS의 NetBIOS 설정은 기본값으로 설정되어 있어야 한다.

 - hosts, Imhosts 파일에 서버IP 서버 HOST명를 맵핑. (동일 네트웍에서 Ping 서버 HOST명 이 이상없어야 한다)

 - 인터넷 연결 방화벽 설정도 해지되어 있어야 한다. (135 port 및 MSDTC관련 App를 예외로 등록한다)

 - DTCPing Tool을 이용한 MSDTC 정상 동작 확인해야 한다..(135 port 확인)

 - 레지스트리 에서 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC에 TurnOffRpcSecurity 데이터 값은 1로 설정되어있어야 한다.

 - 관리도구>구성요소서비스 >내 컴퓨터> 속성> 보안구성도 정상적으로 설정되어 있습니다.
: 네트워크 DTC 액세스, 인바운드 허용, 아웃바운드 허용, 인증필요 없음 이 체크되어 있는지 확인할 것.
 - netstat -na 결과 (TCP    0.0.0.0:135    0.0.0.0:0    LISTENING - 순서대로)이면 135번 포트는 열려있어야한다.

 - MSSQL Server 보다 MSDTC가 먼저 시작되어야 한다. (설정이 변경되면 당연히 재시작한다.)

 - 아래처럼 SET XACT_ABORT ON 를 사용한다.

 SET XACT_ABORT ON
 BEGIN DISTRIBUTED TRANSACTION
   INSERT INTO T_TEST VALUES (2);
   INSERT INTO ORADEV9..DEVDBA.T_TEST VALUES (2);
 COMMIT TRANSACTION

Reference. 
after reference. 

:
Posted by Elick
2009. 1. 12. 16:10

Database 란?? Work/Database General2009. 1. 12. 16:10

데이터베이스란?

 

데이터베이스가 뭐냐고 물어본다면 필자는 ‘데이터를 꺼내보기 좋게 잘 저장해 놓은 것’ 이라고 하겠다. 여기에 ‘여러 명의 사용자’라는 옵션이 붙던지 ‘고도로 구조화’라는 옵션이 붙던지.. 아무튼 ‘데이터를 꺼내보기 좋게 잘 저장해 놓을 것’에 포함이 된다. 여기서 논란의 여지가 있는 것은 역시 ‘잘’이란 부사이다. 데이터를 꺼내보기 좋게 ‘잘’ 저장하는 것이 우리가 데이터베이스를 공부하는 70%라고 봐도 된다. 데이터를 ‘잘 꺼내보는 것’은 30%에 해당한다. 그러므로 어떻게 데이터를 저장할 것인지를 결정하기 위한 일련의 작업들을 데이터베이스 모델링과 설계라고 봐도 된다. 잘 꺼내보는 것은 DBMS를 제작하는 기술과 DBMS를 이해하고 SQL문을 작성하는 것이다. 물론 DBMS를 제작하는 기술은 그야말로 어려운 일이므로 이를 제외하면 DBMS를 이해하고, SQL문을 작성하는 것만 남게 된다.

, 그럼 데이터를 꺼내보기 좋게 잘 저장해 놓았다고 하자. 왜 이런 짓을 해야 할까? 바로 사용자의 정보욕구를 만족시키기 위해서. 결국 데이터베이스는 보다 정보를 얻기 편리하게 해보자는 의도에서 만들어진 것이다. 그렇다면 다른 문서에서는 데이터베이스를 어떻게 정의하고 있는지 살펴보자.

 

데이터베이스의 정의
논리적으로 연관된 하나 이상의 자료의 모음으로 그 내용을 고도로 구조함으로써 검색과 갱신의 효율화를 꾀한 것이다. , 몇 개의 자료 파일을 조직적으로 통합하여 자료 항목의 중복을 없애고 자료를 구조화하여 기억시켜 놓은 자료의 집합체라고 할 수 있다. -- 네이버 백과사전

 

첫 번째로 논리적으로 연관된이란 글에 대해서 고려해보자. 연관되어있다는 것은 어떤 개념의 범위에 속해 있다는 뜻이된다. 지금 이 글을 보고 내용을 이해하고 있는 사람은 아마도 “한국어를 할 수 있는 사람” 좀 더 개념의 범위를 좁혀보면 “자랑스런 조선인으로써” 나와 연관될 수 있다.(매우 정성적이지만 그렇다치자) 이렇게 개념의 범위 좀 더 이론적으로 말한다면 집합의 명제속에 속하는 원소들 끼리는 바로 논리적으로 연관되었다고 볼 수 있는 것이다.

 

 

두 번째로 하나 이상의 자료의 모음이란 글에 대해서 따져보자. 사실 말이 좀 우습다. “두개 이상의 자료의 모음” 또는 “세개 이상의 자료의 모음”이라고 해도 별로 우습지 않다. 1개의 자료나 3개의 자료나 분명히 숫자에 대한 기본적인 지식만 알면 인간의 머리속에서 해결할 수 있다. 아마도 “하나 이상”의 뜻은 인간이 감당하기 힘들 정도의 자료의 양이 될 것이다. 정말이지 조그만한 강원도 두메산골 1평 남짓한 구멍하게를 운영한다고 하자. 상품은 30개가 되지 않는다. 하루 매출은 1만원을 넘지 않는다. 물건을 사러오는 사람도 몇 명되지 않는 동네 어르신들이다. 다른 구멍가게는 없다. 과연 매출장부가 필요할까? 그럼 대형할인마트를 생각해보자. 하루 몇 억개의 상품이 팔려나간다. 이러한 매출자료를 수작업으로 정리하려면 생각만해도 짜증스럽다. 어찌되었건 하나 이상의 자료의 모음이라는 것은 많은 양의 데이터를 뜻할 것이다.

 

세 번째로 그 내용을 고도로 구조화함으로써 검색과 갱신의 효율화를 꾀 한 것이란 글에 대해서 살펴보자. 위에서 예를 든 대형할인 마트로 다시 돌아가보자. 그 수많은 상품들을 아무런 진열도 하지 않고 그냥 쏟아 부어 놓았다고하자. 여러가지 상품이 산더미처럼 얼켜있을 것이다. 상품의 가치도 가치이거니와 원하는 물건을 사기위해서는 많이 뒤져봐야 할 것이다. 또한 A라는 상품이 없다고 어떤 고객이 눈앞에서 난리를 치고 있다. 할 수 없이 대형할인마트의 재고관리자는 포크레인으로 A상품을 쏟아 부었다고 하자. 그런데 내가 찾는 상품은 알고보니 제일 먼저 쏟아부어 제일 바닥에나 있다고 하자. 어찌되었던 내가 원하는 상품을 찾기 위해서는 다른 상품이 또 밑으로 내려가야 한다. 장사가 될까? 데이터베이스도 마찬가지이다. 자료를 잘 정리정돈 해놓아야 데이터를 잘 사용할 수 있는 것이다. (내용을 고도로 구조화하는 방법은 데이터 모델링과 설계부분이다. 이는 나중에 다룰 것이다.)

 

네 번째로 몇 개의 자료 파일을 조직적으로 통합이란 글을 살펴보자. 백과사전이라 그런지 몰라도 데이터베이스의 탄생배경을 생략해 놓은 듯한 글귀다. 우찌되었건 파일시스템을 사용할 적(물론 지금도 사용하고, 어떤 경우에는 데이터베이스보다 더 효율적이다)에 발생되었던 문제의 근본 원인인 “자료의 중복”을 들먹이고 있다. 물론 자료의 중복은 중복을 아예 없애라는 것이 아니라 “최소한의 중복”이다. 이러한 자료의 중복을 없애는 작업이 나중에 나오게 될 데이터베이스의 꽃인 “정규화”이다. 그럼 현재는 데이터베이스는 자료의 중복이 많이 없어졌을까? 알 수 없다. 필자가 본 많은 데이터베이스는 엄청나게 많은 자료의 중복이 있었다. 그로인해 많은 사람들이 괴로워하는 것도 많이 보았다. 데이터베이스를 잘 사용하지 못하면 오히려 파일시스템보다 더 중복이 일어날 수 있다. 데이터베이스 답게 사용하려면 자료의 중복을 없애는 일이 너무나도 중요하다. 자료의 중복을 없애는 것은 좋은 정보를 만들어내는 지름길이다.

 

데이터베이스의 특징

 

 

ü        똑같은 자료를 중복하여 저장하지 않는 통합된 자료

ü        컴퓨터가 액세스하여 처리할 수 있는 저장장치에 수록된 자료

ü        어떤 조직의 기능을 수행하는 데 없어서는 안 되며 존재 목적이 뚜렷하고 유용성 있는 운영 자료이기 때문에 임시로 필요해서 모아 놓은 데이터나 단순한 입출력 자료가 아니라는 점

ü        한 조직에서 가지는 데이터베이스는 그 조직 내의 모든 사람들이 소유하고 유지하며 이용하는 공동 자료로서 각 사용자는 같은 데이터라 할지라도 각자의 응용 목적에 따라 다르게 사용할 수 있다는 점이다.

 

 www.databser.net에서.. 퍼온거 같은데... 기억이 가물가물하다..

 

:
Posted by Elick