Assignment 2-1: DB Schema Design
2021024057 ๊น๋ณ์ค
1. ์ค๊ณ ์๋
๋ณธ Database Schema๋ ๋์๊ด์ ์์ , ํ์ ๊ด๋ฆฌ, ๋์ถ/๋ฐ๋ฉ ์์คํ ์ ๊ตฌํํ๋ ๊ฒ์ ๋ชฉํ๋ก ์ค๊ณํ์์ต๋๋ค.
Normalization: ๋ฐ์ดํฐ์ ์ค๋ณต์ ์ต์ํํ๊ณ ์ผ๊ด์ฑ์ ์ ์งํ๊ธฐ ์ํด ์ํฐํฐ๋ฅผ ๋ถ๋ฆฌ. '์์ '์ ์ถ์์ ์ธ ์ ๋ณด(์ ๋ชฉ, ์ ์ ๋ฑ)๋ฅผ ๋ด๋ BOOK ์ํฐํฐ์ ์ค์ ๋ฌผ๋ฆฌ์ ์ธ ์ฑ
ํ ๊ถ ํ ๊ถ์ ์๋ฏธํ๋ BOOK_COPY entity๋ฅผ ๋ฐ๋ก ๋ถ๋ฆฌํ์ฌ ์ฌ๊ณ ๋ฐ ๋์ถ์ ์ํ๋ฅผ ๋ช
ํํ๊ฒ ๊ด๋ฆฌํ ์ ์๋๋ก ํจ.
Scalability: ์ถํ ์๋ก์ด ๊ธฐ๋ฅ์ด ์ถ๊ฐ๋๋๋ผ๋ ์ ์ฐ์ฑ ์๊ฒ ํ์ฅํ ์ ์๋ ๊ตฌ์กฐ๋ฅผ ์ฑํ
Integrity: ๊ธฐ๋ณธํค(PK)์ ์ธ๋ํค(FK)์ ๊ด๊ณ๋ฅผ ๋ช ํํ ์ค์ ํ์ฌ ๊ฐ ๋ฐ์ดํฐ ๊ฐ์ ๋ ผ๋ฆฌ์ ์ฐ๊ฒฐ์ ๋ณด์ฅํ๊ณ , ์๋ชป๋ ๋ฐ์ดํฐ๊ฐ ์ ๋ ฅ๋๊ฑฐ๋ ์ญ์ ๋๋ ๊ฒ์ ๋ฐฉ์ง
๊ด๊ณ์ ๋ช
ํ์ฑ: '์์ '๊ณผ '์นดํ
๊ณ ๋ฆฌ'์ ๋ค๋๋ค(N:M) ๊ด๊ณ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์ฐ๊ฒฐ ํ
์ด๋ธ์ธ BOOK_CAT๋ฅผ ๋์
ํ์ฌ ๊ด๊ณ๋ฅผ ๋ช
ํํ๊ฒ ํํ
2. Entity ๋ฐ Relation ์ค๋ช
Entity ์ญํ
USER (ํ์)
์์คํ ์ ๊ฐ์ ๋ ๋ชจ๋ ์ฌ์ฉ์(์ผ๋ฐ ์ฌ์ฉ์, ๊ด๋ฆฌ์)์ ์ ๋ณด๋ฅผ ์ ์ฅ
๋ก๊ทธ์ธ, ๊ถํ ๊ด๋ฆฌ, ๋์ถ ์๊ฒฉ ํ์ธ(์ฐ์ฒด ์ฌ๋ถ), ๊ฐ์ธ๋ณ ๋์ถ ๊ธฐ๋ก ์กฐํ ๋ฑ ํ์๊ณผ ๊ด๋ จ๋ ๋ชจ๋ ๊ธฐ๋ฅ์ ๋ฐํ์ด ๋จ user_type ์์ฑ์ ํตํด ์ผ๋ฐ ์ฌ์ฉ์์ ๊ด๋ฆฌ์๋ฅผ ๊ตฌ๋ถํ๊ณ , ๊ด๋ฆฌ์์ ๊ฒฝ์ฐ์๋ ํ๋ฒ, student_id๋ฅผ ํตํด ์ ๊ทผ ๊ถํ์ ๋ถ์ฌ
BOOK (์์ ์ ๋ณด)
๋์์ ๊ณ ์ ํ ์ ๋ณด(์ ๋ชฉ, ์ ์, ISBN ๋ฑ)๋ฅผ ์ ์ฅ
๋์ผํ ์ฑ
์ด ์ฌ๋ฌ ๊ถ ์๋ ๊ฒฝ์ฐ์๋ ์ด table์๋ ํ ๋ฒ๋ง ๋ฑ๋ก
์์ ๊ฒ์, ๋ชฉ๋ก ์กฐํ, ํ๋ ์ดํ
์ฐจํธ ์ง๊ณ ์ ๊ธฐ์ค์ด ๋๋ '์ ๋ณด'์ ์ญํ
data duplicate๋ฅผ ๋ฐฉ์งํ๊ณ ์์ ์ ๋ณด๋ฅผ ์ผ๊ด๋๊ฒ ๊ด๋ฆฌํ๋ ์ญํ
BOOK_COPY (๊ฐ๋ณ ์์ )
์ค์ ๋์๊ด์ด ๋ณด์ ํ ๋ฌผ๋ฆฌ์ ์ธ ์ฑ
ํ ๊ถ ํ ๊ถ์ ์๋ฏธ
๊ฐ copy๋ ๊ณ ์ ID๋ฅผ ๊ฐ์ง๋ฉฐ, ์ด๋ค BOOK์ ํด๋นํ๋์ง์ ํ์ฌ ์ํ('๋์ถ ๊ฐ๋ฅ', '๋์ถ ์ค' ๋ฑ) ์ ๋ณด๋ฅผ ๊ฐ์ง
'์๋'๊ณผ '๋์ถ ๊ฐ๋ฅ ์ฌ๋ถ'๋ฅผ ํ์ ํ๊ณ , ํน์ ์ฑ ์ ์ด๋ค ๋ณต์ฌ๋ณธ์ด ๋์ถ๋์๋์ง ์ถ์ ํ๊ธฐ ์ํด ํ์
CATEGORY (์นดํ
๊ณ ๋ฆฌ)
'์์ค', 'IT', '์๊ธฐ๊ณ๋ฐ'๊ณผ ๊ฐ์ ์์ ์ category ๋ช ์นญ์ ์ ์ฅ
์์ ์ ์ข ๋ฅ์ ๋ฐ๋ผ ๋ถ๋ฅํ๊ณ , category๋ณ ๊ฒ์, ์ ๋ ฌ, ์ธ๊ธฐ chart ์กฐํ๋ฅผ ์ํด ํ์
RENTAL (๋์ถ ๊ธฐ๋ก)
๋๊ฐ(USER), ์ด๋ค ์ฑ
์(BOOK_COPY), ์ธ์ ๋น๋ฆฌ๊ณ ๋ฐ๋ฉํ๋์ง์ ๋ํ ๊ธฐ๋ก์ ์ ์ฅ
์ฌ์ฉ์์ ๋์ถ/๋ฐ๋ฉ ์ด๋ ฅ์ ๊ด๋ฆฌํ๊ณ , ์ฐ์ฒด ์ฌ๋ถ ํ๋จ, ์ธ๊ธฐ ์์ chart data ์์ฑ ๋ฑ ๋์ถ๊ณผ ๊ด๋ จ๋ ํต์ฌ์ ์ธ ๊ธฐ๋ฅ์ ์ํ
BOOK_CAT (์์ -์นดํ
๊ณ ๋ฆฌ ์ฐ๊ฒฐ)
BOOK๊ณผ CATEGORY ์ฌ์ด์ ๋ค๋๋ค(N:M) ๊ด๊ณ๋ฅผ ๊ตฌํํ๊ธฐ ์ํ ์ค๊ฐ ํ
์ด๋ธ
ํ๋์ ์ฑ
์ด ์ฌ๋ฌ ์นดํ
๊ณ ๋ฆฌ์ ์ํ ์ ์๋ค๊ณ ํ์ผ๋ฏ๋ก, ์ด๋ฅผ ๊ตฌํํ๊ธฐ ์ํด ํ์.
์ด ํ
์ด๋ธ์ ํตํด ํน์ ์ฑ
์ด ์ด๋ค ์นดํ
๊ณ ๋ฆฌ(๋ค)์ ์ํ๋์ง, ๋๋ ํน์ ์นดํ
๊ณ ๋ฆฌ์ ์ด๋ค ์ฑ
(๋ค)์ด ์ํ๋์ง๋ฅผ ์ ์ ์์
Relation ์ค๋ช
USER์RENTAL(1:N): ํ ๋ช ์ ํ์์ ์ฌ๋ฌ ๋ฒ์ ๋์ถ ๊ธฐ๋ก์ ๊ฐ์ง ์ ์์ง๋ง, ํ๋์ ๋์ถ ๊ธฐ๋ก์ ํ ๋ช ์ ํ์์๊ฒ๋ง ์ํจ.BOOK๊ณผBOOK_COPY(1:N): ํ๋์ ์์ ์ ๋ณด(BOOK)๋ ์ฌ๋ฌ ๊ฐ์ ๋ฌผ๋ฆฌ์ ๋ณต์ฌ๋ณธ(BOOK_COPY)์ ๊ฐ์ง ์ ์์. e.g., '๋ฐ์ดํฐ๋ฒ ์ด์ค ์์คํ '์ด๋ผ๋ ์ฑ ์ด 3๊ถ ์๋ค๋ฉด,BOOKํ ์ด๋ธ์๋1๊ฐ์ ๋ ์ฝ๋๊ฐ,BOOK_COPYํ ์ด๋ธ์๋3๊ฐ์ ๋ ์ฝ๋๊ฐ ์์ฑBOOK_COPY์RENTAL(1:N): ํ๋์ ๋ณต์ฌ๋ณธ(BOOK_COPY)์ ์๊ฐ์ ๋ฐ๋ผ ์ฌ๋ฌ ๋ฒ ๋์ถ ๊ฐ๋ฅ (ํ๋์ ํน์ ์์ ์๋ 1๋ฒ๋ง ๋์ถ ๊ฐ๋ฅ)BOOK๊ณผCATEGORY(N:M): ํ๋์ ์ฑ ์ ์ฌ๋ฌ ์นดํ ๊ณ ๋ฆฌ์ ์ํ ์ ์๊ณ , ํ๋์ ์นดํ ๊ณ ๋ฆฌ์๋ ์ฌ๋ฌ ์ฑ ์ด ํฌํจ๋ ์ ์์.BOOK๊ณผBOOK_CAT(1:N)CATEGORY์BOOK_CAT(1:N)
3. E-R Diagram

