데이터

  • 관찰의 결과로 나타난 정략적인 실제 값

정보

  •  데이터에 의미를 부여한 것

지식

  •  사물이나 현상에 대한 이해

정보처리

  • 데이터에서 정보를 추출하는 과정 또는 방법

정보 시스템

  • 조직 운영에 필요한 데이터를 수집하여 저장해두었다가 필요할 때 융여한 정보를 만들어주는 수단

Database

  • Database를 한 마디로 정의하면 ‘데이터의 집합’이라고 할 수 있음
  • 정보 시스템 안에 데이터를 저장하고 있다가 필요할 때 제공하는 역할을 담당
  • 데이터의 검색과 변경 작업을 주로 수행

Database 개념

  • 특정 조직의 여러 사용자가 공유하여 사용할 수 있도록 통합해서 저장한 운영데이터의 집합
    1. 통합된 데이터 : 데이터를 통합하는 개념
    2. 공유된 데이터 : 컴퓨터 저장장치에 데이터 의미
    3. 저장 데이터 : 업무를 위한 검색을 할 목적으로 저장된 데이터
    4. 공용 데이터 : 공동으로 사용되는 데이터를 의미

Database 특징

  • 실시간 접근성 : 비정형적인 질의(조회)에 대하여 실시간 처리에 의한 응답이 가능해야함
    • 데이터베이스는 실시간으로 서비스 됨
  • 지속적인 변화 : 데이터베이스의 상태는 동적이어야 함. 즉, 새로운 데이터의 삽입, 삭제, 갱신으로 항상 최신의 데이터를 유지해야 함
    • 데이터베이스는 삽입, 삭제 등의 작업을 통해 바뀐 데이터 값을 저장
  • 동시 공용 : 데이터베이스는 서로 다른 목적을 가진 여러 응요자들을 위한 것이므로 다수의 사용자가 동시에 같은 내용의 데이터를 이용할 수 있어야 함
    • 데이터베이스에 접근하는 프로그램이 여러 개 있다는 의미
  • 내용에 따른 참조 : 데이터베이스에 있는 데이터를 참조할 때 데이터 레코드의 주소나 위치에 의해서가 아니라 사용자가 요구하는 데이터 내용으로 찾음
    • 데이터베이스에 저장되는 데이터는 데이터의 물리적인 위치가 아니라 데이터 값에 따라 참조

DBMS

  • ‘Database Management System’ 의 약자로 Database를 관리하고 운영하는 소프트웨어를 의미
  • 즉, 사용자와 데이터베이스를 연결시켜주는 소프트웨어
장점 단점
  • 데이터 중복을 통제함
  • 데이터 보안 향상
  • 데이터 무결성 유지
  • 응용 프로그램 개발 비용이 줄어듦
  • 동시 공유 가능
  • 표준화 가능
  • 데이터 독립성 확보
  • 비용이 많이 듦
  • 백업과 회복 방법이 복잡
  • 중앙관리로 인해 취약점이 존재함

기능

  • 데이터 정의 : 데이터 구조를 정의
  • 데이터 조작 : 데이터를 조작하는 소프트웨어가 요청하는 삭제, 삽입, 수정 작업 지원
  • 데이터 추출 : 사용자가 조회하는 데이터 또는 응용 프로그램의 데이터 추출
  • 데이터 제어 : 데이터베이스 사용자 생성, 모니터리아며 데이터 접근을 제어

스키마 요소

  •  속성 : 릴에이션 스키마의 열
  • 도메인 : 속성이 가질 수 있는 값의 집합
  • 차수 : 속서의 개수
  • 인스턴스 : 스키마네 따라 데이터베이스에 실제 저장된 값

인스턴스 요소

  •  투플 : 릴레이션의 행
  • 카디널리티 : 투플의 개수

Key

  •  특정 투플을 식별하기 위해 사용되는 속성 혹은 속성의 집합
    1. 슈퍼 키 : 투플을 유일하게 식별할 수 있는 속성 혹은 속성의 집합
    2. 후보 키 : 투플을 유일하게 식별할 수 있는 속성의 최소 집합
    3. 복합 키 : 2개 이상의 속성으로 이루어진 키
    4. 기본 키 : 여러 후보키 중 하나를 선정하여 대표로 삼는 키
      • 고려사항 : null 값 X, 고유한 값을 가져야 함
    5. 대리 키 : 기본 키가 보안을 요하거나, 마땅한 키가 없을 경우 일련번호와 같은 사상의 속성을 만들어 기본 키로 삼는 경우
    6. 대체 키 : 기본 키로 선정되지 못한 후보키
    7. 외래 키 : 다른 릴레이션의 키본 키를 참조하는 속성
      • 특징
        • 릴레이션 간의 관계를 표현
        • null 값, 중복 값 허용
        • 참조하고 참조되는 양쪽 릴레이션의 도메인이 같아야 함
        • 참조되는 값이 변하면 참조하는 값도 변함

