- 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은 접근 불가능 이런 식으로)
데이터베이스?
데이터의 집합, 여러 명의 사용자나 응용 프로그램이 공유하고 동시에 접근이 가능해야 한다
실시간 접근성(Real-Time Accessibility)
수시적이고 비정형적인 질의(조회)에 대하여 실시간 처리에 의한 응답이 가능해야 한다.
계속적인 변화(Continuous Evolution)
데이터베이스의 상태는 동적이다. 즉 새로운 데이터의 삽입(Insert),삭제(Delete),갱신(Update)로 항상 최신의 데이터를 유지한다.
동시공유(Concurrent Sharing)
데이터베이스는 서로 다른 목적을 가진 여러 응용자들을 위한 것이므로 다수의 사용자가 동시에 같은 내용의 데이터를 이용할 수 있어야 한다.
내용에 의한 참조(Content Reference)
데이터베이스에 있는 데이터를 참조할 때 데이터 레코드의 주소나 위치에 의해서가 아니라, 사용자가 요구하는 데이터 내용으로 데이터를 찾는다.
- DBMS
DataBase Management System
사용자와 데이터베이스를 연결해주는 프로그램
사용자의 요구에 따라 정보를 생성해주고 데이터베이스를 관리해 주는 소프트웨어
- 특징
1. 데이터의 무결성 : 동일한 내용에 서로 다른 데이터를 허용하지 않는 성질을 갖는다
2. 데이터의 일관성 : 삽입, 삭제 , 갱신 , 생성후에도 저장된 데이터가 모순이 없고 동일한 규칙내에 일정해야 한다.
3. 데이터의 회복성 : 장애 발생 시 특정 상태로 복구되어야 한다.
스키마 : 데이터베이스의 구조와 제약조건에 대해 전반적인 명세를 기술한 것
3단계 데이터베이스 구조
데이터베이스를 쉽게 이해하고 이용할 수 있도록 하나의 데이터베이스를 관점에 따라 세 단계로 나눈 것
1. 외부단계(외부 스키마) : 사용자나 응용프로그래머가 각 개인의 입장에사 필요로 하는 데이터 베이스의 논리적 구조를 정의한 것
2. 개념단계 (개념 스키마):
데이터베이스의 전체적인 논리적 구조,
모든 응용 프로그램이나 사용자들이 필요로 하는 데이터를 종합한 조직 전체의 데이터베이스로 하나만 존재한다.
3. 내부단계(내부 스키마):
물리적 저장장치의 입장에서 본 데이터베이스 구조
살제로 저장될 레코드의 형식, 저장 데이터의 항목의 표현 방버브 내부 레코드의 물리적 순서 등을 나타냄
- 논리적 독립성 : 응용 프로그램과 데이터베이스를 독립시켜 데이터의 논리적 구조를 변경시키더라고 응용프로그램은 영향을 받지 않는다.
- 물리적 독립성
응용 프로그램과 보조기억장치 같은 물리적 장치를 서로 독립시킴으로써, 디스크를 추가/변경 하더라도 응용 프로그램은 영향을 받지 않는다,
RDBMS :
RDB 를 생성, 수정, 관리할 수 있는 소프트웨어.
RDB :
(관계형 데이터베이스)
관계형 데이터 모델에 기초를 둔 데이터 베이스. 모든 데이터를 2차원의 테이블 형태로 표현.
즉, 관계형 모델을 기반으로 하는 DBMS 유형.

