본문 바로가기

CS/DB

[DB 스터디 1주차] 데이터베이스 & 관계형 데이터베이스 기본 개념

목차

    📌 데이터베이스 & 관계형 데이터베이스 기본 개념

     

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

     

    File System VS Database

      File System Database
    1. 데이터 종속성 데이터가 변경될 때마다 프로그램 자체를 수정해야 함 DBMS를 이용해 데이터를 받아 변경이 쉬움
    2. 데이터 중복성 & 비일관성 프로그램 별로 독립된 파일을 가짐
    -> 중복저장, 데이터 값의 불일치
    중복을 없애고 자료를 구조화
    3. 데이터 접근 각 작업마다 새로운 프로그램이 필요하여 필요한 데이터를 편리하고 효율적으로 검색하기 어려움. 데이터를 공유하므로 효율성 높음.
    작업 수정 쉬움
    4. 무결성 제약조건 새로운 제약이 발생할 때, 모든 파일에 제약조건 추가하기 어려움 DB 내 저장될 데이터에 대하여 데이터의 타입/길이/값의 범위 등에 대한 정보를 가지고 있음.
    5. 원자성 부분적인 업데이트로 인해, 일관성을 유지하지 못한 상태일 수 있음.
    원자성 보장 x
    데이터 통합시켜 관리
    -> 데이터 관리 용이
    6. 여러 사용자 여러 유저가 파일에 접근, 동시에 수정됨.
    서로 알고 있는 정보 다를 수 있음.
    여러 사용자의 요구를 동시적으로 처리 가능.
    7. 보안 특정 유저에게만 부분적인 접근 허용하기 어려움 특정 유저에게 접근 권한을
    미리 지정할 수 있음.

    Q) 데이터베이스의 특징에 대해 설명해주세요.

     

    DB의 특징

     

    • 실시간 접근성(Real-Time Accessibility)
      수시적이고 비정형적인 질의(조회)에 대하여 실시간 처리에 의한 응답이 가능해야 한다.
    • 계속적인 변화(Continuous Evolution)
      데이터베이스의 상태는 동적이다. 즉 새로운 데이터의 삽입(Insert),삭제(Delete),갱신(Update)로 항상 최신의 데이터를 유지한다.
    • 동시공용(Concurrent Sharing)
      데이터베이스는 서로 다른 목적을 가진 여러 응용자들을 위한 것이므로 다수의 사용자가 동시에 같은 내용의 데이터를 이용할 수 있어야 한다.
    • 내용에 의한 참조(Content Reference)
      데이터베이스에 있는 데이터를 참조할 때 데이터 레코드의 주소나 위치에 의해서가 아니라, 사용자가 요구하는 데이터 내용으로 데이터를 찾는다.

     

    Q) DBMS는 뭘까요? 특징에 대해 설명해주세요

    DBMS

    • 데이터베이스를 관리하고 운영하는 소프트웨어

     

    DBMS의 특징

    • 데이터 무결성 : 부적절한 자료가 입력되어 동일한 내용에 대해 서로 다른 데이터가 저장되는것을 허용하지 않는 성질
    • 데이터 일관성 : 삽입, 삭제 , 갱신 , 생성후에도 저장된 데이터가 모순이 없고 동일한 규칙내에 일정해야하는 성질
    • 데이터 회복성 : 장애가 발생했을때 특정 상태로 복구되어야하는 성질
    • 데이터 보안성 : 불법적인 노출과 변경으로부터 보호하는 성질
    • 데이터 효율성 : 응답시간 , 저장공간 활용들이 최적화 되어야하는 성질

    Q) 데이터 독립성에 대해서 설명해주세요.

     

    데이터 독립성

    • 데이터의 논리적 구조나 물리적 구조가 변경되더라도 응용 프로그램이 영향을 받지 않는 것
    • 데이터베이스의 유지보수와 확장성을 향상시키는 장점을 가짐
    • 데이터베이스의 구조가 변경되더라도 응용 프로그램이나 사용자에게 영향을 주지 않으므로, 시스템의 안정성과 신뢰성을 높일 수 있음
    • 데이터베이스의 성능이나 보안을 개선하기 위해 필요한 조치를 쉽게 적용할 수 있음
    • 데이터 독립성 보장을 위한 데이터베이스 구조 ->  3단계 데이터베이스 구조

    논리적 데이터 독립성

    • 데이터베이스의 논리적 구조가 변경되어도 응용 프로그램이나 사용자의 요구에 영향을 주지 않는 것
    • 예) 테이블의 속성이나 관계가 추가되거나 삭제되어도 기존의 쿼리나 트랜잭션은 그대로 유지될 수 있습니다.

    물리적 데이터 독립성

    • 데이터베이스의 물리적 구조가 변경되어도 논리적 구조나 데이터의 내용에 영향을 주지 않는 것을 말합니다.
    • 예) 파일의 저장 방식이나 인덱스의 구성이 바뀌어도 데이터베이스의 스키마나 데이터는 그대로 유지될 수 있습니다.

    Q) 스키마가 뭘까요? 3단계 데이터베이스 구조에 대해 설명해주세요.

     

    스키마

    • 데이터베이스의 구조와 제약조건에 관해 전반적인 명세를 기술한 것
    • 개체, 속성, 관계, 제약조건을 기술한 것


    3단계 데이터베이스 구조

    • DB의 복잡한 내부 구조를 감추고 일반 사용자가 DB를 쉽게 이해&이용할 수 있도록 제안.
    • 내부>개념>외부 (내부->외부로 갈 수록 추상화 레벨이 높아짐)

    외부 단계(external level)

    • 3단계 구조 중 제일 개념화가 많이 되어 있는 외부 단계는 데이터베이스를 개별 사용자 관점에서 이해하고 표현
    • 외부 단계에서는 개별 사용자가 데이터베이스를 어떻게 보는가를 표현하므로 사용자마다 생각하는 데이터베이스의 구조가 다름
    • 외부 단계에서 사용자에게 필요한 데이터베이스를 정의한 것을 외부 스키마(external schema)라 함
    • 외부 스키마는 각 사용자가 생각하는 데이터베이스의 모습을 표현한 논리적인 구조로, 사용자마다 다르다.
      데이터베이스 하나에 외부 스키마가 여러 개 존재할 수 있으며, 사용 목적이 같은 사용자들은 외부 스키마 하나를 공유 할 수 있음. 
    • 서브 스키마(sub schema)라고도 함

     

    개념 단계(conceptual level)

    • 개념 단계는 데이터베이스를 이용하는 사용자들의 관점을 통합해 조직 전체의 관점에서 이해하고 표현
    • 데이터베이스 관리 시스템이나 데이터베이스 관리자는 데이터베이스의 일부분이 아닌 전체에 관심을 둠.
    • 개념 단계에서는 이 같은 데이터베이스 관리 시스템이나 관리자의 관점에서 모든 사용자에게 필요한 데이터를 통합하여 전체 데이터베이스의 논리적 구조를 정의하는데, 이를 개념 스키마(conceptual schema)라 함
    • 개념 스키마는 조직 전체의 관점에서 생각하는 데이터베이스의 모습
    • 전체 데이터베이스에 어떤 데이터가 저장되는지, 데이터들 간에는 어떤 관계가 존재하고 어떤 제약조건이 있는지에 대한 정의뿐만 아니라, 데이터에 대한 보안 정책이나 접근 권한에 대한 정의도 포함. (하지만 데이터를 물리적으로 저장하는 방법이나 데이터 저장 장치와는 독립적)
    • 데이터베이스 하나에는 개념 스키마 하나만 존재
    • 개념 스키마의 일부분을 사용자의 이용 목적에 맞게 사용하는 것이 외부 스키마.
    • 일반적으로 스키마=개념 스키마


    내부 단계(internal level)

    • 내부 단계는 데이터베이스를 저장 장치의 관점에서 이해하고 표현
    • 내부 단계는 전체 데이터베이스가 디스크와 테이프 같은 저장 장치에 실제로 저장되는 방법을 정의하는데, 이를 내부 스키마(internal schema)라 함
    • 데이터베이스는 저장 장치에 파일 형태로 저장되는데 내부 스키마는 파일에 데이터를 저장하는 레코드의 구조, 레코드를 구성하는 필드의 크기, 인덱스를 이용한 레코드 접근 경로 등을 정의
    • 내부 스키마 역시 데이터베이스 하나에 내부 스키마 하나만 존재



    Q) RDBMS(관계형 데이터베이스 관리시스템)는 뭘까요?

    RDBMS

    • 관계형 데이터베이스(RDB)는 테이블, 행, 열의 정보를 구조화하는 방식
    • RDB에는 테이블을 조인하여 정보 간 관계 또는 링크를 설정할 수 있는 기능이 있어, 여러 데이터 포인트 간의 관계를 쉽게 이해하고 정보를 얻을 수 있음.
    • 예) MySQL, PostgreSQL, MariaDB, Microsoft SQL Server, Oracle Database

    Q) 릴레이션 스키마와 릴레이션 인스턴스에 대해서 설명해주세요.

     

    릴레이션

    • 데이터들을 이차원 표 형태로 나타낸 것

     

    릴레이션 스키마(Relation Schema)

    • 릴레이션에 어떤 정보가 담길지를 정의
    • 릴레이션의 이름, 각 속성의 이름과 타입, 그리고 속성 값의 도메인을 정의하는, 즉 릴레이션에 데이터를 넣을 수 있도록 하는 릴레이션 틀
    • 속성, 도메인, 차수

    릴레이션 인스턴스(Relation Instance)

    • 릴레이션 스키마에 실제로 저장된 데이터의 집합
    • 어느 시점의 릴레이션에 들어 있는 튜플들의 집합
    • 튜플, 카디널리티

     

     

    Q) 릴레이션의 차수와 카니덜리티에 대해 설명해주세요.

     

    튜플

    • 릴레이션을 구성하는 각각의 행

     

    속성

    • 릴레이션을 구성하는 각각의 열

     

    릴레이션 차수

    • 속성(열)의 개수

     

    카디널리티

    • 튜플(행)의 수

    Q) 키(Key)에 대해서 설명해주세요. (슈퍼키, 후보키, 기본키, 대체키, 외래키)

     

    • 무언가를 식별하는 고유한 식별자
    • 기본키, 슈퍼키, 후보키, 대체키, 외래키 등

    유일성

    • 하나의 키로 특정 행을 바로 찾아낼수 있는 고유한 데이터 속성
    • 예) 주민등록번호

     

    최소성

    • 키를 구성하는 속성들 중 가장 최소로 필요한 속성들로만 키를 구성

     

    슈퍼키

    • 테이블에서 각 행을 유일하게 식별할 수 있는 하나 또는 그 이상의 속성들의 집합
    • 유일성 O

     

    후보키

    • 테이블에서 각 행을 유일하게 식별할 수 있는 최소한의 속성들의 집합
    • 기본키가 될 수 있는 후보
    • 유일성 O 최소성 O

     

    기본키

    • 후보키들 중에서 하나를 선택한 키로 최소성과 유일성을 만족
    • 테이블에서 기본키는 오직 1개
    • 기본키는 테이블 안에서 유일하게 각 행들을 구별
    • 기본키는 NULL 값을 절대 가질수 없고, 중복된 값을 가질 수 없음.

     

    대체키

    • 기본키로 선정되지 않은 후보키

     

    외래키

    • 다른 테이블의 데이터를 참조할 때 없는 값을 참조할 수 없도록 제약
    • 참조될(A) 열의 값은 참조될(A) 테이블에서 기본키(Primary Key)로 설정되어 있어야 함
    • 부모 테이블 먼저 삭제될 수 없음

    Q) 무결성 제약조건에 대해서 설명해주세요. (개체 무결성, 참조 무결성, 도메인 무결성)

     

    무결성

    • 데이터의 정확성, 일관성
    • 데이터에 결함이 없는 상태, 즉 데이터를 정확하고 일관되게 유지하는 것

     

    무결성 제약조건

    • 데이터베이스의 정확성, 일관성을 보장하기 위해 저장, 삭제, 수정 등을 제약하기 위한 조건
    • 데이터베이스에 저장된 데이터의 무결성을 보장하고 데이터베이스의 상태를 일관되게 유지하는 목적
    • 개체/참조/도메인/고유/NULL/키 무결성이 존재

    개체 무결성

    • 기본키는 NULL 값이 될 수 없음

     

    참조 무결성

    • 외래키는 참조할 수 없는 값을 가질 수 없음

     

    도메인 무결성

    • 특정 속성값은 그 속성이 정의된 도메인에 속한 값이어야 함

     

    고유 무결성

    • 특정 속성값은 서로 달라야 함

     

    NULL 무결성

    • 특정 속성은 NULL 값을 가질 수 없음

     

    키 무결성

    • 릴레이션에는 최소한 하나의 키가 존재해야 함

    Q) 사용했던 데이터베이스에 대해서 설명해주세요. (오라클DB, MySQL, MariaDB, MongoDB 등)

     


    Bigquery

    • 회사 데이터레이크가 빅쿼리로 구성
    • OLAP의 특성을 가져, 분석에 유리한 환경

    OracleDB

     

    PostgreSQL

     

     

    📌참고 자료

    https://velog.io/@hsshin0602/CS-%EC%A7%80%EC%8B%9D-%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4-%EC%8B%9C%EC%8A%A4%ED%85%9C-VS-%ED%8C%8C%EC%9D%BC-%EC%B2%98%EB%A6%AC-%EC%8B%9C%EC%8A%A4%ED%85%9C

    https://coding-factory.tistory.com/214

    https://computer-science-student.tistory.com/501

    https://moonibot.tistory.com/37

    https://jerryjerryjerry.tistory.com/49

    https://iingang.github.io/posts/DB-Integrity-constraint/

    https://kosaf04pyh.tistory.com/202