이 글은 데이터베이스 스터디 중 데이터베이스 기본개념 관련 질문을 정리한 것입니다.
파일시스템과 데이터베이스의 차이점에 대해서 설명해주세요.
응용 프로그램의 관점에서 봤을 때, 두 데이터 저장기법의 가장 큰 차이점은, 먼저 파일 시스템은 데이터가 중복되고 프로그램이 데이터 구조에 종속되는 반면, 데이터베이스에서 데이터는 중복을 통제할 수 있으며 프로그램이 데이터 독립적이 된다는 점입니다.
동시 공유라는 특징에서는, 파일 시스템에서는 파일에 대해 오직 하나의 프로그램만 접근이 가능한 방면, 데이터베이스는 여러 프로그램이 동시에 데이터에 접근 가능하다는 차이점이 존재합니다.
데이터베이스의 특징에 대해 설명해주세요.
DB의 특징 중 첫번째는 ‘실시간 접근’입니다. DB는 사용자의 요청에 대해 실시간으로 응답할 수 있어야 합니다.
두번째는 ‘지속적인 변화’입니다. DB는 정적인 존재가 아닌, 변화하는 현실 세계를 반영할 때 의미가 있기 때문에, 삽입 & 삭제 & 수정 과 같은 기능을 제공함으로써 변화할 수 있어야 합니다.
세번째는 ‘동시 공유’입니다. DB는 다수에 유저에 의해 사용되기 때문에, 서로 다른 데이터를 동시에 접근 가능해야하며, 동일한 데이터에 대해서도 다수의 사용자가 동시 접근가능해야 합니다.
마지막 특징은 ‘내용 참조’입니다. DB는 데이터에 대해 위치 정보가 아닌 데이터가 갖고 있는 내용 또는 값을 통해 참조될 수 있어야 합니다.
DBMS는 뭘까요? 특징에 대해 설명해주세요.
DBMS는 DB를 관리하는 시스템을 말합니다. 여기서 DB란, 여러 사용자가 공유하여 사용할 수 있도록 통합해서 저장한 운영 데이터의 집합을 의미합니다. DBMS는 이러한 DB를 관리하기 위해, DB 구조를 정의하거나 수정하는 정의 기능을 제공합니다. 또한, 데이터에 대한 CRUD 연산 기능을 제공하며, 데이터 무결성을 보장하기 위한 기능들을 제공합니다.
스키마가 뭘까요? 3단계 데이터베이스 구조에 대해 설명해주세요.
스키마는 데이터베이스에 저장되는 데이터 구조와 제약조건을 정의한 것입니다. 다만, 엄밀히 말하자면, 앞에서 말해서 말한 것은 개념 스키마에 해당하며, 3단계 데이터베이스 구조에 따라 외부 스키마, 개념 스키마, 내부 스키마로 나눠집니다.
3단계 데이터베이스 구조에 대해 설명하자면, 데이터 독립성을 확보하기 위해 만들어진 구조입니다. 3단게에 대해 세부적으로 설명하겠습니다.
먼저 개별 사용자가 데이터베이스를 바라보는 관점을 나타내는 외부 단계가 있습니다. 각 사용자의 필요사항이 다르기 때문에 외부 단계는 각 사용자 마다 다릅니다. 이후, 개별 사용자의 생각하는 스키마를 조직 전체의 관점에서 통합한 단계를 개념 단계라고 말합니다.
개념 단계에서는 데이터 베이스에 실제 어떤 데이터 구조가 저장되고, 각 데이터들의 관계를 정의하고, 데이터에 대한 접근 권한을 정의하는 단계입니다.
마지막으로, 저장 장치의 관점에서 데이터베이스를 바라보는 내부 단계가 있습니다. 내부 단계에서는 데이터베이스가 물리적으로 어떻게 저장될지를 정의합니다.
데이터 독립성에 대해서 설명해주세요.
데이터 독립성은 데이터베이스 3단계 구조에 속한, 각 계층이 변경되더라도 다른 계층에는 영향을 주지 않도록 하는 것입니다. 데이터 독립성의 목적은 유지보수 비용을 절감하고 데이터 복잡도를 낮추며 중복된 데이터를 줄이기 위함입니다. 데이터 독립성은 2가지로 나눠집니다.
첫번째는 개념 스키마와 외부 스키마 간의 독립성에 대한 논리적 데이터 독립성입니다. 만약 개념 스키마가 변경될 경우 외부/개념 매핑 정보만 변경해두면 외부 스키마가 영향을 받지 않도록 하는 것입니다.
두번째는 내부 스키마와 개념 스키마 간의 독립성에 대한 물리적 데이터 독립성 입니다. 앞서 말한 것과 유사하게, 내부 스키마가 변경될 경우, 개념/내부 매핑 정보만 변경해두면 각 계층이 영향을 받지 않도록 하는 것을 말합니다.
RDBMS(관계형 데이터베이스 관리시스템)는 뭘까요?
RDBMS는 관계형 데이터베이스를 관리하는 시스템을 말합니다.. 관계형 데이터베이스(RDB)란 테이블, 레코드 및 열로 구성된 여러 데이터 세트의 집합입니다. RDB에서 테이블들은 관계를 맺을 수 있으며, 여기서 관계는 테이블 간의 상호작용을 기반으로 설정된 논리적 연결을 의미합니다.
릴레이션 스키마와 릴레이션 인스턴스에 대해서 설명해주세요.
릴레이션 스키마는 릴레이션의 이름과 포함된 모든 속성의 이름으로 정의하는 릴레이션의 논리적 구조입니다. DBMS에서는 내부적으로 DDL을 사용하여 정의합니다. 릴레이션 스키마는 한번 정의된 이후 자주 변경되지 않기 때문에 정적이라는 특성을 갖습니다.
릴레이션 인스턴스는 특정 시점을 기준으로 릴레이션에 존재하는 튜플의 집합을 의미합니다. 릴레이션 인스턴스에 포함된 튜플은 릴레이션 스키마에서 정의하는 각 속성에 대응되는 실제 값들로 구성됩니다. 릴레이션 인스턴스는 DBMS에서 데이터 조작어를 통해 변경되며, 동적인 특성을 갖습니다.
릴레이션의 차수와 카니덜리티에 대해 설명해주세요.
릴레이션의 차수는 릴레이션이 가지고 있는 속성의 전체 개수를 의미합니다. 속성은 일반적으로 자주 변경되지 않기 때문에 정적인 특성을 갖습니다.
릴레이션의 카디널리티는 릴레이션에서 튜플의 전체 개수를 의미합니다. 튜플은 삽입, 삭제 연산에 의해 변경될 수 있기 때문에, 카디널리티는 동적이라는 특성을 갖습니다.
키(Key)에 대해서 설명해주세요. (슈퍼키, 후보키, 기본키, 대리키, 외래키)
슈퍼키는 유일성의 특성을 갖는 속성 집합입니다. 여기서 유일성이란 튜플마다 다른 값의 키를 가져야 함을 의미합니다.
후보키는 슈퍼키 중에서 최소성을 가진 속성 집합을 의미합니다. 최소성이란 유일성을 갖기 위해 꼭 필요한 최소한의 속성들로만 키를 구성하는 특성을 말합니다.
기본키는 후보키 중에서 선택된 키말하며, 대리키는 후보키 중에서 기본키로 선택되지 않은 키를 말합니다.
외래키는 다른 릴레이션의 기본키를 그대로 참조하는 속성의 집합을 말합니다. 키는 릴레이션에 포함된 튜플들을 유일하게 구별해주는 역할 수행하는 속성의 집합을 말합니다. 하나의 릴레이션에는 동일한 튜플이 존재해서는 안되기 때문에, 각 튜플을 구별할 수 있는 기준이 필요합니다. 키가 이러한 역할을 수행합니다.
무결성 제약조건에 대해서 설명해주세요. (도메인 무결성, 개체 무결성, 참조 무결성)
무결성이란 데이터의 결함이 없는 상태를 말하며, 데이터를 기존에 의도한대로 유효하게 유지하는 것을 의미합니다. 이러한 무결성을 지키기 위한 제약조건으로는 도메인, 개체, 참조 무결성등이 있습니다.
도메인 무결성 제약조건이란 튜플의 속성에 담겨진 값은 정의된 도메인에 부합하는 값이어야 한다는 것입니다. 예를 들어 속성의 도메인이 int라면 그 값으로 오직 int 타입의 데이터만 저장되어야 합니다.
개체 무결성 제약조건은 기본키를 구성하는 모든 속성은 널 값을 가지면 안된다는 제약조건입니다. 릴레이션은 각 튜플을 유일하게 구별하고, 튜플에 쉽게 접근할 수 있도록 해야되는 데요, 개체 무결성 제약조건은 이러한 특성을 유지하기 위한 조건입니다.
다음으로 참조 무결성이 있습니다. 참조 무결성이란 외래키는 참조할 수 없는 값을 가질 수 없다는 규칙입니다. 외래키가 자신이 참조하는 릴레이션의 기본키와 상관없는 값을 갖게 되면, 두 릴레이션을 연관시킬 수 없기 때문에, 외래키의 본래 목적을 상실하게 됩니다. 참조 무결셩 제약조건은 이러한 외래키의 목적을 유지하기 위한 조건입니다.
'CS > 데이터베이스' 카테고리의 다른 글
[DB] SQL 개요 (0) | 2024.01.17 |
---|---|
[DB] Real MySQL 8.0 - 4.1 MySQL 아키텍처 (0) | 2024.01.12 |
[DB] 데이터 모델링 (0) | 2024.01.11 |
[DB] 스키마와 데이터베이스 3단계 구조 (0) | 2024.01.10 |
[DB] 데이터베이스란? (2) | 2024.01.10 |