์ปค๋ฎค๋ํฐ ๊ฒ์ํ Lv.1 - ๋ฐ์ดํฐ ๋ชจ๋ธ๋ง
ํ์, ๊ฒ์๊ธ, ๋๊ธ, ํ์ผ์ ๊ด๋ฆฌํ๋ ์์คํ
์ ๋ฐ์ดํฐ ๋ชจ๋ธ์ ์ค๊ณํฉ๋๋ค.
1.
์๊ตฌ์ฌํญ ์ ์
2.
๊ฐ๋
์ ์ค๊ณ
3.
๋
ผ๋ฆฌ์ ์ค๊ณ
4.
๋ฌผ๋ฆฌ์ ์ค๊ณ
5.
๊ตฌํ
์๊ตฌ์ฌํญ ์ ์
ํ์, ๊ฒ์๊ธ, ๋๊ธ, ํ์ผ์ ๊ด๋ฆฌํ๋ ์์คํ
์ ๋ฐ์ดํฐ ๋ชจ๋ธ์ ์ค๊ณํ๊ธฐ ์ํ์ฌ ์๊ตฌ์ฌํญ์ ์ ์ํฉ๋๋ค.
๊ธฐ๋ฅ์ ์๊ตฌ์ฌํญ
์์คํ
์ด ์ํํด์ผ ํ๋ ๊ธฐ๋ฅ์ด๋ ์์
์ ๋ํ ์๊ตฌ ์ฌํญ์
๋๋ค.
โข
ํ์ ๊ฐ์
, ๊ฒ์๊ธ ์์ฑ, ๋๊ธ ์์ฑ, ํ์ผ ์
๋ก๋
๋น๊ธฐ๋ฅ์ ์๊ตฌ์ฌํญ
์์คํ
์ ์ฑ๋ฅ, ๋ณด์ ๋ฑ๊ณผ ๊ฐ์ ๊ธฐ๋ฅ์ ์ํํ๊ธฐ ์ํ ๋ฐฉ๋ฒ์ ๋ํ ์๊ตฌ ์ฌํญ์
๋๋ค.
โข
์ฑ๋ฅ, ๋ณด์, ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ, ์ฌ์ฉ์ฑ
๊ธฐ๋ฅ์ ์๊ตฌ์ฌํญ
๊ธฐ๋ฅ | ์๊ตฌ์ฌํญ |
ํ์ ๊ด๋ฆฌ | |
ํ์ ๊ฐ์
| ์๋ก์ด ์ฌ์ฉ์๊ฐ ์์คํ
์ ๊ฐ์
ํ ์ ์์ด์ผ ํ๋ฉฐ, ํ์ ์ ๋ณด๋ ํ์ ID, ์ฌ์ฉ์ ์ด๋ฆ, ์ด๋ฉ์ผ, ๋น๋ฐ๋ฒํธ, ๊ฐ์
์ผ์ ํฌํจํด์ผ ํฉ๋๋ค. |
ํ์ ์ ๋ณด ์กฐํ | ์ฌ์ฉ์๋ ์์ ์ ์ ๋ณด๋ฅผ ์กฐํํ ์ ์์ด์ผ ํ๋ฉฐ, ๊ด๋ฆฌ์๋ ๋ชจ๋ ํ์์ ์ ๋ณด๋ฅผ ์กฐํํ ์ ์์ด์ผ ํฉ๋๋ค. |
ํ์ ์ ๋ณด ์์ | ์ฌ์ฉ์๋ ์์ ์ ์ ๋ณด๋ฅผ ์์ ํ ์ ์์ด์ผ ํ๋ฉฐ, ์ด๋ฉ์ผ๊ณผ ๋น๋ฐ๋ฒํธ๋ ์ ํจ์ฑ ๊ฒ์ฌ๋ฅผ ํต๊ณผํด์ผ ํฉ๋๋ค. |
๊ฒ์๊ธ ๊ด๋ฆฌ | |
๊ฒ์๊ธ ์์ฑ | ํ์์ ์๋ก์ด ๊ฒ์๊ธ์ ์์ฑํ ์ ์์ด์ผ ํ๋ฉฐ, ๊ฒ์๊ธ์ ๊ฒ์๊ธ ID, ์ ๋ชฉ, ๋ด์ฉ, ์์ฑ์ผ, ์์ฑ์ ID๋ฅผ ํฌํจํด์ผ ํฉ๋๋ค. |
๊ฒ์๊ธ ์กฐํ | ์ฌ์ฉ์๋ ํน์ ๊ฒ์๊ธ์ ์กฐํํ ์ ์์ด์ผ ํ๋ฉฐ, ๊ฒ์๊ธ ๋ชฉ๋ก์ ์กฐํํ ์ ์์ด์ผ ํฉ๋๋ค. |
๊ฒ์๊ธ ์์ | ์์ฑ์๋ ์์ ์ ๊ฒ์๊ธ์ ์์ ํ ์ ์์ด์ผ ํฉ๋๋ค. |
๊ฒ์๊ธ ์ญ์ | ์์ฑ์๋ ์์ ์ ๊ฒ์๊ธ์ ์ญ์ ํ ์ ์์ด์ผ ํ๋ฉฐ, ์ญ์ ๋ ๊ฒ์๊ธ์ ๋ ์ด์ ์กฐํํ ์ ์์ด์ผ ํฉ๋๋ค. |
๋๊ธ ๊ด๋ฆฌ | |
๋๊ธ ์์ฑ | ํ์์ ๊ฒ์๊ธ์ ๋๊ธ์ ์์ฑํ ์ ์์ด์ผ ํ๋ฉฐ, ๋๊ธ์ ๋๊ธ ID, ๋ด์ฉ, ์์ฑ์ผ, ๊ฒ์๊ธ ID, ์์ฑ์ ID๋ฅผ ํฌํจํด์ผ ํฉ๋๋ค. |
๋๊ธ ์กฐํ | ์ฌ์ฉ์๋ ํน์ ๊ฒ์๊ธ์ ๋ฌ๋ฆฐ ๋๊ธ์ ์กฐํํ ์ ์์ด์ผ ํฉ๋๋ค. |
๋๊ธ ์์ | ์์ฑ์๋ ์์ ์ ๋๊ธ์ ์์ ํ ์ ์์ด์ผ ํฉ๋๋ค. |
๋๊ธ ์ญ์ | ์์ฑ์๋ ์์ ์ ๋๊ธ์ ์ญ์ ํ ์ ์์ด์ผ ํ๋ฉฐ, ์ญ์ ๋ ๋๊ธ์ ๋ ์ด์ ์กฐํํ ์ ์์ด์ผ ํฉ๋๋ค. |
ํ์ผ ๊ด๋ฆฌ | |
ํ์ผ ์
๋ก๋ | ์ฌ์ฉ์๋ ๊ฒ์๊ธ์ ํ์ผ์ ์ฒจ๋ถํ ์ ์์ด์ผ ํ๋ฉฐ, ํ์ผ์ ํ์ผ ID, ํ์ผ ์ด๋ฆ, ํ์ผ ๊ฒฝ๋ก, ์
๋ก๋์ผ, ๊ฒ์๊ธ ID๋ฅผ ํฌํจํด์ผ ํฉ๋๋ค. |
ํ์ผ ๋ค์ด๋ก๋ | ์ฌ์ฉ์๋ ๊ฒ์๊ธ์ ์ฒจ๋ถ๋ ํ์ผ์ ๋ค์ด๋ก๋ํ ์ ์์ด์ผ ํฉ๋๋ค. |
ํ์ผ ์ญ์ | ์์ฑ์๋ ๊ฒ์๊ธ์์ ํ์ผ์ ์ญ์ ํ ์ ์์ด์ผ ํ๋ฉฐ, ์ญ์ ๋ ํ์ผ์ ๋ ์ด์ ๋ค์ด๋ก๋ํ ์ ์์ด์ผ ํฉ๋๋ค. |
๋น๊ธฐ๋ฅ์ ์๊ตฌ์ฌํญ
๋ฒ์ฃผ | ์๊ตฌ์ฌํญ |
์ฑ๋ฅ | |
๊ฒ์๊ธ ๋ฐ ๋๊ธ ์์
| ์์คํ
์ ๊ฒ์๊ธ ๋ฐ ๋๊ธ ์์ฑ, ์กฐํ, ์์ , ์ญ์ ์์
์ ์ ์ํ๊ฒ ์ฒ๋ฆฌํ ์ ์์ด์ผ ํฉ๋๋ค. |
ํ์ผ ์
๋ก๋ ๋ฐ ๋ค์ด๋ก๋ | ๋๋์ ํ์ผ ์
๋ก๋ ๋ฐ ๋ค์ด๋ก๋๊ฐ ์ํํ๊ฒ ์ด๋ฃจ์ด์ ธ์ผ ํฉ๋๋ค. |
๋ณด์ | |
์ฌ์ฉ์ ๋ฐ์ดํฐ ์ํธํ | ๋ชจ๋ ์ฌ์ฉ์ ๋ฐ์ดํฐ๋ ์ํธํ๋์ด ์ ์ฅ๋์ด์ผ ํ๋ฉฐ, ๋น๋ฐ๋ฒํธ๋ ํด์ํ๋์ด ์ ์ฅ๋์ด์ผ ํฉ๋๋ค. |
ํ์ผ ์
๋ก๋ ๋ณด์ ๊ฒ์ฌ | ํ์ผ ์
๋ก๋ ์ ์
์ฑ ์ฝ๋ ๊ฒ์ฌ๋ฅผ ํตํด ๋ณด์ ์ํ์ ๋ฐฉ์งํด์ผ ํฉ๋๋ค. |
๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ | |
์ฐธ์กฐ ๋ฌด๊ฒฐ์ฑ ์ ์ง | ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ์ฐธ์กฐ ๋ฌด๊ฒฐ์ฑ์ ์ ์งํด์ผ ํ๋ฉฐ, ์ธ๋ ํค ์ ์ฝ ์กฐ๊ฑด์ ํตํด ์ผ๊ด๋ ๋ฐ์ดํฐ ์ํ๋ฅผ ๋ณด์ฅํด์ผ ํฉ๋๋ค. |
๋ฐ์ดํฐ ์ ํจ์ฑ ๊ฒ์ฌ | ๋ฐ์ดํฐ ์
๋ ฅ ์ ์ ํจ์ฑ ๊ฒ์ฌ๋ฅผ ์ํํ์ฌ ์๋ชป๋ ๋ฐ์ดํฐ ์
๋ ฅ์ ๋ฐฉ์งํด์ผ ํฉ๋๋ค. |
์ฌ์ฉ์ฑ | |
์ง๊ด์ ์ฌ์ฉ์ ์ธํฐํ์ด์ค | ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ ์ง๊ด์ ์ด์ด์ผ ํ๋ฉฐ, ์ฌ์ฉ์๋ ์ต์ํ์ ํด๋ฆญ์ผ๋ก ํ์ํ ๊ธฐ๋ฅ์ ์ด์ฉํ ์ ์์ด์ผ ํฉ๋๋ค. |
์ฅ์น ๋ฐ ๋ธ๋ผ์ฐ์ ํธํ์ฑ | ์์คํ
์ ๋ค์ํ ์ฅ์น์ ๋ธ๋ผ์ฐ์ ์์ ํธํ๋์ด์ผ ํฉ๋๋ค. |
์ ์ฝ ์กฐ๊ฑด
โข
๋ฐ์ดํฐ๋ฒ ์ด์ค ์์คํ
: Oracle, MySQL ๋ฑ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์คํ
์ ์ฌ์ฉํฉ๋๋ค.
โข
๊ธฐ์ ์คํ: ๋ฐฑ์๋ ์ธ์ด ๋ฐ ํ๋ ์์ํฌ๋ ์์คํ
์ ์๊ตฌ ์ฌํญ์ ๋ง๊ฒ ์ ํํฉ๋๋ค.
โข
์ค์ผ์ผ๋ง: ์์คํ
์ ์ฌ์ฉ์ ์์ ์ฆ๊ฐ์ ๋ฐ๋ผ ํ์ฅ ๊ฐ๋ฅํด์ผ ํฉ๋๋ค.
ํฅํ ๋ฐ์ ๊ณํ
โข
์ถ๊ฐ ๊ธฐ๋ฅ: ์ฌ์ฉ์ ํ๋กํ ๊ด๋ฆฌ, ๊ฒ์๊ธ ์นดํ
๊ณ ๋ฆฌ ๋ถ๋ฅ, ๋๊ธ์ ๋ํ ๋ต๊ธ ๊ธฐ๋ฅ ๋ฑ
โข
์ฑ๋ฅ ๊ฐ์ : ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ธ๋ฑ์ค ์ต์ ํ, ์บ์ฑ ์ ๋ต ๋ฑ์ ํตํ ์ฑ๋ฅ ํฅ์
๊ฐ๋ ์ ์ค๊ณ
1.
๊ฐ์ฒด์ ์์ฑ ์ถ์ถ
2.
๊ด๊ณ ์ถ์ถ
3.
ERD ์์ฑ
๊ฐ์ฒด์ ์์ฑ ์ถ์ถ
โข
ํ์
โข
๊ฒ์๊ธ
โข
๋๊ธ
โข
ํ์ผ
ํ์
๊ฒ์๊ธ
๋๊ธ
ํ์ผ
๊ด๊ณ ์ถ์ถ
โข
ํ์ : ๊ฒ์๊ธ = 1 : N
โข
๊ฒ์๊ธ : ๋๊ธ = 1 : N
โข
ํ์ : ๋๊ธ = 1 : N
โข
๊ฒ์๊ธ : ํ์ผ = 1 : N
ํ์ : ๊ฒ์๊ธ = 1 : N
๊ฒ์๊ธ : ๋๊ธ = 1 : N
ํ์ : ๋๊ธ = 1 : N
๊ฒ์๊ธ : ํ์ผ = 1 : N
ERD ์์ฑ
๋ ผ๋ฆฌ์ ์ค๊ณ
ERD
๋ฆด๋ ์ด์
์คํค๋ง ๋ณํ ๊ท์น
1.
๋ชจ๋ ๊ฐ์ฒด๋ ๋ฆด๋ ์ด์
์ผ๋ก ๋ณํ
2.
M:N (๋ค๋๋ค) ๊ด๊ณ๋ ๋ฆด๋ ์ด์
์ผ๋ก ๋ณํ
3.
1:N (์ผ๋๋ค) ๊ด๊ณ๋ ์ธ๋ํค๋ก ํํ
4.
1:1 (์ผ๋์ผ) ๊ด๊ณ๋ ์ธ๋ํค๋ก ํํ
5.
๋ค์ค ๊ฐ ์์ฑ์ ๋ฆด๋ ์ด์
์ผ๋ก ๋ณํ
๋ฌผ๋ฆฌ์ ์ค๊ณ
๊ด๊ณ
โข
์๋ณ ๊ด๊ณ
โข
๋น์๋ณ ๊ด๊ณ
์๋ณ ๊ด๊ณ
์์ ์ํฐํฐ์ ๊ธฐ๋ณธํค๊ฐ ๋ถ๋ชจ ์ํฐํฐ์ ๊ธฐ๋ณธํค๋ฅผ ํฌํจํ๋ ๊ด๊ณ
๋น์๋ณ ๊ด๊ณ
๋ถ๋ชจ ์ํฐํฐ์ ๊ธฐ๋ณธํค๊ฐ ์์ ์ํฐํฐ์ ๊ธฐ๋ณธํค๋ก ๊ตฌ์ฑ๋์ง ์๋ ๊ด๊ณ
(๋ถ๋ชจ ์ํฐํฐ์ ์์ ํ
ํฐํฐ์ ๊ธฐ๋ณธํค๊ฐ ์๋ก ๋
๋ฆฝ์ ์ผ๋ก ์กด์ฌํ๋ ๊ด๊ณ)
๊ตฌ๋ถ | ์๋ณ ๊ด๊ณ | ๋น์๋ณ ๊ด๊ณ |
๋ถ๋ชจ-์์ ๊ด๊ณ | ๋ถ๋ชจ ์์ด๋ ์์ ์กด์ฌ ๋ถ๊ฐ | ๋ถ๋ชจ ์์ด๋ ์์ ์กด์ฌ ๊ฐ๋ฅ |
๋ถ๋ชจ ํค ์ฌ์ฉ | ๋ถ๋ชจ ํค๊ฐ ์์์ ๊ธฐ๋ณธํค ์ผ๋ถ๋ก ํฌํจ๋จ | ๋ถ๋ชจ ํค๊ฐ ์์์ ์ผ๋ฐ ์์ฑ(์ธ๋ํค)์ผ๋ก ํฌํจ๋จ |
๊ด๊ณ ํํ | ์ค์ | ์ ์ |
์์ | ์ฃผ๋ฌธ - ์ฃผ๋ฌธ ์์ธ
(์ฃผ๋ฌธ ์์ธ๋ ์ฃผ๋ฌธ์ ์ข
์๋จ) | ํ์ - ๊ฒ์๊ธ
(๊ฒ์๊ธ์ ํ์ ์์ด๋ ์กด์ฌ ๊ฐ๋ฅ) |
DDL ์ถ์ถํ๊ธฐ
1.
๋ด๋ณด๋ด๊ธฐ
2.
DB ์ ํ
3.
์ต์
์ ํ
4.
SQL ๋ฏธ๋ฆฌ๋ณด๊ธฐ or ๋ค์ด๋ก๋
๊ตฌํ
DDL ์ถ์ถ ํ์ ๊ธฐ๋ณธํค ์ธ๋ํค ์ ์ฝ์กฐ๊ฑด์ CREATE ๋ฌธ ์์ผ๋ก ์ฎ๊ธฐ๊ณ AUTO_INCREMENT ์ต์
๋ ์ถ๊ฐํ์์ต๋๋ค! 
๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ฑ
DROP DATABASE IF EXISTS `community`;
CREATE DATABASE `community`
DEFAULT CHARACTER SET = 'utf8mb4';
SQL
๋ณต์ฌ
DROP TABLE IF EXISTS `files`;
DROP TABLE IF EXISTS `comments`;
DROP TABLE IF EXISTS `posts`;
DROP TABLE IF EXISTS `users`;
CREATE TABLE `users` (
`no` BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
`id` VARCHAR(64) NOT NULL,
`username` VARCHAR(100) NOT NULL,
`password` VARCHAR(100) NOT NULL,
`name` VARCHAR(50) NOT NULL,
`email` VARCHAR(200) NOT NULL,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
);
CREATE TABLE `posts` (
`no` BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
`id` VARCHAR(64) NOT NULL,
`user_no` BIGINT NOT NULL,
`title` VARCHAR(200) NOT NULL,
`content` TEXT,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (`user_no`) REFERENCES `users` (`no`)
);
CREATE TABLE `comments` (
`no` BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
`id` VARCHAR(64) NOT NULL,
`post_no` BIGINT NOT NULL,
`user_no` BIGINT NOT NULL,
`content` TEXT NOT NULL,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (`post_no`) REFERENCES `posts` (`no`),
FOREIGN KEY (`user_no`) REFERENCES `users` (`no`)
);
CREATE TABLE `files` (
`no` BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
`id` VARCHAR(64) NOT NULL,
`post_no` BIGINT NOT NULL,
`file_name` VARCHAR(100) NOT NULL,
`file_path` VARCHAR(2000) NOT NULL,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (`post_no`) REFERENCES `posts` (`no`)
);
SQL
๋ณต์ฌ