컴퓨터 관련된 업무를 하는 사람이 아니더라도 우리의 일상생활에서 자주 접하는 용어 중 하나인데, 더 쉽게 예를 들자면 인터넷 쇼핑몰에서 상품을 주문하거나, 학교에서 성적을 조회, 은행에서 계좌를 관리할 때 등 다양한 상황에서 데이터베이스가 사용된다.
즉, 데이터베이스는 데이터들을 저장하고 조회하는 프로그램이다.
개발자에서 데이터베이스는 여러 사람이 공유할 목적으로 체계화해 통합, 관리하는 데이터의 집합, 흔히 스프레드 시트와 기능은 유사하지만 컴퓨터 언어로 제어가 가능하며 웹이나 앱을 통해 공유가 가능하여 전세계 누구나 거리와 시간의 제약없이 접근하고 편집이 가능하다는 장점을 가지고 있다.
데이터베이스는 단순하게 아무 데이터나 마구잡이로 저장해 놓지 않고 구조적인 형태를 유지하기 위해 나름 효율적인 데이터 저장 규칙이 존재한다.
여러가지의 데이터를 통합하여 저장하는데 중복된 정보가 있다는 이를 그대로 저장하면 용량 낭비가 발생하는 비효율적인 현상이 발생한다.
그래서 데이터베이스는 이러한 중복된 정보에 대해 데이터를 통합하여 중복을 최소화한 데이터의 모임으로 구성한다.
우리가 구글 클라우드, 네이버 클라우드 혹은 하드디스크, SSD 등 사진이나 동영상 파일을 저장하는 것처럼, 데이터베이스도 컴퓨터가 접근할 수 있는 매체에 데이터를 저장한다.
데이터베이스는 주로 조직의 목적을 위해 존재하고 활용되는 운영 데이터를 다루는데 주요하게 이용되는데, 예를 들자면 쇼핑몰의 경우엔 판매량이나 재고량 등이 운영 데이터이다.
단순하거나 임시적으로 데이터 저장이 필요하다면 굳이 무거운 데이터베이스 소프트웨어를 사용할 필요가 없고 그냥 폴더에 저장해버리면 된다.
여러 사람들이 공유하고 사용할 목적으로 통합 관리되는 데이터를 말하는데, 아마 데이터베이스라는 소프트웨어를 사용하는 가장 근본적인 이유이기도 하며, 하나의 컴퓨터나 시스템을 위한 데이터가 아닌 여러 시스템들이 공용으로 엑세스하여 이용한다.
예를 들면 쇼핑몰의 경우엔 판매자와 구매자가 같은 상품 정보를 보는걸 들 수 있다.
실시간 접근성, Real-Time Accessibility : 실시간 처리에 의한 응답이 가능해야 한다.
계속적인 변화, Continuous Evloution : 새로운 데이터의 삽입, 삭제, 갱신으로 항상 최신의 데이터를 유지한다.
동시 공용, Concurrent Sharing : 다수의 사용자가 동시에 같은 내용의 데이터를 이용할 수 있어야 한다.
내용에 의한 참조, Content Reference : 데이터베이스에 있는 데이터를 참조할 때 사용자의 요구에 따른 데이터 내용으로 데이터를 찾는다.
관계형 데이터베이스: 여러개의 테이블이 특정 관계로 이루어진 구조를 가진 데이터베이스
엔티티, Entity: 사람, 장소, 사물, 사건 등과 같이 독립적으로 존재하면서 고유하게 식별이 가능한 실세계의 객체
엔티티 집합, Entity Set: 동일한 속성을 가진 엔티티들의 집합, 엔티티 집합에 속한 요소들이 여러 엔티티 집합에 속할 수도 있다.
데이터베이스의 구조를 전반적으로 기술한 것으로, 구체적으로 데이터베이스를 구성하는 데이터 개체(Entity), 속성(Attribute), 관계(Relationship) 등을 정의 한 것을 말한다.
사용자의 관점에 따라 외부 스키마, 개념 스키마, 내부 스키마로 구분하며, DBMS는 외부 스키마에 명세된 사용자의 요구를 개념 스키마 형태로 변환하고, 이를 다시 내부 스키마 형태로 반환한다.
외부 스키마(사용자 뷰): 사용자의 입장에서 정의한 데이터베이스의 논리적 구조
데이터들을 어떤 형식, 구조, 화면을 통해 사용자에게 보여줄 것인가에 대한 명세를 설명하며 하나의 데이터베이스에는 여러개의 외부 스키마가 있을 수 있다.
일반 사용자는 SQL을 이용하고 DB를 쉽게 사용할 수 있고, 응용 프로그래머는 C, JAVA 등의 언어를 사용하여 DB에 접근한다.
개념 스키마(전체적인 뷰): 데이터베이스의 전체적인 논리적 구조를 말하며, 모든 이용자가 필요로 하는 데이터를 총합한 조직 전체의 데이터베이스로 하나만 존재한다.
개체 간의 관계와 제약조건, 데이터베이스의 접근 권한, 보안 등에 관한 명세를 나타내며 데이터베이스 관리자의 의해 구성된다.
내부 스키마: 물리적 저장장치의 입장에서 본 데이터베이스의 구조이며 실제로 데이터베이스에 저장될 레코드의 물리적인 구조, 저장 데이터 항목의 표현 방법, 내부 레코드의 물리적 순서등을 나타낸다.
(이미지 추가 예정)
Relation(== Table): 관계형 데이터 베이스에서 정보를 구분하여 저장하는 기본 단위
Tuple(== Record): 테이블에서 행을 의미하며, Tuple은 Relation에서 같은 값을 가질 수 없으며 또한 튜플의 수는 Cardinality 라고 한다.
Attribute(== Field): 테이블에서 열을 의미하며 같은 말로는 Column 이라고도 하며 Attribute의 수는 Degree라고도 한다.
식별자, Identifier: 여러개의 집합체를 담고있는 관계형 데이터베이스에서 각각의 구분할 수 있는 논리적인 개념
- 특성
데이터베이스에서 조건에 만족하는 레코드를 찾거나 순서대로 정렬할 때 레코드들을 서로 구문할 수 있는 기준이 되는 Attribute