면접준비[프론트,백,데이터,CS]/InterView 준비 [ DB,데이터,클라우드 ]

[ DB & SQL(RDBMS, NoSQL) 면접 준비 ] DB/SQL 면접 준비 03

안다미로 : Web3 & D.S 2025. 1. 10. 23:26

 

 

 

[ DB & SQL(RDBMS, NoSQL) 면접 준비 ] DB/SQL 면접 준비 03

 


 

◇ 데이터베이스(DB)란?


         ∇ 데이터베이스란,  "특정 조직의 업무를 수행하는 데 필요한 상호 관련된 데이터들의 모임" 입니다.

              ==   [여러 사람이 공유하고 사용할 목적으로 통합-관리되는 정보의 집합으로, 

                       논리적으로 연관된 데이터를 체계적으로 저장하고 관리하는 시스템.]

               ※ DBMS(DataBase Management System) : 데이터베이스를 관리하는 시스템.

 

 

 


◇ 데이터베이스(DB)의 구성요소.


    ※ 데이터베이스는 크게 '논리적 구성요소'와 '시스템적 구성요소'로 나눌 수 있습니다.

 

 

         ◎ 논리적 구성요소.

 

                1. 개체 ( Entity )

 

                        - 데이터로 표현하고자 하는 현실 세계의 대상체

                        - 하나 이상의 속성으로 구성

                        - 독립 개체 : 다른 개체에 종속되지 않고 독립적으로 존재 가능.

                        - 종속 개체 : 다른 개체의 존재에 의존적인 개체.

 

 

                2. 속성( Attribute )

 

                        - 개체에 관한 정보를 저장하는 가장 작은 논리적 단위.

                        - 개체의 특성 및 상태를 기술.

 

                         ※ 속성의 종류

                                 - 단순 속성: 더 이상 나눌 수 없는 속성.

                                 - 복합 속성 : 2개 이상의 의미 있는 값으로 분해 가능한 속성.

 

                              ex) 책의 속성 - 서명, 저자, 가격, 출판사

 

 

                3. 관계( Relationship )

 

                        - 2개 이상의 개체 간 연관성

                        - 주로 동사의 형태로 표현.

 

                         ※ 관계의 유형.

                           

 

 

         ◎ 시스템적 구성요소.

 

                1. 데이터베이스 관리 시스템(DBMS)

                        - 데이터베이스를 생성, 관리, 운영하는 소프트웨어

                        - 데이터의 저장, 검색, 업데이트 담당.

 

 

                2. 주요 DBMS 구성 요소.

                        - DDL 컴파일러 : 스키마의 정의를 메타데이터로 처리.

                        - 질의어 처리기: 사용자 질의문 처리

                        - DML 컴파일러 : 데이터 조작 명령어 처리

                        - 런타임 데이터베이스 처리기 : 데이터베이스 접근 관리

                        - 트랜잭션 관리 : 데이터 무결성과 권한 제어.

 

 


 

◇ 데이터베이스(DB)의 특징.


 

   ◎ 독립성 [ Indepencence ]

 

            √ '데이터베이스'는 데이터를 사용하는 응용 프로그램과는 독립적인 상태로 데이터를 저장하고 관리합니다. !

 

            √ "물리적 독립성"  : 데이터베이스 사이즈를 늘리거나 성능 향상을 위해 데이터 파일을 새롭게 추가하더라도

                                             관련된 응용프로그램을 수정할 필요가 없습니다.

 

            √ "논리적 독립성"  : 데이터베이스는 논리적인 구조로 다양한 응용프로그램의 논리적 요구를 만족 가능.

 

 

   ◎ 무결성 [ Integrity ]

 

            √ '데이터베이스'는 다양한 제약조건 및 기능을 통해 데이터의 무결성을 유지합니다.

 

 

   ◎ 보안성 [ Security]

 

            √ '데이터베이스'는 계정 및 권한 관리(인가된 사용자만 자원에 접근 가능)를 통해 데이터들의 보안을 유지합니다.

 

 

   ◎ 일관성 [ Consistency]

 

            √ '데이터베이스'는 다양한 제약조건을 통해 데이터를 일관되게 유지합니다.

            √ 어떤 하나의 데이터만 변경했을 경우, 발생할 수 있는 데이터의 불일치성을 배제할 수 있고,

                   작업 중 일부 데이터만 변경되어 나머지 데이터와 일치하지 않는 경우의 수를 배제 가능.

 

 

   ◎ 중복 최소화[ Minimum Duplication]

 

            √ '데이터베이스'는 데이터를 통합해서 관리함으로써 데이터의 중복을 최소화합니다.

 

 


