📚 Database 기초 개념 정리

현대의 대부분의 IT 서비스는 수많은 데이터를 정확하고 빠르게 저장하고 검색할 수 있어야 합니다. 이때 필요한 것이 바로 **데이터베이스(Database)**입니다.


✅ Database란?

데이터를 체계적으로 저장하고, 필요할 때 꺼내서 사용할 수 있는 정리된 공간

  • 많은 데이터를 잊지 않고, 정확하고 빠르게 찾기 위해 존재
  • 사용자 정보, 채팅 기록, 친구 목록, 상품 목록, 주문 내역, 재고 관리 등 모든 기록이 데이터베이스에 저장됨

 

✅ 데이터베이스의 구조

💡 기본 용어

용어 설명

데이터베이스(Database / 스키마) 데이터를 체계적으로 저장하는 가장 큰 단위
테이블(Table) 데이터를 표 형태로 저장 (엑셀과 비슷)
행(Row / 레코드) 실제 하나의 데이터 (예: 한 사람의 정보)
열(Column / 필드) 데이터의 속성 종류 (예: 이름, 나이 등)

 

✅ DBMS (Database Management System)

데이터베이스를 관리하는 프로그램

대표적인 DBMS는 아래와 같습니다:

  • MySQL 🟢 (우리가 사용할 것)
  • Oracle 🔵 (유료)
  • PostgreSQL 🟡
  • SQLite
  • MongoDB 🔴 (NoSQL 계열)

MySQL과 Oracle은 유사한 계열,
MongoDB는 약간 다른 NoSQL 계열로 구분됩니다.


✅ SQL이란?

Structured Query Language (구조화된 질의 언어)
영미권에서는 "시퀄(SQL)"이라고 발음

SQL을 통해 아래 작업을 할 수 있습니다:

  • 데이터 저장
  • 데이터 조회
  • 데이터 수정
  • 데이터 삭제

📌 SQL은 모든 데이터 기반 서비스에서 필수로 사용됨

DB IT 서비스에서는 다 씀. 사용자정보 채팅기록 친구목록 프로필 상품목록 주문내역 재고관리 등등 기록해야하는것들은 전부다 SQL에 저장됨.

 

다시 정리 >>>>

가장 큰 것  데이터베이스(스키마) : 데이터를 체계적으로 저장하는 공간

테이블 : 데이터를 표처럼 정리한 단위

 : 실제 하나의 정보 조각( 한 사람 데이터, 한 상품 데이터)

 : 데이터의 종류(이름,나이,브랜드, 가격 등)

DBMS : 데이터베이스를 관리하는 프로그램 우리는 MySQL 사용할것

SQL : 데이터베이스에게 명령하는 언어(저장 조회 수정 삭제)


✅ MySQL 구성 요소

📦 MySQL Server

  • 데이터베이스의 본체
  • 오직 SQL 명령어로만 동작
  • 필수 설치

🖥️ MySQL Workbench

  • GUI 기반 도구 (깃허브 데스크톱처럼 눈에 보이는 인터페이스)
  • SQL 명령어 + 클릭 등으로 조작 가능
  • 선택사항이지만 우리는 주로 이걸 사용할 예정

서버만 쓰면 눈에 안 보여서 헷갈리기 쉬움 → Workbench 이용 권장


✅ 데이터 모델링 (Database Modeling)

현실의 정보를 컴퓨터가 이해할 수 있도록 설계도처럼 정리하는 작업
무엇을 어떻게 저장하고 어떻게 연결할지. <<결론적으로 이걸 알기위해 SQL 하는것.

💡 모델링 단계

  1. 개념적 모델링
    • 현실 세계의 구조를 추상화
    • 예: 학생 → 수강 → 과목
  2. 논리적 모델링
    • 테이블 구조로 변환, 관계 정의
    • 예: 학생(id, 이름), 과목(id, 이름)
  3. 물리적 모델링
    • 실제 DB에 맞게 데이터 타입, 제약 조건 설정
    • 예: VARCHAR(20), PRIMARY KEY, FOREIGN KEY

✅ 엔티티, 속성, 관계

용어 설명

