Database - Chapter 3-21 실습 -간단한 스키마 설계하기

2025. 3. 20. 15:52·Database

 

🚀 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
email 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
'Database' 카테고리의 다른 글
  • Database - Chapter 4-22. 2) 실습 - mysqlsample data 분석(2/2)
  • Database - Chapter 4-22. 2) 실습 - mysqlsample data 분석(1/2)
  • Database - Chapter 3-20. SQL (DML) 심화(데이터 조인)
  • Database - Chapter 3-19. SQL (DML) 심화(파이썬으로 데이터 랜덤 생성)
Chansman
Chansman
안녕하세요! 코딩을 시작한 지 얼마 되지 않은 초보 개발자 찬스맨입니다. 이 블로그는 제 학습 기록을 남기고, 다양한 코딩 실습을 통해 성장하는 과정을 공유하려고 합니다. 초보자의 눈높이에 맞춘 실습과 팁, 그리고 개발하면서 겪은 어려움과 해결 과정을 솔직하게 풀어내려 합니다. 함께 성장하는 개발자 커뮤니티가 되기를 바랍니다.
  • Chansman
    찬스맨의 프로그래밍 스토리
    Chansman
  • 전체
    오늘
    어제
    • 분류 전체보기 (797)
      • Python (32)
      • 프로젝트 (114)
      • 과제 (25)
      • Database (40)
      • 멘토링 (11)
      • 특강 (37)
      • 기술블로그 (41)
      • 기술블로그-Fastapi편 (33)
      • 기술블로그-Django편 (154)
      • 기술블로그-Flask편 (36)
      • AI 분석 (5)
      • HTML & CSS (31)
      • JavaScript (17)
      • AWS_Cloud (21)
      • 웹스크래핑과 데이터 수집 (14)
      • Flask (42)
      • Django (77)
      • Fastapi (16)
      • 연예 (14)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    btscomeback
    titaniumcase
    homebartrend
    college reunions
    trumpmuskclash
    classaction
    urbantrends
    btsdischarge
    뷔
    americaparty
    global politics
    travel ban
    self-growth
    btsjungkook
    bts
    btsreunion
    hotcoffeecase
    livebroadcast
    chinanightlife
    lawsuitculture
    life reflection
    youngprofessionals
    remittance
    chatgpterror
    americanlaw
    RM
    newpoliticalparty
    gpterror
    basalcellcarcinoma
    smartphonedurability
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Chansman
Database - Chapter 3-21 실습 -간단한 스키마 설계하기
상단으로

티스토리툴바