무결성 제약 조건

  •  데이터의 무결성을 보장, 일관됭 상태로 유지하기 위한 규칙

데이터의 무결성 제약 조건

  • 데이터베이스에 저장된 데이터의 일관성과 정확성을 지키는 것

개체 무결성 제약 조건

  • 기본 키 제약, 기본 키는 null 값 X

참조 무결성 제약 조건

  • 외래 키 제약, 자식 릴레이션의 외래키는 부모 릴레이션의 기본키와 도메인이 동일해야 함
    • 참조 무결성 제약 조건의 옵션 (부모 릴레이션에서 투플을 삭제할 경우)
      • RESTRICTED : 자식 릴레이션에서 참조하고 있을 경우, 부모 릴에이션의 삭제 작업을 거부함
      • CASCADE : 자식 릴레이션의 관련 투플을 같이 삭제 처리함
      • DEFAULT : 자식 릴레이션의 관련 투플을 미리 설정해둔 값으로 변경함
      • NULL : 자식 릴레이션의 관련 투플을 NULL값으로 설정함(NULL값을 허가한 경우)

Database 언어

  • DDL (데이터 정의어) : 데이터베이스 구조를 정의, 수정, 삭제하는 언어 [alter, create, drop]
    • 테이블이나 관계의 구조를 생성하는데 사용, 테이블 생성, 변경, 제거 기능 제공
  • DML (데이터 조작어) : 데이터베이스내의 자료 검색, 삽입, 삭제를 위한 언어 [select, insert, update, delete]
    • 테이블에 새 데이터를 삽입, 저장된 데이터를 수정, 삭제, 검색하는 기능 제공
  • DCL (데이터 제어어) : 데이터에 대해 무결성 유지, 병생 수행 제어, 보호와 관리를 위한 언어 [commit, rollback, grant, revoke]
    • 보안을 위해 데이터에 대한 접근 및 사용 권한을 사용자별로 부여하거나 취소하는 기능 제공

DDL

CREATE 문

  •  테이블 구성, 속성과 속성에 관한 제약 정의, 기본 키 및 외래 키를 정의하는 명령어
  • PRIMARY KEY : 기본 키 지정
  • FOREIGN KEY : 외래키 지정
  • ON UPDATE : 외래키 속성 / ON DELETR : 투플 삭제 시
    • 외래 키 제약조건을 명시할 때는 반드시 참조되는 테이블이 존재해야하 하며 참도죄는 테이블의 기본키여야 함

ALTER 문

  •  생성된 테이블의 속성과 속성에 관한 제약을 변경하며, 기본키 및 외래키를 변경
  • ADD, DROP은 속성을 추가하거나 제거할 때 사용
  • MODIFY는 속성의 기본값을 설정하거나 삭제할 때 사용

DROP 문

  • 테이블을 삭제하는 명령어
  • 테이블의 구조와 데이터를 모두 삭제함
    • 데이터만 삭제 - DELETE

DML

INSERT 문 / 삽입

  • 테이블에 새로운 투플을 삽입하는 명령어

UPDATE 문 / 수정

  • 특정 속성 값을 수정하는 명령어

DELEDT 문 / 삭제

  • 테이블에 있는 기존 투플을 삭제하는 명령어

 

SELECT 쿼리의 수행 순서

  • FROM, ON, JOIN > WHERE, GROUP BY, HAVING > SELECT > DISTINCT > ORDER BY > LIMIT
  • FROM
    • 각 테이블을 확인
  • ON
    • JOIN 조건을 확인
  • JOIN
    • JOIN이 실행되어 데이터가 SET으로 모아지게 됨
    • 서브쿼리도 함께 포함되어 임시 테이블을 만들 수 있음
  • WHERE
    • 조건 작성
      • 비교 : =, <, >, <=, >= 
      • 범위 : BETWEENT
      • 집합 : IN, NOT IN
      • 패턴 : LIKE, NULL, IS NULL, IS NOT NULL
      • 복합 조건 : AND, OR, NOT
ON이 WHERE 보다 먼저 실행되어 JOIN을 하기 전에 필터링을 하고 (=ON 조건으로 필터링이 된 레코들간 JOIN이 이뤄짐)
WHERE은 JOIN을 한 후에 필터링을 함 (=JOIN을 한 결과에 WHERE 조건절로 필터링이 이뤄짐)
  • GROUP BY
    • 속성이 같은 값끼리 그룹화
    • 특정 컬럼을 기준으로 연산한 결과를 집계 키로 정의하여 그룹을 짓는 역할
    • 집합 연산자는 COUNT, SUM, AVG, MAX, MIN 등이 있고, DISTINCT와 같이 중복 데이터를 제거함
  • HAVING
    • GROUP BY 결과나타나는 그룹 제한
HAVING은 그룹을 필터링 할 때 사용되고, WHERE은 개별 행을 필터링 할 때 사용됨
집계함수(COUNT, SUM, MAX, MIN, AVG 등)는 HAVING절과 함께 사용할 수 있음
하지만 WHERE절은 집계함수 사용 할 수 없음

