Database를 활용한 헬스케어 데이터 분석 1일차 - 헬스케어와 데이터베이스

컬럼월드·2025년 10월 21일
post-thumbnail

데이터베이스 개요

: 데이터베이스가 등장하기 전에는 파일 시스템을 사용하여 데이터를 저장했습니다. 하지만 파일 시스템은 다음과 같은 문제를 안고 있었습니다.

데이터 중복성 (Redundancy)
: 같은 정보가 여러 파일에 중복되어 저장되어, 저장 공간이 낭비되고 데이터의 일관성이 깨지기 쉬웠습니다.

데이터 종속성 (Dependence)
: 데이터 저장 방식(파일 형식)이 변경되면, 데이터를 사용하는 프로그램 코드도 모두 수정해야 했습니다.

데이터베이스는 이러한 문제를 해결하고 데이터의 통합적 관리와 공유를 가능하게 합니다.

즉, 정의를 해보자면!
데이터베이스(Database, DB)는 특정 목적을 위해 구조화되어 저장된 관련 데이터들의 집합입니다. 단순한 데이터의 나열이 아니라, 데이터를 모아서 효율적으로 관리하고 검색하며, 다수의 사용자나 응용 프로그램이 공유할 수 있도록 체계적으로 조직된 시스템입니다.

데이터베이스의 주요 특징

데이터베이스는 다음 네 가지 중요한 속성을 통해 파일 시스템과 차별화됩니다.

실시간 접근성 (Real-time Accessibility): 사용자가 데이터를 요청하면 지연 없이 즉시 처리할 수 있어야 합니다.

지속적인 변화 (Continuous Evolution): 새로운 데이터의 삽입, 기존 데이터의 수정 및 삭제가 일어날 때마다 데이터베이스의 내용이 동적으로 변화해야 합니다.

동시 공유 (Concurrent Sharing): 여러 사용자나 프로그램이 같은 시점에 동일한 데이터를 접근하고 공유할 수 있어야 합니다.

내용 기반 참조 (Content-based Reference): 데이터의 주소나 위치가 아닌, 데이터가 가진 값(내용)을 기준으로 데이터를 검색할 수 있어야 합니다 (예: 이름이 '김오즈'인 사람을 찾아줘).

데이터 무결성 (Data Integrity)
데이터베이스에서 가장 중요한 목표 중 하나는 데이터 무결성을 유지하는 것입니다. 이는 데이터의 정확성, 일관성, 유효성을 보장하는 원칙입니다.

유일성 (Uniqueness): 기본 키(Primary Key) 같은 식별자는 중복되어서는 안 됩니다.

최소성 (Minimality): 유일성을 보장하는 데 필요한 최소한의 속성만 키로 구성되어야 합니다.

참조 무결성 (Referential Integrity): 테이블 간의 관계에서, 외래 키(Foreign Key)가 참조하는 값이 반드시 존재해야 합니다.

데이터베이스 종류
1. RDB (Relational Databeas)
: 관계형 모델 기반으로 SQL을 이용해 데이터를 관리한다.

  1. NoSQL (Not Only SQL)
    : 데이터 간의 관계를 정의하지 않고, 유연한 구조를 사용한다.

관계형 데이터베이스 (RDB)
데이터를 행(Row)과 열(Column) 형태의 테이블(Table)로 표현
테이블 간의 관계를 이용해 효율적으로 관리→ 무결성 보장
스키마(Schema)에 맞는데이터만 입력가능 → 안정성 확보
구조가일관적인 경우 사용

예: 은행 고객 정보, 쇼핑몰 상품 데이터 등

NoSQL
저장할 데이터 유형에 제한이 없음
새로운 데이터 구조를 추가하기 쉬움
자주 변하는 데이터 구조에 적합
대용량 데이터 처리에 강함

예: SNS 피드, 로그 데이터, IoT 센서 데이터

이 둘의 차이점은,

RDB vs NoSQL
RDB
행과 열 구조의 테이블로 구성
관계 기반 모델 사용 → 일관성과 안정성 보장
데이터 무결성이 중요할 때 사용
예: MySQL, PostgreSQL, MariaDB

NoSQL
데이터 표현 방식이 유연하고비정형적
대용량 데이터를 빠르게 처리
빅데이터, 실시간 로그, 캐시 처리등에 적합

예: MongoDB, Redis, Cassandra

언제 어떤 DB를 사용할까?
구조가 명확하고 일관된 경우 → RDB
빠른 확장성과 유연성이 필요한 경우 → NoSQL

관계형 데이터베이스 구성 요소
구성 요소 설명
테이블(Table) 행과 열로 구성된 데이터 저장 구조
속성(Attribute) 데이터의 특성을 나타내는 가장 작은 단위 (Column)
튜플(Tuple) 속성이 모여 구성된 하나의 행 (Row)
도메인(Domain) 속성이 가질 수 있는 값의 범위

