💻
ComputerScience
  • 목차
  • Operating System
    • 운영체제란
    • 프로세스 vs 스레드
    • 프로세스 주소 공간
    • 인터럽트(Interrupt)
    • 시스템 콜(System Call)
    • PCB와 Context Switching
    • IPC(Inter Process Communication)
    • CPU 스케줄링
    • 데드락(DeadLock)
    • Race Condition
    • 세마포어(Semaphore) & 뮤텍스(Mutex)
    • 페이징 & 세그먼테이션
    • 페이지 교체 알고리즘
    • 메모리(Memory)
    • 파일 시스템
  • Network
    • OSI 7 계층
    • TCP 3 way handshake & 4 way handshake
    • TCP/IP 흐름제어 & 혼잡제어
    • UDP
    • 대칭키 & 공개키
    • HTTP & HTTPS
    • TLS/SSL handshake
    • 로드 밸런싱(Load Balancing)
    • Blocking,Non-blocking & Synchronous,Asynchronous @LifesLike
    • Blocking & Non-Blocking I/O
  • Algorithm
    • 거품 정렬(Bubble Sort)
    • 선택 정렬(Selection Sort)
    • 삽입 정렬(Insertion Sort)
    • 퀵 정렬(Quick Sort) @mimwin
    • 병합 정렬(Merge Sort)
    • 힙 정렬(Heap Sort)
    • 기수 정렬(Radix Sort)
    • 계수 정렬(Count Sort)
    • 이분 탐색(Binary Search)
    • 해시 테이블 구현
    • DFS & BFS @sujin-kk
    • 최장 증가 수열(LIS)
    • 최소 공통 조상(LCA)
    • 동적 계획법(Dynamic Programming)
    • 다익스트라(Dijkstra) 알고리즘
    • 비트마스크(BitMask)
  • Database
    • 키(Key) 정리
    • SQL - JOIN
    • SQL Injection
    • SQL vs NoSQL
    • 정규화(Nomalization)
    • 이상(Anomaly)
    • 인덱스(INDEX)
    • 트랜잭션(Transaction)
    • 트랜잭션 격리 수준(Transaction Isolation Level)
    • 저장 프로시저(Stored PROCEDURE)
    • 레디스(Redis) @sujin-kk
  • Java
    • Java 컴파일 과정
    • Call by Value vs Call by Reference
    • String & StringBuffer & StringBuilder
    • 자바 가상 머신(Java Virtual Machine)
    • Casting(업캐스팅 & 다운캐스팅)
    • 오토 박싱 & 오토언박싱
    • Thread 활용
    • 고유 락(Intrinsic Lock)
    • 문자열 클래스
    • Garbage Collection
    • Promotion & Casting
    • Primitive type & Reference type
    • 직렬화(Serialization)
    • Error & Exception
    • Stream API
    • Record
    • Composition
Powered by GitBook
On this page
  • 이상(Anomaly)
  • 종류
  • 삽입 이상 (Insertion Anomaly)
  • 갱신 이상 (Modification/Update Anomaly)
  • 삭제 이상 (Deletion Anomaly)
  • 해결책
  • 출처
  1. Database

이상(Anomaly)

Previous정규화(Nomalization)Next인덱스(INDEX)

Last updated 2 years ago


이상(Anomaly)

  • 정규화 되지 않은 데이터베이스에서 발생하는 문제

  • 테이블 안에서 데이터 중복성에 의해서 발생되는 데이터 불일치 현상

  • 릴레이션 안에서 일부 속성들의 종속이나 데이터의 중복으로 인해 데이터 조작시 불일치가 발생하는 현상

  • 애트리뷰트들의 종속관계를 하나의 릴레이션에 표현하기 때문에 발생하는 현상

종류

삽입 이상 (Insertion Anomaly)

  • 불필요한 정보를 함께 저장하지 않고서는 어떤 정보를 저장이 불가능

  • 현재 테이블에서 아직 강의가 없는 교수는 수업 코드가 널(빈값)이어서 수업 코드가 식별컬럼(널 비허용)인 이 테이블에 추가할 수가 없게 됨

갱신 이상 (Modification/Update Anomaly)

  • 반복된 데이터 중에서 일부를 갱신할 때 데이터의 불일치가 발생

  • 같은 정보가 여러 튜플에서 표현 중일 때 갱신하면 논리적인 불일치가 발생한다.

  • 현재 릴레이션에서 특정 직원의 주소 변경은 여러 레코드에 적용해야 한다. 하지만 업데이트가 부분적으로 성공하면 테이블은 모순 상태가 되고 해당 직원의 주소에 대한 질문의 대답이 달라질 수 있다.

삭제 이상 (Deletion Anomaly)

  • 현재 릴레이션에서 임의의 과정에서 레코드가 릴레이션에서 삭제된다면 그 교수에 대한 정보를 아예 잃어버릴 수 있다.

해결책

  • 정규화

  • 키 (Faculty ID, Course Code)

  • (Faculty ID, Course Code) -> Faculty Name, Faculty Hire Date Faculty ID -> Faculty Name, Faculty Hire Date

  • 키가 아닌 Faculty Name, Faculty Hire Date는 (Faculty ID, Course Code)에 함수적 종속이면서 (Faculty ID, Course Code)의 부분집합인 Faculty ID에서 다시 함수적 종속이므로 완전 함수적 종속이 아니다

Faculty ID
Faculty Name
Faculty Hire Date

389

Dr.Giddens

10-Feb-1985

407

Dr.Saperstein

19-Apr-1999

Faculty ID
Course Code

389

ENG-206

407

CMP-101

407

CMP-102


  • 키 (Employee ID, Skill)

  • (Employee ID, Skill) -> Employee Address Employe ID -> Employee Address

  • 키가 아닌 Employee Address는 (Employee ID, Skill)에 함수적 종속이면서 (Employee ID, Skill)의 부분집합인 Employee ID에서 다시 함수적 종속이므로 완전 함수적 종속이 아니다

  • 갱신 이상 발생: 직원 주소를 바꿀 때 삭제 이상 발생: 스킬이 하나인 직원의 정보 삭제 시 직원 정보도 삭제 삽입 이상 발생: 스킬이 하나도 없는 직원 삽입 불가능

Employee ID
Employee Addresss

426

87 Sycamore Grove

519

94 Chestnut Street

Employee ID
Skill

426

Typing

426

Shorthand

519

Public Speaking

519

Carpentry

필요한 정보를 함께 삭제하지 않고서는 어떤 정보를 삭제가 불가능

갱신 이상 발생: 이름을 바꿀때 삭제 이상 발생: 수업이 하나인 교수의 정보 삭제 시 교수 정보도 삭제 삽입 이상 발생: 수업이 하나도 없는 교수 삽입 불가능

출처