HAVING은 그룹화 또는 집계가 발생한 후 필터링하는데 사용되고,
WHERE은 그룹화 또는 집계가 발생하기 전에 필터링하는데 사용됨.
  • SELECT
    • 질의 결과 추출되는 속성 리스트 열거
  • DISTINCT
    • 표현된 행에서 중복된 행은 삭제
  • ORDER BY
    • 지정된 데이터를 기준으로 오름차순, 내림차순 지정
      • ASC : 오름차순, defualt
      • DESC : 내림차순
  • LIMIT
    •  LIMIT에서 벗어나는 행들은 제외되어 출력

트리거(Trigger)

  •  트리거는 특정 테이블에 대한 이벤트에 반응해 INSERT, DELETE, UPDATE 같은 DML 문이 수행되었을 때, 데이터베이스에서 자동으로 동작하도록 작성된 프로그램
  • 사용자가 직접 호출하는 것이 아닌, 데이터베이스에서 자동적으로 호출한다는 특징이 있음

RDBMS

    • ‘Relational DBMS’의 약자로 관계형 데이터베이스
    • RDBMS는 테이블(table)이라는 최소 단위로 구성되며, 이 테이블은 열(column)과 행(row)으로 이루어져 있음
    • 테이블간 FK(Foreign Key)를 통해 다른 데이터를 조합해서 함께 볼수 있다라는 장점이 있음

RDBMS와 NoSQL의 차이점

RDBMS는 모든 데이터를 2차원 테이블 형태로 표현함

  • 장점 : 스키마에 맞춰 데이터를 관리하기 때문에 데이터으이 정합성을 보장할 수 있음
  • 단점 : 시스템이 커질 수록 쿼리가 복잡해지고 성능이 저하되며  Scale-out이 어려움 (Scale-up만 가능)

NoSQL은 RDBMS와 반대로 데이터간의 관계를 정의하지 않고, 스키마가 없어 좀 더 자유롭게 데이터를 관리할 수 있으며, 컬렉션이라는 형태로 데이터를 관리함

  • 장점 
    • 스키마가 없이 Key-Value 형태로 데이터를 관리해 자유롭게 데이터를 관리할 수 있음
    • 데이터 분산이 용이하여 성능 향상을 위한 Scale-up뿐만 아니라 Scale-out 또한 가능함
  • 단점
    • 데이터 중복이 발생할 수 있고, 중복된 데이터가 변경될 경우 수정을 모든 컬렉션에서 수행해야 함
    • 스키마가 존재하지 않기에 명확한 데이터 구조를 보장하지 않아 데이터 구조 결정이 어려울 수 있음

RDBMS와 NoSQL의 적합한 사용 경우

RDBMS는 데이터 구조가 명확하고, 변경 될 여지가 없으며 스키마가 중요한 경우 사용하는 것이 좋음. 또한 중복된 데이터가 없어(데이터 무결성) 변경이 용이하기 때문에 관계를 맺고 있는 데이터가 자주 변경이 이루어지는 시스템에 적합함.

NoSQL은 정확한 데이터 구조를 알 수 없고 데이터가 변경/확장 될 수 있는 경우 사용하는 것이 좋음. 또한 단점에서도 명확하듯 데이터 중복이 발생할 수 있으며 중복된 데이터가 변경될 시 모든 컬렉션에서 수정해야 하기 때문에 Update가 많이 이루어지지 않는 시스템에 좋으며, Scale-out이 가능하다는 장점을 활용해 막대한 데이터를 저장해야 해서 DB를 Scale-out 해야 되는 시스템에 적합함.

트랜잭션

  • 작업의 완전성을 보장
  • 작업들을 모두 처리하거나 처리하지 못할 경우 이전 상태로 복구하여 작업의 일부만 적용되는 현상이 발생하지 않게 들어주는 기능
  • 하나의 트랜잭션은 Commit(작업완료)되거나 Rollback(취소)됨

트랜잭션의 특성(ACID)

  • 원자성( Atomicity ): 작업이 모두 반영되던지 아니면 전혀 반영되지 않아야 함
  • 일관성 ( Consistency ) : 실행이 완료되면 언제나 일관성 있는 상태를 유지해야 함
  • 독립성 ( Isolation ) : 둘 이상 트랜잭셩이 동시에 실행될 경우 서로의 연산에 끼어들 수 없음
  • 영속성 ( Durability ) : 완료된 결과는 연구적으로 반영되어야 함

참고

신입 개발자 기술면접 질문 정리 - 데이터베이스

'🗂️ Study > 📊 MySQL' 카테고리의 다른 글

부속질의 (subquery)  (0) 2024.07.05
정규화(Normalization)  (0) 2024.05.29
JOIN  (0) 2024.05.21
CREATE  (0) 2024.05.21
SQL  (0) 2024.05.21