📚 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 하는것.
💡 모델링 단계
- 개념적 모델링
- 현실 세계의 구조를 추상화
- 예: 학생 → 수강 → 과목
- 논리적 모델링
- 테이블 구조로 변환, 관계 정의
- 예: 학생(id, 이름), 과목(id, 이름)
- 물리적 모델링
- 실제 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 작성 시 영어 사용 정리
✅ 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 등)

'국비지원 - 실버마케팅(코딩) 250206~' 카테고리의 다른 글
| 💻 MySQL 기본 정리 – 데이터 조회부터 집계까지 (1) | 2025.05.13 |
|---|---|
| MySQL Workbench에서 자료 불러오고 조건 조회하는 법 (SQL 기초 완전 정리) (2) | 2025.05.13 |
| "처음 배우는 DOM 탐색! .parentElement로 부모 요소 알아보기" (0) | 2025.05.08 |
| "조건에 맞는 값만 골라보자! 자바스크립트 filter() 쉽게 이해하기" (0) | 2025.05.08 |
| "이 안에 그 값 있나요? 자바스크립트 includes() 쉽게 배우기" (0) | 2025.05.08 |