CS (Computer Science)

DB Table Relation

SMASMC 2024. 1. 23. 01:52

1:1 (일대일) 관계

  • 예시 : 사용자와 프로필
    CREATE TABLE USERS(
    user_id INT PRIMARY KEY,
    username VARCHAR(255)
    );
    

CREATE TABLE Profiles(
profile_id INT PRIMARY KEY,
user_id INT UIQUE,
FOREIGN KEY (user_id) REFERENCES Users(user_id)
);

각 사용자(user)는 하나의 프로필(profile)을 지닌다. 프로필은 특정 사용자에게 속한다.



## 1:n (일대다) 관계
-    예시 : 게시글과 댓글

CREATE TABLE Posts(
post_id INT PRIMARY KEY,
title VARCHAR(255),
content TEXT
);

CREATE TABLE Conmments(
comment_id INT PRIMARY KEY,
post_id INT,
content TEXT,
FOREIGN KEY (post_id) REFERENCES Posts(post_id)
);

한 게시글은 여러 댓글을 지낼 수 있지만, 한 댓글은 하나의 게시물을 지닐 수 있다.

## n:1 (다대일) 관계
-    예시 : 주문과 고객

CREATE TABLE Orders(
order_id INT PRIMARY KEY,
customer_id INT,
order_details VARCHAR(255),
FOREIGN KEY(customer_id) REFERENCES Customers(customer_id)
);

CREATE TABLE Customers(
customer_id INT PRIMARY KEY,
customer_name VARCHAR(255)
);

-    여러 주문은 하나의 고객을 지니고, 하나의 고객은 여러 주문을 할 수 있다.

## n:n (다대다) 관계
-    예시 : 요리 레시피와 요리에 사용되는 재료

CREATE TABLE Recipes (
recipe_id INT PRIMARY KEY,
recipe_name VARCHAR(255)
);

CREATE TABLE Ingredients (
ingredient_id INT PRIMARY KEY,
ingredient_name VARCHAR(255)
);

CREATE TABLE RecipeIngredients (
recipe_id INT,
ingredient_id INT,
PRIMARY KEY (recipe_id, ingredient_id),
FOREIGN KEY (recipe_id) REFERENCES Recipes(recipe_id),
FOREIGN KEY (ingredient_id) REFERENCES Ingredients(ingredient_id)
);

-    각 요리 레시피는 여러 재료를 사용하며, 또한 각 요리에 사용되는 재료들은 여러 레시피에 사용된다.