728x90
반응형

제 1절 관계형 데이터베이스 개요


1. 데이터베이스


- 특정 기업이나 조직 또는 개인이 필요에 의해(부가가치가 발생하는 일 등) 데이터를 일정한 형태로 저장해 놓은 것

- 그러나 관리 대상이 되는 데이터 양이 점점 많아지고 같은 데이터를 여러 사람이 동시에 여러 용도로 사용하게 되면서 단순 엑셀같은 소프트웨어는 한계에 부딪히게 됨

- 많은 사용자들은 보다 효율적인 데이터의 관리 뿐만 아니라 예기치 못한 사건으로 인한 데이터의 손상을 피하고, 필요시 필요한 데이터를 복구하기 위한 강력한 기능의 소프트웨어를 필요로 하게 되었고 이러한 기본적인 요구사항을 만족시켜주는 시스템을 DMBS(Database Management System)라고 함



1.1 데이터베이스의 발전


1) 1960년대 : 플로우차트 중심의 개발 방법 사용, 파일구조를 통해 데이터를 저장, 관리

2) 1970년대 : 데이터베이스 관리 기법이 처음 태동, 계층형 데이터베이스, 망형 데이터베이스 상용화

3) 1980년대 : 관계형 데이터베이스 상용화, Oracle, Sybase, DB2 제품 사용

4) 1990년대 : Oracle, Sybase, Informix, DB2, Teradata, SQL Server 등 핵심 솔루션이 됨, 객체 관계형 데이터베이스로 발전



1.2 관계형 데이터베이스 (Relational Database)


1970년 영국의 수학자 E.F. Codd 박사의 논문에서 처음으로 관게형 데이터베이스가 소개된 이후, IBM의 SQL 개발 단계를 거쳐서, Oracle을 선발로 여러 회사에서 상용화된 제품을 내놓았다. 이후 데이터베이스는 여러 장점이 부각되면서 기존의 파일시스템, 망형, 계층형 데이터베이스들을 대부분 대체하게 되었다. 


파일시스템을 이용하여 데이터를 관리함에 있어서 동일한 데이터가 여러곳에 저장되는 문제점도 생기고, 이는 데이터 불일치성으로 이어지게 된다. 이러한 문제에대해 관계형 데이터베이스는 정규화를 통한 합리적인 테이블 모델링을 통해 이상(ANOMALY)현상을 제거하고 데이터 중복을 피할 수 있으며, 동시성 관리, 병행 제어를 통해 많은 사용자들이 동시에 데이터를 공유 및 조작할 수 있는 기능을 제공할 수 있다. 


관계형 데이터베이스는 메타 데이터를 총괄 관리할 수 있기 때문에 데이터의 성격, 속성 또는 표현 방법등을 체계화 할 수 있고, 데이터 표준화를 통한 데이터 품질을 확보할 수 있다. 또한, 인증된 사용자만이 참조할 수 있도록 보안기능도 제공하고 있다. 그리고 다양한 제약조건을 이용하여 사용자가 실수로 조건에 위배되는 데이터를 입력한다던지, 삭제한다던지의 오류등을 방지하여 데이터 무결성(Integrity)을 보장 할 수 있다.



2. SQL(Structured Query Language)


SQL은 관계형 데이터베이스에서 데이터 정의, 데이터 조작, 데이터 제어를 하기 위해 사용하는 언어이다. SQL은 정확한 데이터를 출력하는 것이 목표이다. 1986년부터 ANSI / ISO를 통해 표준화되고 정의된 SQL 기능은 벤더별 DBMS 개발의 목표가 된다. 이는 단순 스크립트가 아니라 개발언어이며, 세미콜론(;)으로 분리되어 있는 SQL 문장 단위로 독립되어 있다. 


이렇게 특정 데이터들의 집합에서 필요로 하는 데이터를 꺼내서 조회하고 새로운 데이터를 입력 / 수정 / 삭제 하는 행위를 통해서 사용자는 데이터베이스와 대화하게 된다. 그리고 SQL은 이러한 대화를 가능하도록 매개 역할을 하는 것이다. 결과적으로 SQL 문장을 배우는 것이 곧 관계형 데이터베이스를 배우는 기본 단계라 할 수 있다.








3. TABLE


데이터는 관계형 데이터베이스의 기본단위인 테이블 형태로 저장된다. 모든 자료는 테이블에 등록이 되고 우리는 테이블로부터 원하는 자료를 꺼내 올 수 있다. 



테이블은 데이터를 저장하는 객체(Object)로서 관계형 데이터베이스의 기본단위이다. 관계형 데이터베이스에서는 모든 데이터를 칼럼과 행의 2차원 구조로 나타낸다. 세로 방향을 칼럼(Column), 가로방향을 행(Row)이라고 하고, 칼럼과 행이 겹치는 하나의 공간을 필드라고 한다. 





아래 그림은 선수에 관련된 테이블을 복수의 테이블로 분할하여 저장하고 있다. 이 분할된 테이블은 그 칼럼의 값에 의해 연결된다. 이렇게 테이블을 분할하여 데이터의 불필요한 중복을 줄이는 것을 정규화(Normalization)라고 한다. 


데이터의 정합성 확보와 데이터 입력 / 수정 / 삭제시 발생할 수있는 이상현상(Anomaly)을 방지하기 위해 정규화는 관계형 데이터베이스 모델링에서 매우 중요한 프로세스이다. 






각 행을 한가지의 의미로 특정할 수 있는 한 개 이상의 칼럼을 기본키(Primary Key)라고 하며, 여기서는 선수 테이블의 '선수번호'와 구단 테이블의 '구단코드'가 기본키가 된다. 또 선수 테이블의 '구단코드'와 같이 다른 테이블의 기본키로 사용되면서 테이블과의 관계를 연결하는 역할을 하는 칼럼을 외부키 또는 외래키(Foreign Key)라고 한다. 





4. ERD (Entity Relationship Diagram)


엔티티(사람, 사물 등)간의 관계를 잘 표현할 수 있는 것은 ERD이다. 이는 관계의 의미를 직관적으로 표현할 수 있는 좋은 수단이다. 


ERD의 구성요소는 엔티티(Entity), 관계(Relationship), 속성(Attribute) 세가지 이다. 현실세계의 데이터는 이 3가지 구성요소로 모두 표현이 가능하다. 





대표적인 ERD 표현법으로는 IE(Information Engineering) 표기법과 Barker(Case *Method) 표기법으로 표현한 ERD 이다. 

다음 그림의 테이블간의 양방향 관계는 다음과 같다.


- 하나의 팀은 여러 명의 선수를 포함할 수 있다.

- 한 명의 선수는 하나의 팀에 꼭 속한다.


- 하나의 팀은 하나의 전용 구장을 꼭 가진다.

- 하나의 운동장은 하나의 홈팀을 가질 수 있다.


- 하나의 운동장은 여러 게임의 스케줄을 가질 수 있다.

- 하나의 스케줄은 하나의 운동장에 꼭 배정된다.

 







728x90
반응형