
공유하여 사용할 수 있도록 통합해서 저장한 운영 데이터의 집합입니다.
DBMS는 사용자 또는 애플리케이션으로부터 데이터베이스를 생성하거나 데이터베이스에 데이터를 저장, 수정, 삭제 등의 작업을 수행할 수 있게 해주는 소프트웨어입니다.
스키마는 데이터베이스의 구조나 제약 조건등에 대한 명세라고 말할 수 있습니다.
데이터베이스는 3단계 구조로 설명할 수 있습니다.
외부스키마는 사용자단에서 데이터베이스를 바라보는 뷰를 정의합니다.
개념스키마는 전체 데이터베이스의 구조를 정의합니다.
내부스키마는 데이터의 물리적 저장구조를 정의합니다.
데이터베이스의 물리적 또는 논리적 구조 변경이 상위 레벨의 스키마나 애플리케이션에 영향을 미치지 않도록 보장하는 성질입니다.
데이터 독립성은 3단계 데이터베이스 구조의 특징입니다.
논리적 데이터 독립성은 개념 스키마가 변경되어도 외부 스키마에 영향을 주지 않는 것을 뜻합니다.
애플리케이션에 영향을 주지 않고 데이터베이스의 논리적 구조를 변경할 수 있는 것을 뜻합니다.
물리적 데이터 독립성은 내부 스키마가 변경되어도 개념 스키마에 영향을 주지 않는 것을 뜻합니다.
데이터베이스의 논리적 구조에 영향을 주지 않고 물리적 저장 장치를 변경할 수 있는 것을 뜻합니다.
RDBMS는 관계 데이터 모델을 기반으로 데이터를 구조화하고 관리하는 DBMS입니다.
데이터는 릴레이션(테이블) 표현되며 릴레이션(테이블) 간에는 관계를 맺을 수 있습니다.
릴레이션 스키마는 릴레이션의 속성, 도메인, 차수등을 정의한 것입니다.
릴레이션 인스턴스는 릴레이션 스키마에 정의된대로 저장된 데이터를 뜻합니다.
릴레이션에 저장된 하나의 행을 튜플이라고 부릅니다.
릴레이션에서 차수란 속성의 개수를 뜻합니다.
예를들어 학생 릴레이션에 나이, 이름, 학교 등의 속성이 있다면 차수는 3입니다.
카디널리티는 릴레이션에 저장된 튜플의 수를 뜻합니다.
튜플들은 서로 중복되지 않는 특징이 있습니다.
키는 릴레이션에서 특정한 튜플을 식별할때 사용하는 것입니다.
기본키는 후보키중 하나가 선택되어 투플의 식별자로 쓰이는 대표키 입니다.
외래키는 다른 릴레이션의 기본키는 참조하는 키입니다.
외래키를 통해 릴레이션(테이블)간 관계를 맺을 수 있습니다.
슈퍼키는 투플을 유일하게 식별할 수 있는 모든 속성 집합입니다.
후보키는 투플을 유일하게 식별할 수 있는 최소 속성 집합입니다.
대체키는 기본키로 선정되지 않은 키입니다.
대리키는 마땅한 기본키가 없을때 일련번호와 같이 속성을 추가하여 그것을 키로 삼는 키입니다. 인조키라고도 불립니다.
무결성 제약조건이란 DB에 저장된 데이터들이 일관성있고 정확하게 관리되기 위한 규칙입니다.
도메인 무결성 제약 조건은 튜플의 값은 속성의 도메인에 해당하는 값만을 가져야하는 조건입니다.
개체 무결성 제약 조건은 기본키는 null값을 가져서는 안된다는 조건입니다.
참조 무결성 제약 조건은 외래키는 참조하는 테이블의 기본키와 일치해야한다는 조건입니다.
주로 MySQL을 사용했습니다. MySQL 서버는 MySQL 엔진, 스토리지 엔진으로 이루어져 있습니다.
비지니스 로직 구현시 트랜잭션 처리가 필요했기에, 스토리지 엔진으로 innoDB 엔진을 사용했었습니다.
MySQL 엔진은 사용자가 요청한 파서를 통해 SQL을 분석, 파싱하고, 옵티마이저를 통해 SQL 실행 계획을 최적화한 다음, 스토리지 엔진을 호출하여 데이터를 읽고 쓰는 역할을 합니다.
InnoDB는 레코드를 기본키 순으로 정렬해서 저장하고, 기본키에 대한 인덱스를 자동 생성해주기 때문에, 기본키를 통한 범위 검색에 유리합니다. 또한 InnoDB는 레코드의 여러 버전을 유지할 수 있게 해주는 MVCC라는 기술을 통해 트랜잭션이 가능하게 해줍니다.
추가로 버퍼풀이라는 공간에 인덱스 정보를 캐싱 해두거나 쓰기 지연 용도로도 사용하기에 I/O를 줄일 수 있다는 장점이 있습니다.
✳️ 참고 자료