귀여운 눈높이에서 작성된, 🐰

하루 한 걸음씩, 성장 하는 중 입니다 🫶🏻

Studying/Database

데이터베이스 공부하기 - 개념, 데이터 모델링

creamymood 2025. 5. 20. 11:58

1. 데이터 베이스란 ? (DBMS) 왜 필요한지?

: 데이터 모음을 보다 편리하고 효율적으로 관리하는 소프트웨어

  특정 목적에 맞게 데이터를 저장하고, 효율적 관리, 필요 시 쉽게 검색하거나 수정할 수 있도록 체계화된 데이터의 집합.

 

   - 사용자, 애플리케이션, 시스템 등에 의해 생성된 데이터를 저장하고,

   - 여러 사람이 동시에 접근할 수 있도록 하며,

   - 중복을 줄이고 일관성을 유지하도록 설계된다.

 

2. 데이터 베이스의 종류

: 데이터 베이스는 크게 관계형 데이터 베이스(RDBMS)와, 비관계형 데이터 베이스(NoSQL DBMS)로 나뉜다.

 

 

 

2-1 관계형 데이터 베이스(RDBMS)

관계형 데이터베이스는 데이터를 **행(Row)과 열(Column)**로 구성된 테이블(Table) 형식으로 저장한다.
이 테이블 간의 관계를 설정할 수 있어, 복잡한 데이터를 체계적으로 관리할 수 있다.

       - 주요 특징:

     - 데이터는 구조화된 테이블 형식으로 저장됨

     - **관계(Relation)**를 통해 테이블 간 연결 가능

     - SQL이라는 표준 언어를 통해 조작함

     - 강력한 데이터 무결성

     - 복잡한 쿼리에 유리

 

      - 대표적인 관계형 데이터 베이스 종류

Oracle 상용 DBMS, 안정성과 보안이 뛰어남. 주로 정부나 기업에서 사용
SQL Server Microsoft에서 개발, Windows 환경에서 사용
MySQL 오픈소스, 가볍고 빠르며 많이 사용됨
PostgreSQL 오픈소스, 고급 기능 지원 (트리거나 복잡한 쿼리 등)

 

 

 

 

2-2 비관계형 데이터 베이스(NoSQL DBMS)

NoSQL(“Not Only SQL”) 데이터베이스는 전통적인 **관계형 데이터베이스(RDBMS)**와 달리 테이블-행-열 구조에 얽매이지 않고, 다양한 형태로 데이터를 저장·관리하는 데이터베이스를 통칭한다.

 

     - 주요 특징:

     - 스키마(Schema)가 엄격하게 정의되지 않거나, 애플리케이션 요구사항에 따라 동적으로 변화 가능

     - 수평적 확장(Scalability) 방식으로 처리, 대규모 데이터 처리

 

MongoDB 가장 널리 사용되는 문서지향 데이터 베이스 : 데이터 구조가 자주 바뀌는 애플리케이션에 적합
Cassandra 분산형 컬럼 지향. 높은 가용성과 확장성. 주로 대규모 데이터. 인스타그램, 넷플릭스 등에서 사용 됨
Redis 초고속 데이터 접근이 필요한 애플리케이션에 최적화. 데이터를 메모리에 저장하기 때문에 속도 빠름
Neo4j 그래프 형 데이터 베이스. 데이터 간 복잡한 데이터 관리에 최적화

 

 

 

3. 데이터 모델링

데이터를 논리적 구조로 표현하고 설계하는 과정. 쉽게 말해, “데이터를 어떤 식으로 저장하고, 서로 어떻게 연결될지를 미리 계획하는 것”

 

4. 데이터 모델링 진행 과정

단계 주요 표현 요소
요구사항 분석 의뢰인이 원하는 것에 대한 깊은 논의 요구  
개념적 모델링(Conceptual) 사용자의 요구사항을 추상화하여 전반적인 구조 정의 엔터티(Entity), 속성(Attribute), 관계(Relationship)
논리적 모델링(Logical) DBMS에 독립적으로 논리적인 구조 설계 테이블(Table), 컬럼(Column), 키(Key)
물리적 모델링(Physical) 실제 DBMS에 맞춰 성능 고려한 구조 설계 인덱스(Index), 파티셔닝, 저장소 설정

 

  핵심 용어 정리

