🚀 MySQL 실습 - 간단한 스키마 설계하기
MySQL을 사용하여 간단한 데이터베이스 스키마를 설계하는 방법을 정리했습니다. 🎯
이 글을 통해 기본적인 테이블 설계 및 관계 설정 방법을 확실하게 익혀보세요!
📌 1. user 테이블 만들기
🔹 개념
- user 테이블은 사용자 정보를 저장하는 테이블입니다.
- 자동 증가(AUTO_INCREMENT)를 사용하여 고유한 id 값을 생성합니다.
- ENUM을 활용하여 제한된 값(male, female)만 저장 가능하도록 설정합니다.
✅ user 테이블 생성 SQL
sql
CREATE TABLE user (
id INT AUTO_INCREMENT PRIMARY KEY, -- 고유 ID (자동 증가)
password VARCHAR(4), -- 4자리 랜덤 비밀번호
name VARCHAR(3), -- 3자리 한글 이름
gender ENUM('male', 'female'), -- 성별 (제한된 값)
email VARCHAR(15), -- 5자리 영문 + "@gmail.com"
birthday CHAR(6), -- 6자리 숫자로 표현된 생년월일
age TINYINT, -- 2자리 숫자 나이
company ENUM('samsung', 'lg', 'hyundai') -- 회사 (제한된 값)
);
✅ 설명
- id → 자동 증가(AUTO_INCREMENT)를 통해 고유 ID 생성
- password → 4자리 랜덤 비밀번호 저장
- name → 3자리 한글 이름 저장
- gender → 'male', 'female' 중 하나만 허용 (ENUM 사용)
- email → 5자리 영문 + "@gmail.com" 형식
- birthday → 6자리 숫자로 생년월일 저장 (CHAR(6))
- age → 최대 2자리 나이 값 저장 (TINYINT)
- company → 삼성, LG, 현대 중 하나만 허용 (ENUM 사용)
💡 ENUM 타입이란?
- ENUM은 미리 정의된 값만 허용하는 데이터 타입입니다.
- 예를 들어, ENUM('male', 'female')을 사용하면 'male' 또는 'female'만 입력 가능합니다.
📌 2. board 테이블 만들기
🔹 개념
- board 테이블은 게시판 정보를 저장하는 테이블입니다.
- user_id를 외래 키(Foreign Key) 로 설정하여 user 테이블과 연결합니다.
- CHECK 제약 조건을 사용하여 좋아요(likes) 값을 1~100 사이로 제한합니다.
✅ board 테이블 생성 SQL
sql
CREATE TABLE board (
id INT AUTO_INCREMENT PRIMARY KEY, -- 게시글 ID (자동 증가)
title VARCHAR(5), -- 5글자 제목
content VARCHAR(10), -- 10글자 내용
likes INT CHECK (likes BETWEEN 1 AND 100), -- 1~100 사이의 좋아요 개수
img CHAR(1) DEFAULT 'c', -- 기본 이미지 (문자 'c')
created DATE DEFAULT CURRENT_DATE, -- 생성 날짜 (오늘 날짜)
user_id INT, -- 작성자 ID (외래 키)
FOREIGN KEY (user_id) REFERENCES user(id) -- user 테이블과 연결
);
✅ 설명
- id → 게시글 ID (AUTO_INCREMENT)
- title → 5글자 길이의 제목 저장
- content → 10글자 길이의 본문 내용 저장
- likes → 1~100 사이의 숫자만 허용 (CHECK 사용)
- img → 기본 값으로 'c' 저장 (DEFAULT 'c')
- created → 게시글이 생성된 날짜 자동 저장 (DEFAULT CURRENT_DATE)
- user_id → 작성자 ID를 user 테이블의 id와 연결 (Foreign Key 설정)
💡 CHECK 제약 조건이란?
- CHECK (likes BETWEEN 1 AND 100)을 사용하면 likes 값이 1~100 사이의 값만 저장 가능합니다.
📌 3. user - board 관계 설정
📌 user_id를 외래 키(Foreign Key)로 설정하여 관계를 맺음
✅ 관계 구조
user 테이블board 테이블
id (PK) | user_id (FK) |
name | title |
content | |
gender | likes |
- 1명의 사용자는 여러 개의 게시글을 작성할 수 있음 (1:N 관계)
- board 테이블의 user_id는 user 테이블의 id를 참조함
'Database' 카테고리의 다른 글
Database - Chapter 4-22. 2) 실습 - mysqlsample data 분석(2/2) (0) | 2025.03.21 |
---|---|
Database - Chapter 4-22. 2) 실습 - mysqlsample data 분석(1/2) (0) | 2025.03.21 |
Database - Chapter 3-20. SQL (DML) 심화(데이터 조인) (0) | 2025.03.20 |
Database - Chapter 3-19. SQL (DML) 심화(파이썬으로 데이터 랜덤 생성) (0) | 2025.03.20 |
Database - Chapter 3-18. SQL (DML) 심화(테이블 생성) (0) | 2025.03.20 |