Contents
Java 8 - 날짜 관련 클래스
   Jun 1, 2023     4 min read

데이터베이스 1주차 정리

⚓️서론

데이터베이스 스터디를 들어갔다. 스터디에서 데이터베이스에 관한 내용을 공부하고 면접식으로 매주 진행한다.

면접을 준비해 매주 과제를 정리해서 블로그에 올려보자.


1주차 과제

면접 예상 질문

  • 파일시스템과 데이터베이스의 차이점에 대해서 설명해주세요.

    파일 시스템은 데이터를 파일 단위로 서버에 저장한다. 각각의 컴퓨터는 LAN(Local Area Network)을 통하여 파일 서버에 연결되어있고, 파일 서버에 저장된 데이터를 사용하기 위해 각 컴퓨터의 응용프로그램에서 열기(open)/닫기(close)를 요청한다. 파일 시스템은 각 응용 프로그램이 독립적으로 파일을 다루기 때문에 데이터가 중복 저장될 가능성이 있고, 동시에 파일을 다루기 때문에 데이터의 일관성이 훼손될 수 있다.

    데이터베이스는 데이터를 통합 관리하는 시스템이다. 데이터베이스 시스템은 클라이언트-서버 시스템으로, DBMS가 설치되어 데이터를 가진 쪽 서버(server)라고 하고, 외부에서 데이터를 요청하는 쪽을 클라이언트라고한다.

    답 :

    파일시스템은 파일을 저장하고 관리하는 운영 체계입니다. 데이터베이스는 파일시스템과 달리 구조화된 데이터를 저장하고 관리하는 시스템입니다. 데이터베이스는 데이터의 무결성과 일관성을 보장하며, 복잡한 쿼리와 데이터 관계를 지원합니다.

    구분파일시스템DBMS
    데이터 정의응용프로그램DBMS
    데이터 저장파일 시스템데이터베이스
    데이터 접근 방법응용 프로그램이 파일에 직접 접근응용 프로그램이 DBMS에 파일 접근을 요청
    사용언어자바,C++, 등자바, C++, 등과 SQL
    CPU/주기억장치 사용적음많음
  • 데이터베이스의 특징에 대해 설명해주세요.
    • 실시간 접근성(real time accessibility)
      • 데이터 베이스는 실시간으로 서비스 된다. 사용자가 데이터를 요청하면 몇 시간이나 며칠 뒤에 결과를 전송하는 것이 아니라 수 초 내에 결과를 서비스한다. 실시간이란 사용자가 요청하는 순간의 실제데이터를 서비스하는 것을 말한다.
    • 계속적인 변화(continuous change)
      • 데이터베이스에 저장된 내용은 어느 한순간의 상태를 나타내지만, 데이터 값은 시간에 따라 항상 바뀐다. 데이터베이스는 insert, delete,update 등의 작업으로 바뀐 데이터 값을 저장한다.
    • 동시 공유(concurrent sharing)
      • 데이터베이스는 서로 다른 업무 또는 여러 사용자에게 동시에 공유된다. 동시(concurrent)는 병행이라고도 하며, 데이터베이스에 접근하는 사용자 데이터 요청 프로그램이 동시에 여러개 있다는 의미이다.
    • 내용에 따른 참조(reference by content)
      • 데이터베이스에 저장된 데이터는 데이터의 물리적인 위치가 아니라 데이터 값에 따라 참조된다. 사용자가 원하는 데이터를 얻기 위해 데이터 값을 사용하여 조건을 제시하면 데이터베이스는 이에 해당하는 데이터를 검색해 준다.
  • DBMS는 뭘까요? 특징에 대해 설명해주세요.
    1. 데이터중복 가능성 최소 : 데이터를 공유하여 중복 가능성을 최소화
    2. 데이터 일관성 : 데이터의 일관성을 유지
    3. 데이터 독립성 : 데이터구조가 변경되더라도 프로그램을 수정할 필요가 없다.
  • 스키마가 뭘까요? 3단계 데이터베이스 구조에 대해 설명해주세요.

    스키마는 그리스어에서 유래된 단어로 조직, 구조를 의미한다.

    3단계 데이터베이스 구조는 외부 단계, 개념 단계, 내부 단계로 나뉘며 각 단계는 외부 스키마, 개념스키마, 내부 스키마로 구성되어있다.

    • 외부 단계
      • 일반 사용자나 응용프로그래머가 접근하는 계층으로 전체 데이터베이스 중에서 하나의 논리적인 부분을 의미한다. 여러 개의 외부 스키마가 있을 수 있다.
      • 외부 스키마는 서브 스키마라고도 불리며, 뷰(view)의 개념이다. 개념 스키마 중 사용자에게 필요한 부분 스키마를 의미한다.
    • 개념 단계
      • 전체 데이터베이스의 정의를 의미한다. 통합 조직별로 하나만 존재하며 DBA가 관리한다. 즉 하나의 데이터베이스에는 하나의 개념 스키마가 있다.
      • 개념 스키마는 전체 데이터베이스의 정의를 말하는 것으로 통합 조직별로 하나만 존재한다. 저장 장치에 독립적으로 기술되며, 데이터와 관계(relationship), 제약사항, 무결성에대한 내용이 포함된다.
    • 내부 단계
      • 물리적 저장 장치에 데이터베이스가 실제로 저장되는 방법의 표현이다. 내부 스키마는 하나이며, 인덱스, 데이터 레코드의 배치 방법, 데이터 압축 등에 관한 사항이 포함된다.
  • 데이터 독립성에 대해서 설명해주세요.
    • 3단계 데이터베이스 구조에서 하위 단계의 내용을 추상화하여 상위 단계에 그 세부 사항을 숨김으로써 한 단계 내의 변경에 대해서 다른 단계와 상호 간섭이 없도록 하는 것이다.
      1. 논리적 데이터 독립성 : 외부 단계와 개념 단계 사이의 독립성으로, 개념 스키마가 변경되어도 외부 스키마에는 영향을 미치지 않도록 지원한다.
      2. 물리적 데이터 독립성 : 개념 단계와 내부 단계 사이의 독립성으로, 저장 장치 구조 변경과 같이 내부 스키마가 변경되어도 개념 스키마에 영향을 미치지 않도록 지원한다.
  • RDBMS(관계형 데이터베이스 관리시스템)는 뭘까요?
    • 관계형 데이터베이스 시스템은 사용자들이 데이터에 접근하기 쉬운 테이블 형태로 데이터 간의 관계를 표현한 데이터베이스이다.
  • 릴레이션 스키마와 릴레이션 인스턴스에 대해서 설명해주세요.
    • 릴레이션
      • 관계 데이터 모델의 핵심적인 개념으로 행과 열로 구성된 테이블을 말한다.
    • 릴레이션 스키마
      • 관계 데이터베이스의 릴레이션이 어떻게 구성되는지 어떤 정보를 담고 있는지에 대한 기본적인 구조를 정의한다.
    • 릴레이션 인스턴스
      • 릴레이션 스키마에 실제로 저장되는 데이터의 집합을 말한다.
  • 릴레이션의 차수와 카니덜리티에 대해 설명해주세요.
    • 차수
      • 릴레이션 또는 테이블에 있는 어트리뷰트 또는 컬럼의 개수
    • 카디널리티
      • 릴레이션이나 테이블에서 튜플 또는 행의 개수를 의미.
  • 키(Key)에 대해서 설명해주세요. (슈퍼키, 후보키, 기본키, 대리키, 외래키)
    • 슈퍼키
      • 튜플을 유일하게 식별할 수 있는 하나의 속성 혹은 속성의 집합이다.
    • 후보키
      • 튜플을 유일하게 식별할 수 있는 하나의 속성 혹은 속성의 집합으로, 속성의 최소 집합이다.
    • 기본키
      • 여러 후보키 중 하나의 선정하여 대표로 삼는 키를 말한다.
    • 대리키
      • 일련번호 같은 가상의 속성을 만들어 기본키로 삼는 것을 말한다.
    • 외래키
      • 다른 릴레이션의 기본키를 참조하는 속성을 말한다.
  • 무결성 제약조건에 대해서 설명해주세요. (도메인 무결성, 개체 무결성, 참조 무결성)
    • 도메인 무결성 제약조건
      • 모든 튜플은 릴레이션 스키마에 정의된 각 속성의 도메인에 지정된 값만을 가져야 한다.
    • 개체 무결성 제약조건
      • 기본키는 NULL 값을 가져서는 안 되며, 릴레이션 내에 오직 하나의 값만 존재해야 한다.
    • 참조 무결성 제약조건
      • 자식 릴레이션의 외래키는 부모 릴레이션의 기본키와 속성의 도메인이 동일해야 하며, 자식 릴레이션의 값 변경 시 부모 릴레이션의 값에 제약을 받는다.
  • 사용했던 데이터베이스에 대해서 설명해주세요. (오라클DB, MySQL, MariaDB, MongoDB 등)
    • (MySQL을 사용했다면) MySQL 엔진에 대해서 설명해주세요.

      MySQL엔진은 클라이언트로부터의 접속 및 쿼리 요청을 처리하는 커넥션 핸들러와 SQL 파서 및 전처리기, 쿼리의 최적화된 실행을 위한 옵티마이저가 중심을 이룬다. 또한 MySQL은 표준 SQL(ANSI SQL)문법을 지원하기 때문에 표준 문법에 따라 작성된 쿼리는 타 DBMS와 호환되어 실행될 수 있다.

    • (MySQL을 사용했다면) InnoDB에 대해 설명해주세요.

      InnoDB는 MySQL에서 사용할 수 있는 스토리지 엔진 중 거의 유일하게 레코드 기반의 잠금을 제공하며, 그 때문에 높은 동시성 처리가 가능하고 안정적이며 성능이 뛰어 나다.