엔티티(Entity) 저장 대상 (예: 학생, 고객, 상품 등)
속성(Attribute) 엔티티의 세부 정보 (예: 이름, 가격, 위치 등)
관계(Relationship) 엔티티 간의 연결성 (예: 학생-성적은 1:N 관계)

 

🔄 관계 예시

  • 고객 : 주문 = 1:N
  • 주문 : 주문상품 = 1:N
  • 주문상품 : 상품 = N:1
  • 주문상품 : 창고 = N:N

고객 ,주문, 상품, 주문상품, 창고

고객과 주문은 일대다 관계(고객은 주문을 여러번 할 수있으니까)

주문과 주문상품은 일대다관계(한번 주문할때 여러개의 상품주문가능)

주문상품과 상품은 다대일관계

주문상품과 창고는 다대다관계(둘 다 여러개 있을수있으니까)

 

*객체와 속성

핵심 구성 요소

엔티티(Entity) – 저장할 대상 학생, 과목, 성적, 상품, 고객, 창고

속성(Attribute) – 엔티티의 세부 항목 이름, 학번, 주문번호, 점수, 가격, 창고위치

관계(Relationship) – 엔티티 간의 연결. – 학생성적은 (1:N)

고객 주문은 (1:N) 주문창고는 (N:N)

데이터 모델링 도구 //ER 다이어그램으로 설계하는 것. (대학에선 시험도 침)

ER 다이어그램 = 영미권에서는 ERD 라고 부름. (엔티티 릴레이션십 다이어그램)

✅ ER 다이어그램 (ERD)

Entity Relationship Diagram
엔티티와 관계를 시각적으로 표현한 데이터 모델링 도구

  • 대학에서는 시험에도 나올 만큼 중요
  • 하지만 우리는 직접 그리기보단 필요 시 ChatGPT 등으로 설계 요청 가능

 

우리는 위의 것 공부해서 모델링 설계는 SKIP// chatGPT 대화하면서 ERD 그려줘 DB 설계해줘하면 간단한거는 잘함.

(개발자 과정까지는 아니라서 그리는 거는 안 할것임.)

 

유료 > SOFTWARE ARCHITECT GPT

내가 영앙제 쇼핑몰 사이트 만들려고 하는데 다이어그램 만들어줘. 하면 알아서 만들어준다.

 

//1. chatGPT를 활용해서

//2. 영화관 예매 시스템의  ERD를 그려보세요.

//3. 위에 있는 내용이랑 함께 블로그 정리. 과제를 선생님이 내주셔서 해보았다.

 

영화관 예매 시스템의    ERD

 

현업에서 ERD나 데이터베이스 관련 용어를 사용할 때는 대부분 영어를 사용

 

🎯 ERD 작성 시 영어 사용 정리

1. 테이블명과 컬럼명은 영어 사용이 원칙

  • 예: user, reservation, seat, created_at
  • 표준화, 협업, 도구 호환성 측면에서 영어가 필수

2. 표기 방식은 스네이크 케이스(snake_case) 사용

  • 예: user_id, movie_title, reservation_date
  • 공백 없이 소문자 + 언더스코어로 연결

3. 실제 저장 데이터는 한글도 가능

  • 예: 영화 제목, 사용자 이름 등은 한글 입력 가능
    • movie.title = "밀수"
    • user.name = "홍길동"

4. 문서화는 내부 팀 상황에 따라

  • 국내 팀: 한글 설명서도 무방
  • 다국적 협업 또는 외부 공개: 영어 문서 선호

 

 

🧩 ERD 컬럼 작명 실전 가이드

✅ 1. 기본 네이밍 규칙

 

✅ 2. 일관성 있는 접두사/접미사

  • 외래키는 _id로 끝내기 → user_id, screen_id
  • 시간은 _at으로 끝내기 → reserved_at, released_at
  • boolean 값은 is_, has_로 시작 → is_deleted, has_discount

✅ 3. 관계 명시를 위한 중간 테이블명

  • N:M 관계는 두 엔티티명 조합으로 작성
    • 예: reservation_seat, user_role

✅ 4. 복수 vs 단수

  • 테이블명은 복수형보다 단수형 선호 (users ❌ → user ✅)
  • 컬럼명은 상황에 따라 의미대로 (total_price, seat_number 등)

 

+ Recent posts