데이터베이스 기본 개념
데이터베이스(Database, DB)란?
==> 여러 사람이 공유할 목적으로 체계화해 통합, 관리하는 데이터의 집합.
컴퓨터 언어로 제어가 가능하며 앱이나 웹을 통해 공유가 가능하여 전세계 누구나 데이터베이스에 접근하고 편집이 가능하다.
데이터베이스의 특징
실시간 접근성(Real-Time Accessibility)
==> 실시간 처리에 의한 응답이 가능해야 한다.
계속적인 변화(Continuous Evolution)
==> 새로운 데이터의 삽입(Insert), 삭제(Delete), 갱신(Update)로 항상 최신의 데이터를 유지한다.
동시 공용(Concurrent Sharing)
==> 다수의 사용자가 동시에 같은 내용의 데이터를 이용할 수 있어야 한다.
내용에 의한 참조(Content Reference)
==> 데이터베이스에 있는 데이터를 참조할 때 사용자의 요구에 따른 데이터 내용으로 데이터를 찾는다.
데이터베이스(Database, DB) 용어
엔티티(Entity)
==> 사람, 장소, 사물, 사건 등과 같이 독립적으로 존재하면서 고유하게 식별이 가능한 실세계의 객체.
Attribute( =Field)
==> 테이블에서 열을 의미. 같은 말로는 칼럼이라고도 하며 어트리뷰트의 수는 디그리(Degree)라고도 한다.
식별자(Identifier): 여러개의 집합체를 담고있는 관계형 데이터 베이스에서 각각의 구분할 수 있는 논리적인 개념
- 유일성: 하나의 릴레이션에서 모든 행은 서로 다른 키 값을 가져야 한다.
- 최소성: 꼭 필요한 최소한의 속성들로만 키를 구성해야 한다.
후보키(Cardidate Key)
- 릴레이션을 구성하는 속성들 중에서 튜플을 유일하게 식별하기 위해 사용하는 속성들의 부분집합.
- 기본 키로 사용할 수 있는 속성들을 의미.
- 모든 릴레이션에는 반드시 하나 이상의 후보키가 존재한다.
- 유일성과 최소성을 만족시켜야 한다.
기본키(Primary Key)
- 후보키 중에서 선택한 Main Key이다.
- 한 릴레이션에서 특정 튜플을 유일하게 구별할 수 있는 속성.
- null 값을 가질 수 없다.
- 동일한 값이 중복되어 저장될 수 없다.
슈퍼키(Super Key)
- 한 릴레이션 내에 있는 속성들의 집합으로 구성된 키로서 릴레이션을 구성하는 모든 튜플들 중 슈퍼키로 구성된 속성의 집합과 동일한 값을 나타나지 않는다.
- 릴레이션을 구성하는 모든 튜플에 대해 유일성을 만족시키지만, 최소성을 만족시키지 못한다.
- (ex) 학번 + 주민번호를 사용하여 슈퍼키를 만들면 유일성은 만족하지만, 학번이나 주민번호 하나만 가지고도 다른 튜플들을 구분할 수 있으므로 최소성은 만족시키지 못한다.
외래키(Foregin Key)
- 어떤 릴레이션간의 기본키를 참조하는 속성. 테이블들 간의 관계를 나타내기 위해서 사용된다.
- 다른 릴레이션의 기본 키를 그대로 참조하는 속성의 집합을 의미.
- 외래키가 되는 속성과 기본키가 되는 속성의 이름은 달라도 되지만, 외래키의 속성의 도메인과 참조되는 기본키 속성의 도메인은 반드시 같아야 한다. 도메인이 같아여 연관성 있는 투플을 찾기 위한 비교 연산이 가능하기 때문이다.
- 외래키가 없으면 2013년 1월1일에 제품을 주문한 고객의 이름을 검색할 수 없지만, 외래키가 있어서 이 날짜에 주문한 고객이 김현준임을 쉽게 알 수 있다.
- 외래키는 기본키를 참조하지만 기본키가 아니기 때문에 null값을 가질 수 있고, 서로다른 투플이 같은 값을 가질 수 있다.
스키마
데이터 베이스의 구조를 전반적으로 기술한 것.
데이터베이스를 구성하는 데이터 개체(Entity), 속성(Attribute), 관계(Relationship) 등을 정의 한 것을 말한다.
사용자의 관점에 따라 외부 스키마, 개념 스키마, 내부 스키마로 구분한다.
DBMS는 외부 스키마에 명세된 사용자의 요구를 개념 스키마 형태로 변환하고, 이를 다시 내부 스키마 형태로 반환한다.
외부 스키마(사용자 뷰)
사용자의 입장에서 정의한 데이터 베이스의 논리적 구조. 데이터들을 어떤 형식, 구조, 화면을 통해 사용자에게 보여줄 것인가에 대한 명세를 말하며 하나의 데이터베이스에는 여러개의 외부 스키마가 있을 수 있다.
일반 사용자는 SQL을 이용하여 DB를 쉽게 사용할 수 있다.
응용 프로그래머는 C, 자바 등의 언어를 사용하여 DB에 접근한다.
개념 스키마(전체적인 뷰)
데이터베이스의 전체적인 논리적 구조. 모든 이용자가 필요로 하는 데이터를 총합한 조직 전체의 데이터 베이스로 하나만 존재한다.
개체 간의 관계와 제약조건, 데이터 베이스의 접근 권한, 보안 등에 관한 명세를 나타낸다.
데이터 베이스 관리자에 의해서 구성된다.
내부 스키마
물리적 저장장치의 입장에서 본 데이터베이스 구조.
실제로 데이터베이스에 저장될 레코드의 물리적인 구조, 저장 데이터 항목의 표현 방법, 내부 레코드의 물리적 순서 등을 나타낸다.
DBMS
데이터베이스 관리 시스템(DataBase Management System, DBMS)은 데이터베이스를 조작하는 별도의 소프트웨어로,
DBMS를 통해 데이터베이스를 관리하여 응용 프로그램들이 데이터베이스를 공유하고, 사용할 수 있는 환경을 제공한다.
DBMS는 데이터베이스를 구축하는 틀을 제공하고, 효율적으로 데이터를 검색하고 저장하는 기능을 제공한다.
또한 응용 프로그램들이 데이터베이스에 접근할 수 있는 인터페이스를 제공하고, 장애에 대한 복구 기능, 사용자 권한에 따른 보안성 유지 기능 등을 제공한다.
즉, 데이터베이스 내의 정보를 구성하는 컴퓨터 프로그램의 집합으로서,
자료의 중복성을 제거하고 다른 특징들 중에 무결성, 일관성, 유용성을 보장하기 위해서 자료를 제거하고 관리하는 소프트웨어 체계이다.
기능
파일형 데이터베이스에서 관계형 데이터베이스를 거쳐 최근에는 오브젝트 지향 데이터베이스가 주류를 형성하고 있다.
정의 : 데이터에 대한 형식, 구조, 제약조건들을 명세하는 기능이며 정의 및 설명은 카탈로그나 사전의 형태로 저장된다.
구축 : DBMS가 관리하는 기억 장치에 데이터를 저장하는 기능이다.
조작 : 특정한 데이터를 검색하기 위한 질의, 데이터베이스의 갱신, 보고서 생성 기능 등을 포함한다.
공유 : 여러 사용자와 프로그램이 데이터베이스에 동시에 접근하도록 하는 기능이다.
보호 : 하드웨어나 소프트웨어의 오동작 또는 권한이 없는 악의적인 접근으로부터 시스템을 보호한다.
유지보수 : 시간이 지남에 따라 변화하는 요구사항을 반영할 수 있도록 하는 기능이다
종류
3. 관계형 데이터베이스 관리 시스템(RDBMS) 2. NoSQL DBMS 3. 인 메모리 데이터베이스 관리 시스템(IMDBMS)
데이터베이스와 파일시스템의 차이
데이터 베이스
==> 데이터베이스는 조직에 필요한 정보를 얻기 위해 논리적으로 연관된 데이터를 모아 구조적으로 통합해 놓은 것을 말한다.
데이터베이스 시스템은 데이터의 검색과 변경을 주로 수행한다. 여기서 변경은 삽입, 삭제, 수정 등의 작업을 말한다.
통합된 데이터 (Intergrated Data)
여러 곳에서 사용하던 데이터를 통합하여 하나로 저장한 데이터를 말한다.
통합 시 각자 사용하던 데이터의 중복을 최소화하여 데이터의 불일치 현상을 없앤다.
저장된 데이터 (Stored Data)
문서로 보관된 데이터가 아니라 디스크, 데이프 같은 컴퓨터 저장장치에 저장된 데이터를 의미한다.
운영 데이터 (Operational Data)
조직의 목적을 위해 사용되는 데이터로 업무를 위한 검색을 목적으로 저장된 운영데이터를 의미한다.
공용 데이터 (Shared Data)
한사람 또는 한 업무를 위해 사용되는 데이터가 아닌 공동으로 사용하는 데이터를 의미한다.
단점
1. 운영비가 비싸다. 2. DBMS를 거쳐서 진행되기 때문에 처리 속도가 느리다.
3. 일부의 고장이 전체의 고장을 야기하기 때문에 신뢰성의 보장의 문제가 있다.
파일시스템
데이터베이스가 개발되기 전에 데이터 관리를 위해 사용했다.
업무 별 애플리케이션이 개별 데이터를 데이터 파일에 저장/관리하는 시스템이다
기존 파일 시스템의 단점를 보완하기 위해 데이터베이스 시스템이 만들어졌다. 따라서 두 시스템을 비교하여 각 시스템의 특징을 살펴보자.
Data dependency(데이터 종속성)
실제로 파일 데이터의 수정은 빈번히 일어나는 작업인데, File system의 경우 data가 변경될 때마다 프로그램 자체를 수정해야한다.
반면에 DB시스템의 경우, DBMS를 이용해 데이터를 받기 떄문에 변경이 쉽다.
Data redundancy and inconsistency(데이터 중복성 & 비 일관성)
File system의 경우 응용 프로그램 별로 독립된 파일을 가지므로 데이터의 중복 저장이 불가피하며 이로 인해 데이터 값의 불일치가 발생.
DB의 경우 데이터를 조직적으로 통합하여 중복을 없애고 자료를 구조화하였다.
Difficulty in accessing data(데이터 접근이 어려움)
File system은 각각의 작업마다 새로운 프로그램이 필요하기 때문에 필요한 데이터를 편리하고 효율적으로 검색하기 어렵다.
반면에 DB 시스템의 경우는 DBMS를 통해 데이터를 공유하므로 효율성이 높아지며 작업 수정이 쉽다.
Integrity problems(무결성 제약조건)
File system의 특성상 수많은 file을 복제하기 때문에 새로운 제약조건이 발생하였을 때 모든 파일에 제약조건을 추가하기에 어려움.
DBMS는 데이터베이스 내에 저장될 데이터에 대하여 데이터의 타입(type), 길이, 값의 범위 등에 대한 정보를 가지고 있다.
Atomicity of updates(원자성 문제)
File system의 경우 부분적인 update로 인해 데이터베이스가 일관성을 유지하지 못한 상태로 남아있을 수 있다.
예를 들어 계좌이체의 경우 입금과 출금이 모두 일어나야 하는데 어느하나라도 일어나지 발생하지 않으면 큰 문제가 생긴다.
파일시스템은 이런 원자성을 보장하기 어렵다.
데이터베이스 시스템은 데이터를 통합시켜 관리하므로 사용자가 데이터를 관리하기 쉽다. (트랜잭션)
Concurrent access by multiple users
File system의 경우 동시에 여러 유저가 파일에 접근하고 동시에 수정되어 서로가 알고 있는 정보가 다를 수 있다.
DB의 경우 여러 사용자의 요구를 동시적으로 처리할 수 있는 능력을 가지고 있다.
Security problems
File system은 모든 유저에게는 아니지만 일부 유저에게 접근을 허용하는 행위를 하기 어렵다.
DB의 경우 접근 권한을 미리 지정해둘 수 있다. (1,2 program은 접근가능, 3,4번 program은 접근 불가능 이런 식으로)
https://1-day-1-coding.tistory.com/2
데이터베이스 기본 개념은 위 블로그에서 참조하였다.
https://m.blog.naver.com/sundooedu/221301384166
DBMS는 위 블로그 참조
데이터베이스와 파일시스템의 차이는 위 블로그를 참조하였다.
'외부 활동 > JSCODE 데이터베이스 면접' 카테고리의 다른 글
3주차 인덱스 (0) | 2023.11.20 |
---|---|
2주차 면접 예상 질문 (0) | 2023.11.14 |
2주차 : SQL (1) | 2023.11.14 |
1주차 면접 예상 질문 (0) | 2023.11.07 |
OT 및 가이드 (0) | 2023.11.05 |