◇ 데이터 무결성이란?


       ◎ 데이터에 결합이 없는 상태, 데이터를 정확하고 유효하게 유지하는 것을 말합니다. 

             == 데이터의 정확성, 완전성, 일관성, 유효성을 보장하는 개념과 프로세스.

              == 데이터베이스에 저장된 데이터 값이 현실 세계의 실제 값과 일치하는 정확성.

 

       ◎ 데이터의 정확성과 일관성을 유지하고 보증하기 위해,

               데이터베이스에 삽입, 삭제, 수정, 연산이 일어나도 무결성 제약조건은 지켜져야 합니다.

 

 

       ◆ 데이터 무결성의 주요 특징.

 

               1. 정확성.

                        - 데이터에 중복이나 누락이 없는 상태.

                        - 데이터가 의도된 값을 정확하게 반영.

 

               2. 일관성.

                        - 원인과 결과의 의미가 연속적으로 보장되어 변하지 않는 상태. 

                        - 데이터 간의 논리적 관계가 유지됨.

 

               3. 유효성.

                        - 사용자로부터 입력받은 값이 정확한 값만 허용되도록 함.

 

 

       ◆ 데이터 무결성의 중요성.

                 - 데이터 무결성을 유지하지 않으면,

 

                           - 중복된 데이터 존재.

                           - 부모-자식 데이터 간 논리적 관계 붕괴

                           - 잦은 시스템 에러

                           - 높은 재개발 비용.

 

 


◇ 데이터 무결성 제한의 유형.


 

    ■ 개체 무결성 ( Entity Integrity )

 

              - 모든 테이블은 기본 키(Primary Key)를 가져야 하며, 

                        기본 키로 선택된 열은 고유하고 빈 값은 허용되지 않습니다.

              - 기본키는 고유한 값을 가지며, NULL 값 불가.

 

 

    ■ 참조 무결성 ( Referential Integrity )

 

              - 모든 외래 키 값은 Null이거나,  참조 릴레이션의 기본키 값과 동일해야 합니다.

              - 릴레이션은 참조할 수 없는 외래키 값을 가질 수 없습니다.

              - 테이블 간의 참조 관계에서 데이터의 일관성을 보장합니다.

 

 

    ■ 범위(도메인) 무결성 ( Domain Integrity )

 

              - 정의된 범위에서 관계형 데이터베이스의 모든 열이 선언되어야 합니다.

              - 각 필드(열)의 값이 정의된 도메인(유효한 값의 집합)에 속해야 합니다.

              - 데이터 타입, 형식, 범위, NULL 여부 등을 관리.

 

 

    ■ 키 무결성 ( Key Integrity )

 

              - 릴레이션에는 최소한 하나의 키가 존재해야 합니다.

 

 

    ■ null 무결성 ( Null Integrity)

 

              - 특정 속성은 null 값을 가질 수 없습니다.

              - ex) 유저 아이디와 같은 중요한 정보는 스키마를 정의할 때 null을 가질 수 없도록 미리 정의합니다.

 

 

    ■ 고유 무결성 ( Unique Integrity )

 

              - 특정 속성값은 서로 달라야 합니다. ( 고유한 값을 가져야 함 )

              - 각 튜플에서 하나의 속성값은 중복된 값이 없는 각각 서로 다른 값을 가져야 합니다.

              - ex ) 이름, 나이, 사는 곳과 같은 속성은 서로 같은 값을 가질 수 있지만,

                            고객 아이디의 경우 서로 다른 값을 가져야 합니다.

 

 


 

◇ Key란?


 

      ◎ 검색, 정렬 시 튜플(레코드, 행)을 구분할 수 있는 기준이 되는 속성.

 

 

      ◎ 후보키 ( Candidate Key )

 

               - 기본키로 사용할 수 있는 속성들(유일성, 최소성)을 말합니다.

               - 후보키 중 기본키를 제외한 나머지는 모두 보조키가 됩니다.

               - 유일성 O, 최소성 X  ->>  슈퍼키.

 

 

      ◎ 기본키 ( Primary Key )

 

               - 하나의 테이블에서 특정 튜플을 구별할 수 있는 속성(Attribute)을 의미합니다.

               - "개체 무결성" 에 의해 기본키에는 null 값과 중복된 값이 저장되어질 수 없습니다.

               - 엔티티를 식별하는 대표 키가 됩니다.

               - table 당 1개만 지정합니다.

 

 

      ◎ 외래키 ( Foreign Key )

 

               - 참조되는 테이블의 '기본키'와 대응되어 테이블 간에 참조 관계를 표시하는 키입니다.

               - 외래키로 지정되면, 참조 무결성에 의해서 참조 테이블의 기본키에 없는 값은 입력할 수 없습니다.

               - 두 테이블 간의 종속이 필요한 관계이면,

                  그 접점이 되는 칼럼을 'FK'로 지정하여 서로 참조할 수 있도록 관계를 맺어줍니다.

               - 테이블 간의 잘못된 매핑을 방지하는 역할을 합니다.

 

 


◇ 외래키는 NULL이 허용되는가?


       ☆ 허용됨 ! 

 

            ex) 사원은 하나의 부서를 가짐 / 신입사원은 부서가 미정일 수 있음

 

 

             1) 외래키 값은 'NULL' 이거나 부모 테이블의 기본키 값과 동일해야 합니다 [ 참조 무결성 제약 조건 ]

 

             2) 부모 테이블의 기본키, 고유키를  외래키로 지정할 수 있습니다.

 

             3) 부모 테이블의 기본키, 고유키가 여러 개의 컬럼으로 이루어져 있다면

                        부모가 가진 기본키, 고유키 컬럼을 원하는 개수만큼 묶어서 외래키로 지정 가능합니다.

 

             4) 외래키로 지정할 두 테이블의 필드는 같은 데이터 타입이어야 합니다.