데이터베이스

  • 여러 사람들이 공유하고 사용할 목적으로 통합 관리되는 데이터들의 모임

  • 데이터베이스 관리 시스템 (DBMS, DataBaseManagementSystem)

    • 다수의 사용자들이 데이터베이스 내의 데이터를 접근할 수 있도록 해주는 소프트웨어들
    • 이전에는 파일 시스템을 이용하여 데이터를 관리
      -> 응용 프로그램을 이용해 데이터를 파일로 관리
      -> 데이터 중복, 데이터 불일치 등 문제가 발생
      -> 데이터 불일치 : 데이터를 파일로 저장했을 때 파일을 수정하는 도중에 해당 파일을 불러온다면 데이터가 동기화 문제가 발생하여 데이터가 불일치하는 문제
    • 특징
      • 데이터의 독립성 (<-> 파일 시스템은 데이터와 응용 프로그램이 상호 의존 관계)
        • 물리적 독립성 : 데이터베이스 사이즈를 늘리거나 성능 향상을 위해 데이터 파일을 늘리거나 새롭게 추가하더라도 관련된 응용 프로그램을 수정할 필요 없음(<-> 파일 시스템은 응용 프로그램의 기능을 확장하려면 파일의 구조를 재조직해야함)
        • 논리적 독립성 : 데이터베이스는 다양한 응용 프로그램의 논리적 요구를 만족(<-> 파일 시스템에서는 파일의 구조가 응용 프로그램에 반영되어 있기 때문에 파일의 구조가 바뀌면 영향을 받는 모든 응용 프로그램들을 수정해야함)
      • 데이터의 무결성 
        • 여러 경로를 통해 잘못된 데이터가 발생하는 경우의 수를 방지하는 기능
        • 데이터의 유효성 검사를 통해 데이터의 무결성을 구현 (<-> 파일 시스템은 응용 프로그램 별로 제약 조건을 하나하나 처리해야하기 때문에 무결성을 유지하기가 어려움)
      • 데이터의 보안성 
        • 허가된 사용자들만 데이터베이스나 데이터베이스 내의 자원에 접근할 수 있도록 계정 관리 또는 접근 권한을 설정함으로써 모든 데이터에 보안을 구현
          (<-> 파일 시스템은 파일 단위로 검색, 갱신, 실행 등의 권한을 부여할 수 있어서 사용자 별 세밀한 접근 제어가 어려움)
      • 데이터의 일관성 
        • 연관된 정보를 논리적인 구조로 관리함으로써 어떤 하나의 데이터만 변경했을 경우 발생할 수 있는 데이터의 불일치성을 배제
        • 작업 중 일부 데이터만 변경되어 나머지 데이터와 일치하지 않는 경우의 수를 배제 (<-> 파일 시스템에서는 중복된 데이터를 변경하는 게 어렵기 때문에 중복 데이터 중 일부만 변경된다고 하면 중복 데이터 간에 불일치가 발생)
      • 데이터의 중복 최소화 
        • 데이터베이스는 데이터를 통합해서 관리함으로써 데이터 중복 문제를 해결 (<-> 파일 시스템은 응용 프로그램별로 데이터를 파일로 관리하기 때문에 같은 데이터가 여러 파일에 저장되어 데이터 중복 문제가 발생)

엔티티

  • 데이터 모델링에서 사용되는 객체

  • 업무에 필요하고 유용한 정보를 저장하고 관리하기 위한 "어떤 것(Thing)"

  • 특징

    • 업무에서 필요로 하는 정보여야 한다.
    • 유일한 식별자가 있어야 한다.
    • 두 개 이상의 인스턴스의 집합이어야 한다.
    • 업무 프로세스에 의해 이용되어야 합니다.
    • 반드시 속성을 포함해야 합니다.
    • 다른 엔터티 간의 관계가 존재해야 합니다.
  • 분류

    • 유무형 (물리적 형태 존재 유무)
      • 유형 : 업무에서 도출되며 지속적으로 사용되는 엔터티
      • 개념 : 개념적으로 사용되는 엔터티 (물리적 형태 X)
      • 사건 : 비즈니스 프로세스를 실행하면서 생성되는 엔터티
    • 발생 시점
      • 기본 : 키 엔터티, 다른 엔터티로부터 영향을 받지 않고 독립적으로 생성되는 엔터티
      • 중심 : 기본 엔터티와 행위 엔터티 간의 중간에 있는 것, 기본 엔터티로부터 발생되고 행위 엔터티를 생성하는 것
      • 행위 : 2개 이상의 엔터티로부터 발생