DB-1

번호ID전화번호
01AAA010-1234-5678
02AAB010-1357-2468

DB-2

번호주문번호
01A-001
02A-002

DB-1의 데이터와 DB-2의 데이터에서 공통으로 있는 속성이 있습니다. 바로 '번호'인데요.
DB-2의 데이터가 DB-1의 데이터의 '번호'속성을 참조한다고 가정해봅시다.
DB-2테이블의 입장에서는 '번호'속성을 자기 자신의 테이블의 값이 아니라 자기 자신 외에 테이블에서 속성값을 가져왔습니다. 이를 외래키(Foreign Key)라고 합니다.

조건에 만족하는 튜플을 찾거나, 정렬할 때 기준이 되는 속성을 키(Key)라고 합니다.
키는 총 5가지로 나뉩니다.

  1. 기본키
  2. 외래키
  3. 후보키
  4. 대체키
  5. 슈퍼키

하나씩 살표보도록 하겠습니다.

  1. 기본키(Primary Key)
    : 서로 다른 튜플을 유일하게 식별할 수 있는 기준이 되는 속성을 뜻한다.
    중복되는 값을 가질 수 없음
    Null 값을 가질 수 없음
    테이블 당 1개만 설정

  2. 외래키(Foreign Key)
    : 다른 테이블의 기본키를 참조하는 속성으로 테이블의 관계를 정의합니다.

  3. 후보키
    : 기본키가 될 수 있는 키로 유일성과 최소성을 만족합니다. (기본키 ⊂ 후보키)

  4. 유일성 (Uniqueness)
    정의: 키를 구성하는 속성의 값 조합이 해당 테이블 내의 모든 행을 중복 없이 유일하게 구별할 수 있어야 합니다.

목적: 데이터 레코드를 정확하게 식별하고 혼동을 방지합니다.

  1. 최소성 (Minimality / Irreducibility)
    정의: 유일성을 만족하는 속성 집합 중에서, 어떤 속성이라도 제거하면 더 이상 유일하게 식별할 수 없게 되는 가장 작은(최소한의) 집합이어야 합니다.

목적: 불필요한 속성(redundant attribute)을 제거하여 효율성을 높이고 데이터 중복을 줄입니다.

💡 예시
'학생' 테이블에 다음 속성들이 있다고 가정합니다.

속성값의 특징
A: 학번학번 모든 학생이 고유한 값을 가짐
B: 주민등록번호주민등록번호 모든 학생이 고유한 값을 가짐
C: (학번, 이름)학번이 유일하므로 이 조합도 유일함

후보 키 : 학번,주민등록번호
두 속성 모두 유일성과 최소성을 만족합니다.

슈퍼 키 : 학번, 이름

유일성은 만족하지만, 이름이 없어도 학번만으로 충분히 식별 가능하므로 최소성이 위배되어 후보 키가 될 수 없습니다. 즉, 슈퍼 키입니다.

  1. 대체키
    : 후보키 중에 기본키가 아닌 키를 말합니다. (대체키 ⊂ 후보키)

  2. 슈퍼키
    : 튜플을 식별할 수 있는 유일성은 만족하지만 최소성은 만족하지 않는 키입니다.

데이터의 정확성과 일관성을 유지하기 위해 무결성(Integrity)은 필수로 적용되는 원칙입니다.

무결성 제약 조건

  1. 개체 무결성 : 기본키는 Null 값과 중복된 값을 가질 수 없다.
  2. 참조 무결성 : 외래키는 Null이거나 참조되는 릴레이션의 기본키 값과 동일해야 한다.
  3. 도메인 무결성 : 특정 속성값은 그 속성이 정의된 도메인에 속한 값이어야 한다.
  4. NULL 무결성 : 특정 속성값은 널 값을 가질 수 없다.
  5. 고유 무결성 : 각 튜플이 가지는 속성값들은 서로 달라야 한다.
  6. 키 무결성 : 테이블에 최소 한 개 이상의 키 존재해야 한다.

오랜만에 글을 쓸려니 시간이 오래 걸리네요! 기록용으로 얼른 작성을 해야될텐데
쌓여있는 글들이 꽤 되네요. 허허
날씨도 추석 전이랑 비교가 안되게 추워졌네요.
이제는 히트텍을 슬슬 꺼내서 겨울맞이 준비를 해야겠어요.
일교차도 크고 날씨도 추워졌으니 건강 잘 챙기시고 조심하세요~~

profile
안녕하세요, 코딩과 잡다한 얘기도 좋아해요.

2개의 댓글

comment-user-thumbnail
2025년 10월 23일

블로그 잘 읽었습니다! 이 부분 개념들이 되게 헷갈리는 거 같은데 덕분에 한번 더 정리했어요 감사합니다. 글 자주 보러올게요 ㅎㅎ

1개의 답글