공통 [프로그래밍 애피타이저] 7장 데이터베이스 개념과 용어정의
2020.04.09 10:06
데이터베이스 개념과 용어정의
데이터베이스(DataBase)란?
여러 사람에 의해 공유되어 사용될 목적으로 통합하여 관리되는 데이터의 집합을 말합니다.
자료항목의 중복을 없애고 자료를 구조화하여 저장함으로써 자료 검색과 갱신의 효율을 높입니다. 현대적인 의미의
데이터베이스 개념을 확립한 사람은 당시 제너럴일렉트릭사(社)에 있던 C. 바크만으로 그는 1963년 IDS(Integrated Data Store)라는 데이터베이스 관리시스템을 만들었습니다.
논리적으로 연관된 하나 이상의 자료의 모음으로 그 내용을 고도로 구조함으로써 검색과 갱신의 효율화를 꾀한 것입니다.
즉, 몇 개의 자료 파일을 조직적으로 통합하여 자료 항목의 중복을 없애고 자료를 구조화하여 기억시켜 놓은 자료의
집합체라고 할 수 있습니다.
데이터베이스는 왜 사용하는가?
데이터베이스란 다수의 사용자가 사용하는 데이터들의 공유와 운영을 위해 저장해 놓는 공간을 말합니다.
프로그램을 만들다 보면 프로그램 사용자들에 의해 생성된 데이터, 프로그래머가 필요에 의해 프로그램에 넣어놓은
데이터 등 필연적으로 많은 데이터들이 생성 되는데 데이터베이스를 사용하지 않으면 이 데이터들은 프로그램을
종료하는 순간 전부 날아가게 됩니다. 이런 현상을 방지하기 위해 데이터들을 데이터베이스에 넣고 보관하는 방법을
사용합니다.
데이터베이스 관리 시스템(DBMS)를 쓰지 않는다면
· 다수의 사람이 데이터를 공유하기 어렵다
· 대량의 데이터를 다루기 어렵다 (txt, xls 등)
· 읽기/쓰기를 자동화하려면 프로그래밍 기술이 필요하다
· 만일의 사고에 대응하기 어렵다 (보안, 백업)
DBMS(DataBase Management System)
데이터베이스를 관리하는 시스템을 이야기 합니다. 크게 관계형 데이터베이스, 객체지향 데이터베이스 등으로 나뉘고
주로 사용하는 관계형 데이터베이스의 대표적인 DBMS로 오라클(ORACLE), MS-SQL, MY-SQL 등이 있습니다.
DBMS의 주요기능들을 살펴보면 다음과 같습니다.
l 데이터의 추가/삭제/수정/조회
l 데이터 무결성 유지
l 트랜잭션 관리
l 데이터 백업 및 복원
l 데이터 보안
예로 고객 명함관리 자료의 구조를 확인해 보겠습니다.
이렇게 일정한 양식으로 자료가 구성되었을 때 '구조적'이라고 부릅니다. 이런 형태를 테이블이라고 하고, 각 행(Row)의 자료를 레코드(Record)라고 부릅니다. 예시된 표에서는 7 레코드가 있습니다. 또 각 열(column)을 필드(항목, Field)라고 한다. 첫 줄은 필드의 이름입니다.
데이터베이스 용어정리
l 테이블(Relation)
테이블은 빠른 참조를 위해 적당한 형태로 자료를 모아 놓은 것입니다.
관계 데이터 베이스 모델(relational data base model)에서 자료의 구조를 2차원의 표로 나타낸 것입니다. 즉, 행과 열의
형태로 관리되며 키를 지정함으로써 원하는 자료를 빠르고 쉽게 찾아 낼 수도 있습니다. 예를 들어 인사 기록 파일이
있다면 각 사람에 대하여 이름, 사원번호, 나이 등이 필드가 될 수 있습니다. 또 이러한 필드가 여러 개 모여 한 사람 분의 자료가 된 것이 레코드입니다. 레코드가 모여 인사관리 테이블이 됩니다.
l 칼럼(Attribute)
각 칼럼(Attribute)들은 이름과 데이터타입 그리고 데이터크기로 이루어져있습니다. 데이터타입의 경우 RDBMS의
종류에 따라 다를 수 있습니다. 예로 MY-SQL에서는 Integer 타입이 oracle에서는 number 타입으로 사용됩니다.
l 레코드
정보를 처리하는 기본적인 단위로 하나 이상의 항목(field 또는 item)의 모음입니다.
l 도메인(Domain)
각 속성(Attribute)들이 취할 수 있는 같은 타입의 원자 값들의 집합. 즉, 한 속성(Attribute)에 나타날 수 있는 값의 범위.
예를 들면 학년 속성은 1~6까지의 값을 가질 수 있고 이를 도메인이라 합니다. 나중에 언급되겠지만 데이터베이스는
도메인과 관련된 합계, 평균, 레코드갯수 등의 계산을 행하는 함수(도메인 계산함수)를 지원합니다.
l 엔티티(Entity)
사람, 장소, 사물, 사건 등과 같이 독립적으로 존재하면서 고유하게 식별이 가능한 실 세계의 개체입니다.
예를 들어, 사원번호가 2106이고 이름이 홍길동인 사원, 과목 코드가 CS372인 데이터가 있습니다. 이렇게 실체가
있는 것뿐만 아니라 추상적인 것도 있습니다. 프로젝트 번호가 P101인 프로젝트, 학과 번호가 D315인 학과는 추상적인
개념의 엔티티가 될 수 있습니다. 엔티티는 엔티티 집합들로 분류됩니다.
l 스키마(Schema)
자료를 저장하는 구조와 표현법을 정의한 것을 뜻합니다. 메타데이터(Metadata)라고도 합니다. 메타데이터는
어떤 목적을 가지고 만들어진 데이터라고 정의합니다. 예를 들어 홍길동, 1993-04-02이라는 데이터가 있을 경우에
이는 이름, 생일 이라는 스키마로 설명할 수 있습니다.
l 인덱스
데이터베이스 인덱스란 데이터베이스 테이블에서 데이터 검색 작업의 속도를 향상시키는 데이터 구조입니다.
교과서를 읽다가 어떤 개념에 대한 설명을 찾는다고 상상해보십시오 - 그런데 교과서에 색인이 없습니다 !
여러분은 필요한 정보를 찾을 때까지 표지부터 책 전체를 다시 훑어야 할 겁니다. 책의 끝부분에 있는 색인은
관련 정보가 있는 페이지를 빨리 찾을 수 있게 해줍니다.
l Key
한 테이블에서 각각의 행을 유일하게 식별하기 위해 사용하는 하나 혹은 그 이상의 칼럼들의 집합.
n 유일성과 최소성
Ø 유일성: 하나의 키로 어떠한 행을 바로 찾아낼 수 있는 성질. ex) 주민등록번호
Ø 최소성: 레코드를 식별하는데 꼭 필요한 속성들로만 구성되어 있는 성질.
예를 들면 {주민등록번호 + 학번}은 최소성을 만족시키지 않는다. 주민등록번호로만 행을 구분할 수 있기 때문입니다.
n 키의 종류
Ø 슈퍼 키(Super Key): 유일성을 만족하는 키(Super Key) 예를 들면 {학번 + 주민등록번호}
Ø 복합 키(Composite Key): 2개 이상의 칼럼을 사용한 키.
Ø 후보 키(Candidate key): 유일성과 최소성을 만족하는 키. 기본 키가 될 수 있는 후보이기 때문에 후보 키라고 불립니다. 예를 들면, 주민등록번호, 학번 등
Ø 기본 키(Primary key): 후보 키에서 선택된 키. NULL값이 들어갈 수 없으며, 기본키로 선택된 속성(Attribute)은
동일한값이 들어갈 수가 없습니다.
Ø 대체 키(Surrogate key): 후보 키 중에 기본 키로 선택되지 않은 키.
Ø 외래 키(Foreign Key): 어떤 테이블(Relation) 간의 기본 키(Primary key)를 참조하는 속성입니다.
테이블(Relation)들 간의 관계를 나타내기 위해서 사용됩니다.
RDBMS의 종류
어떤 RDBMS를 쓰는지에 따라 SQL 문법이 조금씩 달라질 수 있습니다. 많이 사용하는 RDBMS의 종류는 다음과 같습니다.
· Oracle DB - 가장 오래되었고 신뢰도도 높습니다. 뛰어난 기술력과 안정성을 가지고 있습니다. 대규모의 애플리케이션, 특히 은행 업계에서 쓰이며, 유료로 사용해야 합니다.
· MySQL - 오픈 소스이기 때문에 널리 쓰입니다. 웹 개발, 특히 PHP를 이용한 개발에 흔히 쓰입니다. 오라클이 인수한 후 불안감 때문에 다른 곳으로 넘어가는 경우가 종종 보입니다.
· Maria DB - 오라클이 MySQL을 인수하면서 라이선스 문제가 불확실해지자, 이에 반발하여 만들어졌습니다. MySQL 5.5를 기반으로 만들어져 사용법이 거의 유사하고 호환성도 뛰어납니다.
· PostgreSQL - 버클리 대학의 프로젝트로 만들어진 오픈 소스 ORDBMS입니다. (ORDBMS: 객체-관계형 데이터베이스 관리 시스템) SQL의 확장성과 표준을 준수하고, 풍부한 기능을 지원합니다.
· SQL Server - 마이크로소프트가 개발한 RDBMS이기 때문에 윈도우 시스템 환경을 지원합니다.
· SQLite - DB를 서버가 아닌 파일로 저장하는 DBMS입니다. 기기에 가벼운 DB를 저장하는 목적으로 설계되었으며 대표적으로 안드로이드, iOS, mac OS에서 사용됩니다.
참고자료 :
SQL vs NoSQL (orcle,msSQL.. vs. MongoDB) 차이와 장단점
https://siyoon210.tistory.com/130?category=840254
다운로드 : 7장 데이터베이스 개념과 용어정의.pdf
프로그래밍을 제대로 공부해보고 싶다면, 다음 순서로 진행하시는 것을 권장합니다.
- 프로그래밍 애피타이저 시리즈
- 함께 보면 좋을 도서: 시작하는 사람들을 위한 델파이 프로그래밍
- 함께 보면 좋을 도서: 시작하는 사람들을 위한 델파이 프로그래밍
- [동영상] 데브기어 델파이 기초 시리즈
- 함께 보면 좋을 도서: 델파이 Begin...End
- 함께 보면 좋을 도서: 델파이 Begin...End
- [오프라인 강의] 델파이/C++빌더 기초 강화
- [오프라인 강의] 델파이/C++빌더 윈도우 프로그래밍