속성

  • 엔터티가 가지고 있는 특징이나 성질

  • 열, 필드라고도 함

  • 속성은 엔터티의 정보를 나타내고 더 이상 분리되지 않는 최소의 단위로써 엔티티의 성질, 분류, 수량, 상태, 특성 등을 나타내는 세부 항목으로 업무에 필요한 데이터를 저장

  • 고려 사항

    • 엔터티에 필요한 속성인가
    • 속성이 하나의 값만을 가지고 있는가
    • 속성이 하나의 의미만 가지고 있는가
    • 동일한 의미를 가지는 속성이 하나만 존재하는가
  • 분류

    • 분해 여부
      • 단일 : 하나의 이미로 구성된 것으로 회원ID, 이름 등
      • 복합 : 여러개의 의미가 있는것으로 대표적으로 주소
      • 다중값 : 속성에 여러개의 값을 가질 수 있는 것으로 예를 들자면 상품리스트, 엔터티로 분해가 가능
    • 특성
      • 기본 : 비즈니스 프로세스에서 도출되는 본래의 속성
      • 설계 : 데이터 모델링 과정에서 발생되는 속성, 유일한 값을 부여
      • 파생 : 다른 속성에 의해서 만들어지는 속성

도메인

  • 엔티티의 속성들이 가질 수 있는 값들의 집합
    -> 속성에 대응하는 컬럼에 대한 데이터 타입(Data Type)과 길이를 의미

  • 두 속성의 도메인이 같다 == 두 속성의 데이터 타입과 길이가 같다

  • 일반적인 데이터 타입처럼 사용 가능

  • 데이터 모델링 관점에 있어 데이터 표준화 측면에서 매우 중요한 요소
    -> 도메인이 체계화 및 표준화되지 않으면 물리 모델 구현 관점에서 속성과 엔티티의 이름이 표준화되지 않을 수 있고 데이터 타입의 정확성까지 잃을 수 있기 때문

  • 정의 방법

    1. 모든 속성을 엔티티별로 나열
    2. 속성 이름에 복합 명사들을 분리하여 명사 별로 정리
    3. 마지막 명사를 기준으로 정렬
    4. 도메인 명을 정해줌
    5. 도메인만 모아 중복을 제거한 후 데이터 타입과 길이, 초기 값, 범위 등을 정해줌

레코드

  • 데이터베이스에서 하나의 단위로 취급되는 자료의 집합

  • 행, 튜플이라고도 함

  • 기능

    • 레코드 삽입 - INSERT
    • 레코드 삭제 - DELETE
    • 레코드 수정 - UPDATE
    • 레코드 조회 - SELECT

  • 데이터베이스에서 조건에 만족하는 튜플을 찾거나 순서대로 정렬할 때 다른 튜플들과 구별할 수 있는 유일한 기준이 되는 Attribute(속성)

  • 종류

    1. 후보키 (Candidate Key)
    • 릴레이션을 구성하는 속성들 중에서 튜플을 유일하게 식별할 수 있는 속성들의 부분집합

    • 모든 릴레이션은 반드시 하나 이상의 후보키를 가져야 함

    • 릴레이션에 있는 모든 튜플에 대해서 유일성과 최소성을 만족시켜야 함

    1. 기본키 (Primary Key)
    • 후보키 중에서 선택한 주키(Main Key)

    • 한 릴레이션에서 특정 튜플을 유일하게 구별할 수 있는 속성

    • Null 값을 가질 수 없습니다. (개체 무결성의 첫번째 조건)

    • 기본키로 정의된 속성에는 동일한 값이 중복되어 저장될 수 없음
      -> 개체 무결성의 두번째 조건

    1. 대체키 (Alternate Key)
    • 후보키가 둘 이상일 때 기본키를 제외한 나머지 후보키들

    • 보조키라고도 함

    1. 슈퍼키 (Super Key)
    • 슈퍼키는 한 릴레이션 내에 있는 속성들의 집합으로 구성된 키로서 릴레이션을 구성하는 모든 튜플 중 슈퍼키로 구성된 속성의 집합과 동일한 값은 나타내지 않음

    • 릴레이션을 구성하는 모든 튜플에 대해 유일성은 만족하지만, 최소성은 만족시키지 못함

    1. 외래키 (Foreign Key)
    • 관계(Relation)를 맺고 있는 릴레이션 R1, R2에서 릴레이션 R1이 참조하고 있는 릴레이션 R2의 기본키와 같은 R1 릴레이션의 속성

    • 외래키는 참조되는 릴레이션의 기본키와 대응되어 릴레이션 간에 참조 관계를 표현하는데 중요한 도구로 사용

    • 외래키로 지정되면 참조 테이블의 기본키에 없는 값은 입력할 수 없음 (참조 무결성 조건)

테이블 간의 관계

  • 1:1 관계

    • 하나의 레코드가 다른 테이블의 레코드 한 개와 연결된 경우
    • 자주 사용하지 않음
  • 1:N 관계

    • 하나의 레코드가 서로 다른 여러 개의 레코드와 연결된 경우
    • 관계형 데이터베이스에서 가장 많이 사용
  • N:M 관계 (다대다)

    • 여러 개의 레코드가 다른 테이블의 여러 개의 레코드와 관계가 있는 경우
    • N:M(다대다) 관계를 위해 스키마를 디자인할 때에는, Join 테이블을 만들어 관리
    • 1:N(일대다) 관계와 비슷하지만, 양방향에서 다수의 레코드를 가질 수 있음
  • 자기참조 관계(Self Referencing Relationship)

    • 테이블 내에서도 관계가 필요할 경우 사용

