데이터베이스 이상 현상(Anomalies) 정리

2024. 10. 14. 13:05·Category/정보처리기사
728x90

이상 현상(Anomalies) 정의

이상 현상은 데이터베이스에서 정규화가 제대로 이루어지지 않았을 때 발생하는 데이터 무결성의 문제를 말합니다. 테이블 설계가 잘못되면, 데이터 삽입, 삭제, 갱신 등의 연산에서 예상치 못한 문제들이 발생할 수 있습니다. 이상 현상은 주로 중복 데이터로 인해 발생하며, 이를 방지하기 위해 데이터베이스는 정규화를 통해 구조화됩니다.

이상 현상의 종류

  1. 삽입 이상(Insert Anomaly)
    • 정의: 새로운 데이터를 삽입할 때, 불필요한 데이터까지 함께 삽입해야 하거나 필요한 데이터를 삽입할 수 없는 문제.
    • 예시: 학생 테이블에 학생 정보를 입력하려는데, 그 학생이 아직 수업을 듣지 않아 수업 정보를 입력할 수 없을 때 발생.
  2. 삭제 이상(Delete Anomaly)
    • 정의: 데이터를 삭제할 때, 의도하지 않은 다른 데이터도 함께 삭제되는 문제.
    • 예시: 특정 학생의 정보를 삭제할 때 그 학생이 등록한 수업 정보까지 함께 삭제되는 상황.
  3. 갱신 이상(Update Anomaly)
    • 정의: 데이터를 갱신할 때, 동일한 정보가 여러 곳에 중복 저장되어 있어 일관되게 수정되지 않으면 데이터 불일치가 발생하는 문제.
    • 예시: 학생의 주소가 여러 레코드에 중복 저장되어 있을 때, 일부 레코드에서만 주소가 수정되면 데이터가 불일치하게 됨.

이상 현상의 해결 방법

  • 정규화(Normalization): 테이블을 분해하여 중복 데이터를 최소화하고, 데이터 무결성을 보장하는 방식입니다. 이상 현상을 방지하기 위해 정규화를 통해 테이블을 올바르게 설계합니다.
  • 정규화 단계:
    • 제1정규형(1NF): 테이블의 각 필드는 원자 값을 가져야 하며, 중복되는 데이터는 허용되지 않음.
    • 제2정규형(2NF): 부분 함수 종속성을 제거하여 기본 키에 종속된 속성만 포함.
    • 제3정규형(3NF): 이행적 함수 종속성을 제거하여 비주요 속성 간의 종속성을 없앰.

결론

이상 현상은 비정규화된 데이터베이스에서 발생하는 문제로, 데이터를 삽입, 삭제, 갱신할 때 무결성에 문제가 생기는 것을 의미합니다. 정규화를 통해 이러한 이상 현상을 예방하고, 데이터베이스의 무결성과 일관성을 유지할 수 있습니다.

728x90

'Category > 정보처리기사' 카테고리의 다른 글

SQL(Structured Query Language) 정리  (0) 2024.10.14
데이터베이스 회복(Recovery) 기법 정리  (2) 2024.10.14
프로세스 주요 상태 정리  (0) 2024.10.14
테스트 오라클(Test Oracle)이란?  (0) 2024.10.14
가용성(Availability)이란?  (0) 2024.10.14
'Category/정보처리기사' 카테고리의 다른 글
  • SQL(Structured Query Language) 정리
  • 데이터베이스 회복(Recovery) 기법 정리
  • 프로세스 주요 상태 정리
  • 테스트 오라클(Test Oracle)이란?
Corinee
Corinee
  • Corinee
    Coding Note
    Corinee
  • 전체
    오늘
    어제
    • 분류 전체보기 (356) N
      • Category (351) N
        • Algorithm (7)
        • SQL (2) N
        • Java (4)
        • C (9)
        • React (7)
        • JavaScript (9)
        • CSS (2)
        • Node (1)
        • SpringBoot (26)
        • Database (3)
        • Network (1)
        • Django (6)
        • Python (21)
        • Flask (4)
        • iOS (25)
        • Swift (4)
        • Flutter (11)
        • Dart (3)
        • Git (1)
        • Firebase (1)
        • Gof (1)
        • 정보처리기사 (112)
        • AI (5)
        • NestJs (4)
        • Docker (1)
        • 사이드 프로젝트 (1)
        • Note (78) N
        • Socket (1)
        • 개인 정보 처리 방침 (1)
        • 회고 (0)
        • Book (0)
        • Vue.js (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Jest
    json.parse(json.stringify())
    counter
    react router
    중첩 함수(nested function)
    chrome extension 자동 배포
    structuredclone()
    쉽게 풀어쓴 C언어 Express
    intellij 콘솔 한글 깨짐
    core web vitals
    ajax (asynchronous javascript and xml)
    react
    프로세스 강제 종료
    x.y.z (메이저.마이너.패치)
    named export vs default export
    Collections
    defaultdict
    math.h
    inp
    jackson 라이브러리
    stdlib.h
    javascript 필수 문법
    시맨틱 버전(semantic versioning
    useEffect
    semver)
    원시값(primitive)
    소프트웨어 버전 관리
    mermaid-cli
    public vs assets
    styled-components
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Corinee
데이터베이스 이상 현상(Anomalies) 정리
상단으로

티스토리툴바