파일 시스템은 데이터를 파일 형태로 저장하며, 이러한 파일들은 디렉토리 구조로 관리됩니다. 반면, 데이터베이스는 데이터를 테이블 형태로 저장되며 DBMS가 이를 관리합니다. 파일시스템은 60년대에 사용되던 기술로, 파일시스템의 단점을 데이터베이스가 보완해줍니다. 데이터베이스는 데이터 중복성 관리, 무결성 유지, 트랜잭션 처리 등의 기능을 제공하므로, 대량의 데이터를 효율적으로 관리하는 데 유용합니다.
데이터베이스는 실시간 접근성, 지속적인 변화, 동시 공유, 내용 참조 등의 특징을 지니고 있습니다.
실시간으로 여러 사용자의 동시 요청에 즉각적인 응답을 할 수 있고, 변화에 대해서 즉각적인 조치할 수 있습니다. 이러한 특징으로 대량의 데이터를 효율적으로 관리할 수 있습니다.
DBMS는 데이터베이스를 관리하는 소프트웨어입니다. DBMS는 데이터의 저장, 검색, 갱신을 처리하며, 특징으로 데이터의 독립성, 보안, 일관성, 동시 제어, 무결성 등이 있습니다.
스키마는 데이터베이스의 구조와 제약 조건을 정의한 것입니다. 3단계 데이터베이스 구조는 외부 스키마, 개념 스키마, 내부 스키마로 구성되어 있습니다. 외부 스키마는 개별 사용자 또는 응용 프로그램의 관점에서 데이터베이스를 정의하고, 개념 스키마는 전체 데이터베이스의 논리적 구조를 정의하며, 내부 스키마는 데이터의 물리적 저장 방법을 정의합니다.
3단계 데이터베이스 구조의 목적은 데이터 독립성 실현입니다.
데이터 독립성은 하위 스키마를 변경하여도 상위 스키마가 영향을 받지않는 특성이 있습니다. 데이터 독립성은 물리적 데이터 독립성과 논리적 데이터 독립성으로 나뉩니다.
물리적 데이터 독립성은 내부 스키마(인덱스, 저장방식 등)가 변경되더라도 개념 스키마(테이블 구조)와 외부 스키마(사용자 뷰)에 영향을 미치지 않는 것을 의미합니다.
논리적 데이터 독립성은 개념 스키마가 변경되더라도 외부 스키마에게 영향을 주지 않는 것을 의미합니다.
데이터 독립성을 통해 데이터베이스는 물리적인 구조와 논리적인 구조의 변경에 대해 유연하게 대응할 수 있게 됩니다.
RDBMS는 관계형 모델을 기반으로 하는 DBMS입니다. RDBMS는 데이터를 테이블의 형태로 저장하며, 테이블 간의 관계를 통해 데이터를 조직화합니다. RDBMS는 SQL을 통해 데이터를 조작하고, 트랜잭션 처리, 무결성 유지 등의 기능을 지원합니다.
릴레이션 스키마
릴레이션의 이름과 릴레이션에 포함된 모든 속성의 이름으로 정의하는 릴레이션의 논리적 구조
릴레이션 인스턴스
릴레이션 스키마에 따라 특정 시점에 릴레이션에 존재하는 튜플의 집합
릴레이션의 차수는 릴레이션에 포함된 열(속성)의 개수를 의미하며, 카디널리티는 릴레이션에 포함된 행(튜플)의 개수를 의미합니다.
키는 릴레이션에서 튜플들을 구별하는 역할을 하는 속성 또는 속성들의 집합입니다.
-유일성
한 릴레이션에서 모든 튜플은 서로 다른 키 값을 가져야 함.
-최소성
꼭 필요한 최소한의 속성들로만 키를 구성함.
- 슈퍼키 : 유일성을 만족하는 속성 또는 속성들의 집합
- 유일성
키가 갖추어야 하는 기본 특성으로, 하나의 릴레이션에서 키로 지정된 속성 값은 투플마다 달라야 한다 는 의미다.- 후보키 : 유일성과 최소성을 만족하는 속성 또는 속성들의 집합.
- 최소성
꼭 필요한 최소한의 속성들로만 키를 구성하는 특성.- 슈퍼키 중에서 최소성을 만족하는 것이 후보키.
- 기본키 : 후보키 중에서 기본적으로 사용하기 위해 선택한 키
- 기본키를 선택할 때 고려할 기준
- Null 값을 가질 수 있는 속성이 포함된 후보키는 기본키로 부적합.
- 값이 자주 변경될 수 있는 속성이 포함된 후보키는 기본키로 부적합.
- 단순한 후보키를 기본키로 선택.
단순한 후보키 : 자릿수가 적은 정수나 단순 문자열인 속성으로 구성되거나, 구성하는 속성의 개 수가 적은 후보키- 대체키 : 기본키로 선택되지 못한 후보키
- 외래키 : 다른 릴레이션의 기본키를 참조하는 속성 또는 속성들의 집합
- 외래키가 다른 릴레이션의 기본키 외에 대체키를 참조하는 것도 가능. 다만 외래키는 다른 릴레이션의 기본 키를 참조하는 경우가 많음.
- 기본키가 아니면 유일한 투플을 구별하기 어렵기 때문에 외래키는 반드시 다른 릴레이션의 기본키를 참조해야 함.
- 외래키를 가진 릴레이션을 '참조하는 릴레이션'이라 하고, 기본키를 가진 릴레이션을 '참조되는 릴레이션'이라 함.
- 외래키가 되는 속성과 기본키가 되는 속성의 이름은 달라도 되지만, 외래키 속성의 도메인과 참조되는 키본키 속 성의 도메인은 반드시 같아야 함.
- 하나의 릴레이션에는 외래키가 여러 개 존재할 수 있음. 외래키를 기본키로 사용할 사용할 수도 있고 외래키를 포함하여 기본키를 구성할 수도 있음. 참조하는 릴레이션과 참조되는 릴레이션이 같을 수 있음. 즉, 외래키 자신이 속한 릴레이션의 기본키를 참조하도 록 외래키를 정의할 수도 있음.
- 외래키는 기본키를 참조하지만 기본키가 아니기 때문에 널 값을 가질 수 있음.
무결성 제약조건은 데이터베이스에서 데이터의 정확성과 일관성을 유지하기 위한 규칙입니다.
도메인 무결성
속성 값이 해당 속성의 도메인에 속하는 값이어야 함을 보장합니다.
개체 무결성
각 튜플이 유일한 기본키 값을 가져야 하며, 그 기본키는 null 값이 아니어야 합니다.
참조 무결성
외래키는 참조할 수 없는 값을 가질 수 없음을 의미합니다. 외래키 값이 NULL이거나 참조하는 릴레이션의 기본키 값 중 하나와 같아야 함을 보장합니다. 하지만
저는 MySQL를 사용했습니다.
MySQL은 가장 널리 사용되는 오픈 소스 RDBMS입니다. 오픈 소스인 만큼 사용자들 간의 커뮤니티가 형성되어 있고, 다양한 운영체제에서 작동이 가능하다는 이점이 있습니다. 또한, InnoDB 및 NDB Cluster 저장 엔진을 통해 ACID를 준수하는 트랜잭션을 지원합니다.
1) InnoDB
트랜잭션 기능을 제공해 동시성과 무결성을 높이고 크래시 복구 기능을 지원해 시스템이 예기치 않게 중단되더라도 데이터의 일관성을 보장합니다.
2) MyISAM
트랜잭션 기능을 제공하지는 않지만 대신 간단한 읽기 작업에 최적화 되어 있습니다. '풀 텍스트 검색' 기능을 제공하여 트랜잭션이 필요하지 않은 읽기 중심의 애플리케이션에 적합합니다.
3) NDB Cluster
데이터를 여러 컴퓨터에 분산 저장해 높은 안정성과 성능을 제공합니다. 하나의 컴퓨터가 문제를 일으킬 경우 다른 컴퓨터가 작업을 계속할 수 있기 때문에 중단 없이 계속해서 서비스를 제공해야 하는 대규모 어플리케이션에 적합합니다.