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" 같은 각각은 인스턴스입니다.
'Studying > Database' 카테고리의 다른 글
SQL 공부하기 - CRUD -(1) INSERT, (2) SELECT, (3) UPDATE , (4) DELETE (0) | 2025.05.26 |
---|---|
SQL 공부하기 - SQL 소개, 기초문법, 데이터 타입 (0) | 2025.05.20 |