트랜잭션

  • 데이터베이스의 상태를 변화시키기 해서 수행하는 작업의 단위
    -> 질의어(SQL)를 이용하여 데이터베이스를 접근 하는 것을 의미

  • 특징 (ACID)

    • 원자성 (Atomicity) : 트랜잭션이 데이터베이스에 모두 반영되던가, 아니면 전혀 반영되지 않아야 한다는 것
    • 일관성 (Consistency) :트랜잭션의 작업 처리 결과가 항상 일관성이 있어야 한다는 것
    • 독립성 (Isolation) : 어떤 하나의 트랜잭션이라도, 다른 트랜잭션의 연산에 끼어들 수 없다는 점
    • 지속성 (Durability) : 트랜잭션이 성공적으로 완료됬을 경우, 결과는 영구적으로 반영되어야 한다는 점
  • Commit

    • 하나의 트랜잭션이 성공적으로 끝났고, 데이터베이스가 일관성있는 상태에 있을 때, 하나의 트랜잭션이 끝났다 라는 것을 알려주기 위해 사용하는 연산
    • 수행했던 트랜잭션이 로그에 저장되며, 후에 Rollback 연산을 수행했었던 트랜잭션 단위로 하는것을 도움
  • Rollback

    • 하나의 트랜잭션 처리가 비정상적으로 종료되어 트랜잭션의 원자성이 깨진경우, 트랜잭션을 처음부터 다시 시작하거나, 트랜잭션의 부분적으로만 연산된 결과를 다시 취소
    • 후에 사용자가 트랜잭션 처리된 단위대로 Rollback을 진행 가능

무결성

  • 데이터의 정확성, 일관성, 유효성이 유지되는 것
    -> 데이터에 적용되는 연산에 제한을 두어 데이터의 무결성을 유지

    1) 개체 무결성 (Entity integrity)
    모든 테이블이 기본 키 (primary key)로 선택된 필드 (column)를 가져야 함
    기본 키로 선택된 필드는 고유한 값을 가져야 하며, 빈 값은 허용하지 않음

    2) 참조 무결성 (Referential integrity)
    관계형 데이터베이스 모델에서 참조 무결성은 참조 관계에 있는 두 테이블의 데이터가 항상 일관된 값을 갖도록 유지되는 것

    3) 도메인 무결성 (Domain integrity)
    도메인 무결성은 테이블에 존재하는 필드의 무결성을 보장하기 위한 것으로 필드의 타입, NULL값의 허용 등에 대한 사항을 정의하고, 올바른 데이터의 입력 되었는지를 확인

    4) 무결성 규칙 (Integrity rule)
    데이터베이스에서 무결성 규칙은 데이터의 무결성을 지키기 위한 모든 제약 사항들
    비즈니스 규칙 (business rule)은 데이터베이스를 이용하는 각각의 유저에 따라 서로 다르게 적용되지만, 무결성 규칙은 데이터베이스 전체에 공통적으로 적용되는 규칙

면접 대비

Q: 데이터베이스의 정규화는 왜 필요한가요? (절차와 함께 설명 해 주세요.)
A: 데이터베이스의 정규화는 데이터 중복을 최소화하고 무결성을 유지하기 위한 프로세스입니다. 이를 통해 데이터 저장 및 관리를 효과적으로 할 수 있습니다. 정규화의 주요 이유는 중복 제거, 데이터 무결성 향상, 쿼리 성능 향상, 테이블 구조의 명확성입니다.

정규화는 일반적으로 여러 단계를 거쳐 진행됩니다. 먼저, 제1 정규화에서는 각 컬럼의 도메인이 원자적인 값을 가져야 합니다. 그 후, 제2 정규화에서는 부분적 종속과 이행적 종속을 제거하여 테이블을 세분화하고, 제3 정규화에서는 이행적 종속을 제거합니다. 보이스-코드 정규화에서는 결정자가 후보키인 경우에 해당하는 테이블을 정규화합니다.

이러한 단계를 통해 데이터 모델을 명확하게 만들고, 데이터의 일관성을 유지하며, 쿼리 성능을 향상시킬 수 있습니다. 이는 데이터베이스의 효율적인 운영과 유지 보수에 도움이 됩니다.

출처

데이터베이스란
데이터베이스 엔티티
데이터베이스 속성이란
Domain, Data Dictionary
필드 (데이터베이스)
레코드
키의 개념 및 종류
관계형 데이터베이스 설계
트랜잭션이란
관계형 데이터베이스 - 무결성

0개의 댓글