릴레이션 : 데이터들을 2차원 표로 표현한 것
릴레이션 스키마 : 릴레이션의 이름, 각 속성의 이름과 타입, 그리고 속성 값의 도메인을 정의하는, 즉 릴레이션에 데이터를 넣을 수 있도록 하는 릴레이션 양식
릴레이션 인스턴스 : 릴레이션 스키마에 실제로 저장된 데이터의 집합, 어느 시점에 릴레이션에 있는 튜플들의 집합
차수 : 속성(컬럼)의 개수
카디널리티 : 튜플(행) 의 개수
Key : 무엇인가를 식별하는 고유한 식별자
- 슈퍼키 :
한 릴레이션 내에 있는 속성들의 집합으로 구성된 키를 말한다,
슈퍼키는 릴레이션을 구성하는 모든 튜플들에 대해 유일성은 만족하지만 최소성은 만족하지 못한다.- 후보키 :
속성들 중에서 튜플을 유일하게 식별하기 위해 사용되는 속성들의 부분집합이다.
기본키로 사용될 수 있는 속성들을 말한다
후보키는 유일성(Unique)과 최소성(Minimality)을 모두 만족시켜야 한다.
(유일성) : 하나의 키 값으로 하나의 튜플만을 유일하게 식별할 수 있어야 함
(최소성) : 키를 구성하는 속성 하나를 제거하면 유일하게 식별할 수 없도록 꼭 필요한 최소의 속성으로 구성되어야 함- 기본키 :
후보키 중에서 특별히 선정된 주 키(Main key)
기본키는 중복된 값을 가질 수 없다.
기본키는 한 릴레이션에서 특정 튜플을 유일하게 구별할 수 있는 속성이다
기본키는 Null값을 가질 수 없다. 즉 튜플에서 기본키로 설정된 속성에는 Null 값이 있어서는 안 된다.- 대리키 :
대리키는 후보키가 둘 이상일 때 기본키를 제외한 나머지 후보키를 의미한다. (보조키라고도 한다)- 외래키(Join을 위해서 쓰임)
다른 릴레이션의 기본키를 참조하는 속성 또는 속성들의 집합을 의미한다,
- 도메인 무결성 : 특정 속성값은 그 속성이 정의된 도메인에 속한 값이여야 한다
- 개체 무결성 : 기본키는 NULL이 될 수 없고 중복값을 가질 수 없다.
- 참조 무결성 : 외래키 값은 null 이거나 참조 릴레이션의 기본키 값과 동일해야 한다. 즉 릴레이션은 참조할 수 없는 외래키 값을 가질 수 없다
- (MySQL을 사용했다면) MySQL 엔진에 대해서 설명해주세요.
개념: 스토리지 엔진은 데이터베이스의 물리적 저장 구조, 데이터 액세스 방법 및 관리 방식을 정의한다.
MySQL에서는 여러 가지 스토리지 엔진을 지원하여 사용자가 요구에 맞는 엔진을 선택할 수 있다.
역할: 스토리지 엔진은 데이터의 저장, 읽기, 수정, 삭제와 같은 기본적인 데이터 조작을 처리하며, 트랜잭션 관리, 데이터 무결성, 인덱스 관리 등의 기능도 수행한다.
- (MySQL을 사용했다면) InnoDB에 대해 설명해주세요.
Mysql의 default 엔진, 트랜잭션과 외래키 지원
- ACID 준수: InnoDB는 원자성, 일관성, 고립성, 지속성을 보장하여 데이터의 무결성을 유지한다.
- 트랜잭션 지원: InnoDB는 트랜잭션을 지원하며, COMMIT과 ROLLBACK을 통해 데이터의 일관성을 보장한다,
- 행 잠금: InnoDB는 행 수준의 잠금을 지원하여 높은 동시성을 제공하며, 여러 사용자가 동시에 데이터에 접근할 수 있도록 한다.
- 외래 키 지원: 데이터베이스 간의 관계를 정의할 수 있는 외래 키를 지원하여 데이터 무결성을 유지한다.
- 버퍼 풀: InnoDB는 데이터를 메모리에 캐시하여 성능을 향상시키는 버퍼 풀을 사용한다.
- 크래시 복구: InnoDB는 시스템 크래시 발생 시 자동으로 복구 기능을 제공하여 데이터 손실을 방지한다.