4. ์ถ๊ฐ ๊ธฐ๋ฅ ์ ์ (3๊ฐ์ง)
์๊ตฌ ๋ช ์ธ ์ธ์ ๋์๊ด ์์คํ ์ ํ์ฉ๋๋ฅผ ๋์ผ ์ ์๋ 3๊ฐ์ง ๊ธฐ๋ฅ์ ์ถ๊ฐ๋ก schema์ ๋ฐ์ํ์ต๋๋ค.
4.1. [ํต๊ณ] ๊ฐ์ธ๋ณ ๋ ์ ํต๊ณ ์ ๊ณต
์ฌ์ฉ์๊ฐ ์์ ์ 'My Page'์์ ์๋ณ ๋ ์๋, ๊ฐ์ฅ ๋ง์ด ๋์ถํ ์นดํ ๊ณ ๋ฆฌ, ์ ํธํ๋ ์ ์ ๋ฑ์ ํต๊ณ๋ฅผ ํ์ธํ ์ ์๋ ๊ธฐ๋ฅ
USER, RENTAL, BOOK_COPY, BOOK, CATEGORY table์ joinํ์ฌ ์ฌ์ฉ์์ ๋์ถ ๊ธฐ๋ก์ ๋ถ์ํ์ฌ ๊ตฌํ ๊ฐ๋ฅ
4.2. [ํต๊ณ] ์ฐ์ฒด ํํฉ ๋ฐ ์ธ๊ธฐ ๋์ ํต๊ณ (๊ด๋ฆฌ์์ฉ)
๊ด๋ฆฌ์ dashboard์์ ์ ์ฒด ํ์์ ํ๊ท ์ฐ์ฒด์ผ, ์ ์ฑ ์ฐ์ฒด์ ๋ชฉ๋ก, ์ฐ์ฒด๊ฐ ์์ฃผ ๋ฐ์ํ๋ ์์ ๋ชฉ๋ก ๋ฑ์ ํ์ธํ ์ ์๋ ๊ธฐ๋ฅ
์ด๋ฅผ ํตํด ๋์ ํ์์จ์ ๋์ด๋ ์ ์ฑ ์ ์๋ฆฝํ ์ ์์ต๋๋ค.
RENTAL ํ
์ด๋ธ์ due_date(๋ฐ๋ฉ ์์ ์ผ)์ return_date(์ค์ ๋ฐ๋ฉ์ผ)๋ฅผ ๋น๊ต ๋ถ์ํ์ฌ ๊ตฌํ
4.3. ์์ ์์ฝ ๊ธฐ๋ฅ
์ํ๋ ์ฑ
์ ๋ชจ๋ ๋ณต์ฌ๋ณธ์ด ๋์ถ ์ค์ผ ๊ฒฝ์ฐ, ์ฌ์ฉ์๊ฐ ํด๋น ์์ ์ ์์ฝํ ์ ์๋ ๊ธฐ๋ฅ
์ฑ
์ด ๋ฐ๋ฉ๋๋ฉด ์์ฝ ์์์ ๋ฐ๋ผ ์ฌ์ฉ์์๊ฒ ์๋ฆผ ์ ์ก
์ด๋ฅผ ์ํด ๋๊ฐ(
user_id), ์ด๋ค ์ฑ ์(book_id), ์ธ์ ์์ฝํ๋์ง๋ฅผ ๊ธฐ๋กํRESERVATION์ด๋ผ๋ entity๋ฅผ ์ถ๊ฐ๋ก ์ค๊ณํ์์ต๋๋ค.
5. Relation Schema