엔터티(Entity) 데이터를 저장할 대상(=테이블) 고객, 주문, 제품 등
속성(Attribute) 엔터티의 속성 (=컬럼) 이름, 전화번호, 가격 등
관계(Relationship) 엔터티 간의 연결 관계 고객과 주문은 1:N 관계
기본키(Primary Key) 데이터를 유일하게 식별할 수 있는 값 고객 ID
외래키(Foreign Key) 다른 테이블의 기본키를 참조하는 값 주문 테이블의 고객 ID

 

 예시: 온라인 쇼핑몰

   간단한 모델링 예를 들면:

[고객] ---< [주문] >--- [상품]

    고객은 여러 개의 주문을 할 수 있고(1:N)

    주문은 여러 개의 상품을 포함할 수 있음(N:M)

    이 관계는 테이블로 풀면 다음과 같습니다:

    고객 테이블 주문 테이블 상품 테이블 주문상품 테이블 (중간 테이블)

고객 테이블 주문 테이블 상품 테이블 주문상품 테이블 (중간 테이블)
고객 ID 주문 ID 상품 ID 주문 ID, 상품 ID
이름 고객 ID(FK) 이름 수량, 가격

 

좋은 모델링을 위한 팁

    중복 데이터는 최소화 (정규화)

    너무 복잡한 구조는 피하기

    실제 데이터 흐름과 사용 목적을 고려

    쿼리 성능 고려한 설계

    향후 확장성도 염두에 두기

 

5. 엔터티와 속성

엔터티란?

**“데이터베이스에 저장할 대상”**
현실 세계에서 **정보를 저장할 수 있는 ‘명사(사람, 사물, 사건 등)’** 데이터 베이스에서 "것"으로 다뤄야 할 모든 것.

 

 

엔터티의 세 가지 분류

유형 엔터티 눈에 보이고, 독립적으로 존재하는 대상 사람, 제품, 회사, 책
무형 엔터티 눈에는 안 보이지만, 정보로서 존재하는 대상 계정, 권한, 등급, 계약
사건 엔터티 어떤 '행동'이나 '이벤트'처럼 발생하는 일 주문, 예약, 결제, 출결

 

1. 유형 엔터티 (Tangible Entity)

    설명: 물리적으로 존재하는 것들 (사람, 사물 등)

    특징: 대부분 명사이고, 다른 객체와 관계를 맺을 수 있음

    예시: 사용자(User), 책(Book), 상품(Product), 사원(Employee)

    📦 → 실제로 존재하는 "주체"

 2. 무형 엔터티 (Intangible Entity)

    설명: 실체는 없지만, 정보로서 중요한 것들

    특징: 직접 볼 수 없지만, 시스템에서 추적하거나 관리해야 함

    예시: 사용자 등급(Level), 계정(Account), 멤버십(Membership), 정책(Policy)

    📄 → 시스템이 관리하는 "속성" 같은 개념

3. 사건 엔터티 (Event Entity)

    설명: 시간의 흐름에 따라 발생하는 행동이나 사건

    특징: 언제 일어났는지가 중요함 (날짜, 상태 등)

    예시: 주문(Order), 예약(Reservation), 출석(Attendance), 결제(Payment)

    🕐 → "기록으로 남겨야 하는 일"

 

 예시 시나리오로 이해하기

"고객이 쇼핑몰에서 상품을 주문했다"

  • 고객 → 유형 엔터티
  • 상품 → 유형 엔터티
  • 주문 → 사건 엔터티
  • 고객 등급 → 무형 엔터티

 

좋은 질문이에요, Jane!
이번엔 **인스턴스(Instance)**가 뭔지 아주 쉽게, 문서적인 말투로 설명해드릴게요 😊


6.  인스턴스(Instance)란?

엔터티(Entity)의 실제 데이터 한 줄(한 개체)**를 인스턴스라고 해요.
즉, 설계된 틀(Entity)에 따라 실제로 저장된 정보를 말해요.

“사람”이라는 엔터티가 있다면,
실제 사람인 "Jane Kim", "John Lee" 같은 각각은 인스턴스입니다.