2022. 6. 5. 14:58ㆍ개발 관련 책 읽기/데이터베이스 설계 및 구축
단원 목표
- 데이터베이스의 필요성에 대해 이해한다.
- 관계형 DB의 기본 용어를 익힌다.
- 기본키와 외래 키의 개념을 이해한다.
- 기본적인 SQL 문법 숙지한다.
파일 시스템의 등장
데이터베이스 개념이 나오기 전의 시스템들이 /어떻게 데이터를 관리했는지 알아보자.
DB를 사용하기 전의 시스템들은 "파일"을 이용한 파일 시스템을 통하여 자료들을 저장하였다.(그림 1 참고)
하지만 데이터가 증가하면서 파일 시스템에는 다양한 문제점들이 나오게 되었다.
파일을 이용한 시스템의 문제점
1. 데이터 종속성(Data Dependency)
: 데이터 종속성이란 데이터를 사용하는 프로그램의 구조가 데이터 구조의 영향을 받는 것을 의미함.
파일의 구조가 변함에 따라 프로그램의 구조도 같이 변경하게 되는 문제점이 발생하게 된다.
(예를 들어, 학생의 이름을 저장하는 필드의 길이를 늘려야 하는 경우 프로그램 구조도 같이 변경되어야 함)
2. 데이터 무결성(Data Integrity)의 침해
: 데이터 무결성이란 저장된 데이터의 내용이 본래 의도했던 데이터의 형식, 범위 등을 준수해야 한다는 성질이다.
데이터 무결성은 데이터의 정확성, 일관성, 유효성을 지키는 성질이 있다. 그러나 파일을 이용한 시스템에서는 데이터 무결성을 응용프로그램에서 개발자가 확인하였고, 그에 따른 문제점이 있었다.
3. 데이터 중복성(Data Redundancy)
: 데이터 중복성이란 같은 내용의 데이터가 여러 곳에 중복하여 저장되는 것을 의미한다. 파일을 이용할 경우 동일 데이터가 여러 파일에 중복으로 저장되는 경우가 있다. 그로 인해 저장 공간 낭비, 데이터 불일치, 보안의 어려움 등 문제들이 발생하게 되었다.
4. 데이터 불일치(Data Inconsistency)
: 데이터 불일치란 중복 저장된 데이터들이 서로 일치하지 않는 것을 의미함.
5. 데이터 표준화(Data Standard)의 어려움
: 파일을 이용한 시스템 개발 환경에서는 시스템 간의 호환성 등의 표준화하기 어려운 문제가 있었다.
6 데이터 보안성(Data Security)의 결여
: 파일의 경우 내용이 Text형식이나 잘 알려진 형식으로 저장되기 때문에 쉽게 파일을 열어 내용을 볼 수가 있고, 파일 공유를 위해 접근이 쉬운 위치에 파일을 저장했기 때문에 보안을 유지하기가 어려웠다.
=> 이러한 문제들을 해결하기 위해 나온 것이 데이터베이스이다.
데이터베이스의 등장
: 데이터베이스 취지는 정보들을 하나로 모아 관리하고, 응용 S/W들이 OS를 통해 시스템의 자원을 이용할 수 있도록 하고, 그리고 응용 S/W 들과 데이터 사이에 인터페이스 역할을 할 수 있는 S/W를 만들자는 것이다.(그림 2 참고)
이때 모아놓은 데이터의 집합을 데이터베이스(DB), 데이터를 관리하는 S/W를 데이터베이스 시스템(DBMS)라고 부른다.
데이터베이스 시스템의 특징
1. 데이터 독립성 지원
: 데이터베이스 시스템에서는 사용자 혹은 응용 S/W가 직접 데이터베이스에 접근할 수 없고 반드시 DBMS를 통해서만 접근이 가능하다. DBMS는 데이터베이스 내에 데이터의 물리적, 논리적 변화가 응용 시스템에 영향을 미치지 않도록 함으로써 데이터 독립성을 보장한다.
2. 데이터 무결성 유지
: DBMS는 데이터의 타입, 길이 등에 대한 정보를 가지고 있으며, 이에 위반하는 데이터가 들어올 경우 처리를 거절함으로써 데이터 무결성을 지원한다.
3. 데이터 중복성 및 불일치 최소화
: 데이터를 하나에 모아서 관리함으로써, 중복성을 방지하며 그 결과로 데이터의 불일치 문제를 해결한다.
4. 데이터 표준화의 용이성
: DBMS는 데이터의 구조에 관한 정보를 가지고 있으며 데이터에 접근하기 위해서는 구조 정보에 따라야 하기 때문에 자연스럽게 표준화가 이루어질 수 있다.
5. 높은 데이터 보안성
: DBMS는 데이터베이스 내에 있는 데이터에 대한 접근을 제한을 할 수 있다. 그로 인해 DBMS를 통하지 않고는 외부에서 내용을 알아내기 어렵기 때문에 데이터가 보호가 된다.
6. 데이터 공유의 용이성
: DBMS는 동시에 여러 사용자의 요구를 동시적으로 처리할 수 있으며, 데이터를 공유할 수 있다.
관계형 데이터베이스
: 관계형 데이터베이스란 서로 관련된 데이터에 대한 액세스를 저장 및 제공하는 데이터베이스 유형이다.
관계형 데이터베이스는 테이블에 데이터를 직관적이고 간단하게 표현하는 방법으로 제공한다.
관계형 데이터베이스의 용어에 대해서 알아보자.(그림 3 참고)
관계형 데이터베이스 용어
1. 릴레이션(relation)
: 릴레이션은 DB에서 테이블(table)이라고 용어를 쓰고 RDB에서 정보를 구분하여 저장하는 기본 단위이다.
ex) 학생, 주문, 상품
2. 속성(attribute)
: 하나의 릴레이션에서 표현할 개체의 구체적인 정보 항목에 해당한다. DB에서 컬럼(열)이라는 용어로 쓴다.
ex) 학생 릴레이션에서 학번, 이름, 나이...
3. 튜플(tuple)
: 릴레이션에 속한 구성원들의 개개의 정보이다. DB에서 레코드(행)라는 용어로 쓰인다.
ex) 학번:202013, 이름: 김철수 나이 : 20
4. 도메인(domain)
: 릴레이션에 포함된 각각의 속성들이 가질 수 있는 값들의 집합
ex) 성별의 경우 남, 여
기본키와 외래키
: DBMS 입장에서는 릴레이션에 중복 튜플이 삽입되는 것을 방지해야 한다. 이미 존재하는 모든 튜플을 확인방법도 있겠지만 튜플수가 많을수록 오래 걸리기 때문에 좋은 방법은 아니다. 그래서 효과적으로 확인할 수 있는 방법이 키이다.
정확힌 후보키(Candidate Key)이다.
후보키란 테이블에서 각 튜플을 구별하는데 기준이 되는 하나 이상의 컬럼들의 집합이다.
예를 들면, 학생 릴레이션의 경우 학번과 주민등록번호가 후보키가 될 수 있다. 후보키 중 어느 것을 기준으로 정할지에 따라 선택된 후보키를 기본키, 선택되지 않은 후보키를 대체키라고 한다.(학교에서는 학번이 많이 쓰이므로 학번이 기본키가 될 것이고, 주민등록번호가 대체키가 될 것이다)
어떤 릴레이션에 두 개 이상의 컬럼이 합쳐야 후보키의 역할을 할 경우가 있다. 이렇게 두 개 이상의 컬럼들이 모여 키의 역할을 하는 경우 복합키라고 부른다.
RDB에서 외래 키(외부 키, Foreign Key)는 한 테이블의 필드(컬럼, attribute) 중 다른 테이블의 행(row)을 식별할 수 있는 키를 말한다. 외래키를 통해 테이블 간의 데이터 일치와 무결성을 보장해준다.
뷰
: 뷰(View)란 하나 이상의 테이블에 대하여 관점에 따라(원하는 데이터) 데이터를 선택해 볼 수 있도록 하는 수단으로써 가상 테이블이라고 부른다. 여기서는 간단히 넘어가고 뷰에 대한 자세한 정보는 다른 글에서 정리하겠다.
SQL 언어
: 사용자, 응용 S/W는 SQL을 사용하여 DBMS에 작업을 요청할 수 있다. SQL문들은 표준화되어 있어서 대부분의 DBMS에 동일하게 적용되고 원하는 데이터에 대해 구조화된 질의 언어(SQL)를 전송하여 데이터를 획득한다.