๋ฐ์ดํฐ๋ฒ ์ด์ค๋?
๊ณต์ ํ์ฌ ์ฌ์ฉํ ๋ชฉ์ ์ผ๋ก ์ฒด๊ณํํ์ฌ ๊ด๋ฆฌํ๋ ๋ฐ์ดํฐ๋ค์ ์งํฉ์ด๋ค.
๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ถ๋ฅ
๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค(RDB)
EX) MariaDB, ์์
ํํ
- ๊ฐ ํ
์ด๋ธ ๊ฐ์ ๊ด๊ณ๊ฐ ์กด์ฌํ๋ค
- ์คํค๋ง๊ฐ ์กด์ฌํ๋ค.
- ๊ตฌ์กฐ์ ์ผ๋ก ์์ ์ ์ด์ง๋ง ์ ์ฐํ์ง ๋ชปํ ํน์ง์ ๊ฐ์ง๊ณ ์๋ค.
๋น๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค(NoSQL)
EX) MongoDB (JSON ํํ)
- ๊ฐ ํ
์ด๋ธ ๊ฐ ๊ด๊ณ๊ฐ ์๋ค
- ์คํค๋ง ๋ํ ์กด์ฌํ์ง ์๋๋ค
- ์ ์ฐ์ฑ์ ๊ฐ์ง๊ณ ์์ง๋ง ๊ตฌ์กฐ ๊ฒฐ์ ์ด ์ด๋ ต๋ค.
์ํฉ๊ณผ ์กฐ๊ฑด์ ๋ฐ๋ผ ์ ์ ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ ํํ๋ ๊ฒ์ด ์ค์ํ๋ค.
๋ฐ์ดํฐ๋ชจ๋ธ๋ง์ด๋?
ํจ์จ์ ์ผ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๊ตฌ์ถํ๊ธฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ผ๋๋ฅผ ์ธ์ฐ๋ ์์
์ด๋ค.
๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ชจ๋ธ๋ง ๋จ๊ณ
์๊ตฌ ์ฌํญ ์ ๋ฆฌ
๋ฐ์ดํฐ๊ฐ ์ด๋ ํ ํํ, ์ด๋ค ๋ชฉ์ ์ ๊ฐ์ง๊ณ ์๋ ์ง ์ ๋ฆฌํ๋ ๋จ๊ณ์ด๋ค.
๊ฐ๋
์ ๋ฐ์ดํฐ ๋ชจ๋ธ ์ค๊ณ
ํต์ฌ ๊ฐ์ฒด๋ฅผ ์ฐพ๊ณ , ๊ฐ ๊ฐ์ฒด ๊ฐ์ ๊ด๊ณ๋ฅผ ์ ๋ฆฌํ๋ค.
- ๊ด๋ จ์ฑ์ด ์๋ ๋ฐ์ดํฐ ๋ผ๋ฆฌ ๋ฌถ๊ณ , ํต์ฌ ๊ฐ์ฒด๋ฅผ ์ค์ฌ์ผ๋ก ๊ด๊ณ๋ฅผ ํ์ฑํ๋ค.
๋
ผ๋ฆฌ์ ๋ฐ์ดํฐ ๋ชจ๋ธ ์ค๊ณ
์ค์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก ๊ตฌํํ๊ธฐ ์ํ ๋ชจ๋ธ๋ง ๋จ๊ณ์ด๋ค.
- ๋ค๋ฅธ ๋ฐ์ดํฐ์ ๊ตฌ๋ถ๋๋ ์ ์ผ ํค ํน์ ๊ธฐ๋ณธํค ์ค์ ๋ฑ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๊ตฌ์ถํ๊ธฐ ์ํ ์ ๋ณด๋ฅผ ์ค์ ํ๋ค.
ex) ERD ๊ทธ๋ฆผ์ผ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ด๊ณ๋ฅผ ๊ทธ๋ ค๋ณธ๋ค.
๋ฌผ๋ฆฌ์ ๋ฐ์ดํฐ ๋ชจ๋ธ ์ค๊ณ
๋ฐ์ดํฐ๊ฐ ์ด๋ป๊ฒ ์ปดํจํฐ์ ์ ์ฅ๋ ์ง ์ค๊ณํ๋ ๋จ๊ณ์ด๋ค.
- ๋ฌผ๋ฆฌ์ ๊ตฌ์กฐ๋ฅผ ์ ์ํ๊ณ , ์ค์ ๋ก ๊ตฌํํ๋ ๋จ๊ณ์ด๋ค.
ex) ๊ฐ ๋ฐ์ดํฐ ํ
์ด๋ธ์ ์ด๋ป๊ฒ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ์ง ์ค๊ณํ๊ณ ๊ตฌํ.
์ฝ๋๋๋ ๊ณต์ ํค๋ณด๋ ์ฌ์
์ ์ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค
- ํฅ๋ณด๋ ์ ๋ณด
- ๋์ฌ ์ ๋ณด
- ๊ณ ๊ฐ ์ ๋ณด
๋์ฌ ์ ๋ณด๋ ํฅ๋ณด๋ ์ ๋ณด์ ๊ณ ๊ฐ ์ ๋ณด์ ์ฐ๊ฒฐ๋ ๊ด๊ณ๋ฅผ ๊ฐ๋ ์ ๋ณด์ด๋ค. ๋ฐ๋ผ์ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ํ์ฉํ ์ ์๋ค.
๊ณต์ ํฅ๋ณด๋ ์ด์ ๋ฐฉ์นจ: ๋์ฌ (์๊ตฌ์ฌํญ ๋ถ์)
- ์ํํ ๋์ฌ ๊ด๋ฆฌ๋ฅผ ์ํด ๋์ฌ ์ ๋ณด๋ ๋์ฌํ ํฅ๋ณด๋์ ID, ๋์ฌํ ๊ณ ๊ฐ์ ID, ๋์ฌํด๊ฐ ๋ ์ง๋ก ๊ตฌ์ฑ๋๋ค.
- ๋์ฌํ ํฅ๋ณด๋์ ID๋ ์ค์ ์ด์(์์ )ํ๊ณ ์๋ ํฅ๋ณด๋ ID๋ง ์
๋ ฅ ๋ ์ ์๋ค.
- ๋์ฌํ ๊ณ ๊ฐ์ ID๋ ์ค์ ๊ฐ์
ํ ๊ณ ๊ฐ์ ID๋ง ์
๋ ฅ ๋ ์ ์๋ค.
- ๋์ฌ ์ผ์๋ ๋
-์-์ผ ์:๋ถ ์ผ๋ก ์
๋ ฅ๋๋ฉฐ ๊ณ ๊ฐ์ ํฅ๋ณด๋ ๋์ฌ ํ 1๋ถ ์ด๋ด ๋ค์ ๋์ฌํ ์ ์๋ค. ๋จ, ๊ณ ๊ฐ์ด ๋์ฌํ ์ ์๋ ํฅ๋ณด๋์ ๋์์๋ ์ ํ์ด ์๋ค.
ํ
์ด๋ธ๋ก ๋ง๋ ์์
๊ตฌ๋ถ | ํ์
| ์์ |
---|
๋์ฌ์ผ์ | ๋ฌธ์ํ | 2020-10-01 11:00 |
๋์ฌํ ๊ณ ๊ฐ ID | ๋ฌธ์ํ | elice_rabbit |
๋์ฌํ ํฅ๋ณด๋ ID | ๋ฌธ์ํ | E01 |
๊ณต์ ํฅ๋ณด๋ ์ด์ ๋ฐฉ์นจ: ํฅ๋ณด๋ (์๊ตฌ์ฌํญ ๋ถ์)
- ํฅ๋ณด๋ ๊ด๋ฆฌ๋ฅผ ์ํด ๋ชจ๋ ํฅ๋ณด๋๋ ID, ์ด๋ฏธ์ง ์ ๋ณด, ์ข
๋ฅ ์ ๋ณด, ์ฐ์ ์ ๋ณด๋ฅผ ๊ฐ์ง๊ณ ์๋ค.
- ํฅ๋ณด๋์ ID๋ ์ค๋ณต์ด ๋๊ฑฐ๋ ์์ ํ ์ ์๋ค.
- ํฅ๋ณด๋์ ์ด๋ฏธ์ง๋ 50์ ๋ฏธ๋ง์ URL๋ก ๊ตฌ์ฑ๋์ด ์์ผ๋ฉฐ ์ฐ์๊ณผ ์ข
๋ฅ๊ฐ ๊ฐ์ ํฅ๋ณด๋์ผ ๊ฒฝ์ฐ ๋์ผํ ์ด๋ฏธ์ง๋ฅผ ํ์ฉํ๋ค.
- ํฅ๋ณด๋์ ์ข
๋ฅ๋ ๋ธ๋ ์ดํฌ์ ์์น์ ๋ฐ๋ผ ๋ ๊ฐ์ง(๋ท๋ฐํด์ ์์น - Aํ, ํธ๋ค์ ์์น - Bํ)๋ก ๊ตฌ๋ถ๋๋ฉฐ ์ค๋ณต์ด ๊ฐ๋ฅํ๋ค.
- ํฅ๋ณด๋์ ์ฐ์์ ํฅ๋ณด๋์ ์์ฐ๋
๋๋ก 4์๋ฆฌ ์ซ์(YYYY)๋ก ํํ๋๋ฉฐ ์ค๋ณต์ด ๊ฐ๋ฅํ๋ค.
ํ
์ด๋ธ๋ก ๋ง๋ ์์
๊ตฌ๋ถ | ํ์
| ์์ |
---|
ํฅ๋ณด๋ ID | ๋ฌธ์ํ | E01 |
ํฅ๋ณด๋ ์ข
๋ฅ | ๋ฌธ์ํ | A |
ํฅ๋ณด๋ ์ด๋ฏธ์ง | ๋ฌธ์ํ | https://.. |
ํฅ๋ณด๋ ์ฐ์ | ์ซ์ํ | 2019 |
๊ณต์ ํฅ๋ณด๋ ์ด์ ๋ฐฉ์นจ: ํฅ๋ณด๋ (์๊ตฌ์ฌํญ ๋ถ์)
- ๊ณ ๊ฐ ๊ด๋ฆฌ๋ฅผ ์ํด ๋ชจ๋ ๊ณ ๊ฐ์ ID, ์ด๋ฆ, ์ ํ๋ฒํธ๋ฅผ ๊ฐ์ง๊ณ ์๋ค.
- ๊ณ ๊ฐID๋ ์๋ฌธ + ํน๋ฌธ + ์ซ์๋ก ์กฐํฉ๋๋ฉฐ ๊ธธ์ด๋ 15์ ๋ฏธ๋ง์ผ๋ก ๊ตฌ์ฑ๋์ด ์๋ค. ๋ํ ID๋ ์ค๋ณต์ด ๋๊ฑฐ๋ ์์ ๋ ์ ์๋ค.
- ๊ณ ๊ฐ์ ์ด๋ฆ์ 10์ ๋ฏธ๋ง์ ํ๊ธ๋ก ๊ตฌ์ฑ๋์ด ์์ผ๋ฉฐ ๋๋ช
์ด์ธ์ ๊ณ ๋ คํ์ฌ ์ค๋ณต์ด ๊ฐ๋ฅํ๋ค.
- ๊ณ ๊ฐ์ ์ ํ๋ฒํธ๋ 15์ ๋ฏธ๋ง์ ๋ฌธ์(*-****-****)๋ก ๊ตฌ์ฑ๋์ด ์๋ค.
- ๋์ฌ ์ค์ธ ํฅ๋ณด๋๊ฐ ์์ด์ผ ํ์ ํํด(๊ณ ๊ฐ ์ ๋ณด ์ญ์ )๊ฐ ๊ฐ๋ฅํ๋ค.
ํ
์ด๋ธ๋ก ๋ง๋ ์์
๊ตฌ๋ถ | ํ์
| ์์ |
---|
๊ณ ๊ฐ ID | ๋ฌธ์ํ | elice_rabbit |
์ด๋ฆ | ๋ฌธ์ํ | ์๋ฆฌ์ค ํ ๋ผ |
์ ํ๋ฒํธ | ๋ฌธ์ํ | 010-1234-5678 |
๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ค์ด๋ฐ ๊ท์น
์ ์ง๋ณด์์ ์๋ฏธ์ ๋ช
ํ์ฑ์ ์ ๋ฌํ๊ธฐ ์ํด ๋ค์ด๋ฐ ๊ท์น์ ์ค์ ํ๋ค.
๊ณตํต ๊ท์น
- ์ค์๋ง ์ฌ์ฉ์ ์ต์ํํ๋ค. (๋จ, ์ฌ์ฉํ ๊ฒฝ์ฐ ๋ฒ์ฉ์ ์ผ๋ก ์ฌ์ฉ๋๋ ์ค์๋ง์ ์ฌ์ฉํ๋ค.)
- kb_img (X) -> kickboard_image(O)
- tb_KickboardInfo(๊ฐ๋ฅ) info: information์ ์ค์๋ง.
ํ
์ด๋ธ ๋ค์ด๋ฐ ๊ท์น
- ํ
์ด๋ธ ๋ช
์ ์์ฑํ ๋๋ ํ์ค์นผ ํ๊ธฐ๋ฒ์ ์ฌ์ฉํ๋ค.
- kickboard_rental (X) -> KickboardRental(O)
- customer_info (X) -> CustomerInfo(O)
- ํ
์ด๋ธ, ๋ทฐ(View)์์ ํ๋์ ํ์ธ ํ ์ ์๋๋ก ํ
์ด๋ธ ๋ช
์์๋
'tb', 'v'๋ฅผ ๋ถ์ธ๋ค.
- tb_KickboardRental (ํฅ๋ณด๋ ๋์ฌ์ ๊ด๋ จ๋ ํ
์ด๋ธ)
- v_ KickboardInfoAnalysis (๋ทฐ: ๋ฐ์ดํฐ ๋ถ์์ ์ํด ํ์ํ ์ ๋ณด๋ง ๋ชจ์ ๋ ๊ฐ์ ํ
์ด๋ธ)
์์ฑ ๋ค์ด๋ฐ ๊ท์น
- ์์ฑ ๋ช
์ ์์ฑํ ๋๋ ์ค๋ค์ดํฌ ํ๊ธฐ๋ฒ์ ํ์ฉํ๋ค.
- ์ ์ผํค, ์ธ๋ํค ๋ฑ์ ํ ๋์ ์์ ๋ณผ ์ ์๋๋ก ์์ฑ ๋ช
์์ 'pk', 'fk'๋ฅผ ๋ถ์ธ๋ค.
- pk_kickboard_id
- fk_pk_customer_id
๋์ฌ ํ
์ด๋ธ (๋
ผ๋ฆฌ์ ๋ชจ๋ธ๋ง)
๊ตฌ๋ถ | ํ์
| ์์ |
---|
๋์ฌ์ผ์ | varchar(20) | rental_date |
๋์ฌํ ๊ณ ๊ฐ ID | varchar(15) | customer_id |
๋์ฌํ ํฅ๋ณด๋ ID | varchar(5) | kickboard_id |
- varchar๋ ๋ฌธ์ํ ํ์
์ ์๋ฏธ(๊ฐ๋ณ ๋ฌธ์์ด)ํ๋ฉฐ ๋ค์ ๊ดํธ ์์ ์๋ฏธ๋ ํด๋น ๋ฌธ์์ด์ ํฌ๊ธฐ(byte)๋ฅผ ์๋ฏธํ๋ค.
๊ณ ๊ฐ ํ
์ด๋ธ (๋
ผ๋ฆฌ์ ๋ชจ๋ธ๋ง)
๊ตฌ๋ถ | ํ์
| ์์ |
---|
ํฅ๋ณด๋ ID | varchar(5) | kickboard_id |
ํฅ๋ณด๋ ์ข
๋ฅ | varchar(5) | customer_kind |
ํฅ๋ณด๋ ์ด๋ฏธ์ง | varchar(50) | kickboard_img |
ํฅ๋ณด๋ ์ฐ์ | int | kickboard_year |
- int๋ ์ ์ํ ํ์
์ ์๋ฏธํ๋ฉฐ, ๊ดํธ๋ก ํฌ๊ธฐ๋ฅผ ์์ฑํ์ง ์๋๋ค
๊ตฌ๋ถ | ํ์
| ์์ |
---|
๊ณ ๊ฐ ID | varchar(15) | customer_id |
์ด๋ฆ | varchar(20) | customer_name |
์ ํ๋ฒํธ | varchar(15) | customer_tel |
- varchar์์ ํ๊ธ์ ๊ฒฝ์ฐ ํ ๊ธ์ ๋น 2byte๊ฐ ํ์ํ๋ฏ๋ก 20์ผ๋ก ์ค์ ํ๋ค.
์ ์ผํค๋?
key
๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ํํ(๋ ์ฝ๋, ํ)๊ฐ ๊ตฌ๋ถ์ ์ํ ๊ฐ(์์ฑ)์ด๋ค
-> ์ ์ผํค, ๋ณตํฉํค, ์ธ๋ํค ๋ฑ ๋ค์ํ ์ข
๋ฅ๊ฐ ์กด์ฌํ๋ค.
์ ์ผํค(Primary key)
ํ
์ด๋ธ์์ ํํ(๋ ์ฝ๋, ํ)์ ๊ตฌ๋ถ์ง์ด์ฃผ๋ ๊ณ ์ ์๋ณ ๊ฐ(์์ฑ)
- ์ ์ผํค ๊ฐ์ ์ค๋ณต ๋ ์ ์์ผ๋ฉฐ, NULL ๊ฐ ๋ํ ๋ถ๊ฐ๋ฅํ๋ค.
์ ์ผํค ์ ์ ํ
์ ์ผ ํค ์ ์ ์์๋ ์ค๋ณต์ด ๋์ง ์๋ ์ค์ ์์ฑ์ ์ ์ผํค๋ก ์ ํํ๋ค.
์ ์ผํค์ ์ ์ธ
CREATE TABLE 'ํ
์ด๋ธ ๋ช
' {
'์์ฑ๋ช
' ํ์
,
'์์ฑ๋ช
2' ํ์
,
PRIMARY KEY('์ ์ผํค๋ก ์ฌ์ฉํ ์์ฑ๋ช
');
}
๋ณตํฉํค(Composite Key)๋?
๋ฌธ์
Primary ํค ๊ฐ๊ณผ ๋์ผํ ๊ฐ์ ํ๋ฒ ๋ ํ
์ด๋ธ์ ์ฃผ์
ํ๋ค๋ฉด ์ ์ผํค ์ค๋ณต ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค.
์ด๋ฌํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด, ๋ ๊ฐ ์ด์์ ์์ฑ์ ํ์ฉํ์ฌ ํํ์ ๊ตฌ๋ถ์ง์ด์ฃผ๋ ๋ฐฉ๋ฒ์ธ ๋ณตํฉํค๋ฅผ ํ์ฉํด์ผ ํ๋ค.
-> ๋๊ฐ, ์ธ์ ํฅ๋ณด๋๋ฅผ ๋น๋ ค ๊ฐ๋์ง์ ๋ํ ์ ๋ณด๊ฐ ์ค์ํ๊ธฐ ๋๋ฌธ์ ๋์ฌ ์ผ์๋ฅผ ์ถ๊ฐํ์ฌ ๋ณตํฉํค๋ฅผ ๊ตฌ์ฑํ๋ค.
--> ๊ณ ๊ฐ ID๊ฐ ์ค๋ณต ๋์ด๋ ๋ ๋ค๋ฅธ ์์ฑ์ธ ๋์ฌ ์ผ์๊ฐ ๋ฌ๋ผ ์๋ก ๋ค๋ฅธ ํ์ผ๋ก ์ฒ๋ฆฌํ๋ค.
๋ณตํฉํค ์ ์ธ
CREATE TABLE 'ํ
์ด๋ธ ๋ช
' {
'์์ฑ๋ช
' ํ์
,
'์์ฑ๋ช
2' ํ์
,
...
}
PRIMARY KEY(`๋ณตํฉํค๋ก ์ฌ์ฉํ ์์ฑ๋ช
1`,`๋ณตํฉํค๋ก ์ฌ์ฉํ ์์ฑ๋ช
2`)
์ ์ผํค์ ๋ณต์ ๊ฐ์ ์์ฑ๋ช
์ ๋ฃ์ด ๋ณตํฉํค๋ฅผ ๊ตฌ์ฑํ๋ค.
์ธ๋ํค๋?
ํ
์ด๋ธ์ ์กด์ฌํ๋ ๋ฐ์ดํฐ๋ฅผ ๋ค์ ์
๋ ฅํ๋ ค ํ์ ๋, ์ค์๋ก ๋ค๋ฅด๊ฒ ์ถ๊ฐํ๋ฉด ์ถํ ๋ฐ์ดํฐ ๊ด๋ฆฌ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๊ฒ ๋๋ค.
์ธ๋ํค(Foreign Key)๋ ๋ค๋ฅธ ํ
์ด๋ธ์ ํค์ ์ฐ๊ฒฐ์ ํด์ฃผ๋ ํค์ด๋ฉฐ, ์ฐธ์กฐ์ ๋ฌด๊ฒฐ์ฑ์ ์ ์งํ๊ธฐ ์ํด ํ์ฉํ๋ค.
- ์ฐธ์กฐ์ ๋ฌด๊ฒฐ์ฑ: ์ธ๋ํค ๊ฐ์ด ์ฐธ์กฐ ์ค์ธ ํ
์ด๋ธ์ ๊ฐ๊ณผ ์ผ๊ด์ฑ์ ๊ฐ์ง๋ ๊ฒ์ ์๋ฏธํ๋ค.
์ฝ๋๋๋ ํฅ๋ณด๋ ๋์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ฒฝ์ฐ, ๊ณ ๊ฐ์ ID์ ๋ํด ๋ฐ๋ก ํ
์ด๋ธ์ ๊ตฌ์ฑํ๊ณ , ๊ณ ๊ฐ ํ
์ด๋ธ์ '๊ณ ๊ฐID' ์์ฑ์ ์ฐธ์กฐํ๋ ์ธ๋ํค๋ฅผ ๊ตฌ์ฑํ๋ค.
-> ์๋ก ์ถ๊ฐํ๋ ค๋ ํ ์ค ์ธ๋ํค์ธ '๊ณ ๊ฐID'์ ๋ด์ฉ์ด ๊ณ ๊ฐ ํ
์ด๋ธ(๊ธฐ๋ณธํค ์ฐธ์กฐ)์ ์์ง ์์ ๋ด์ฉ์ด๋ฏ๋ก ์ถ๊ฐ๋์ง ์๋๋ค.
์ธ๋ํค(Foreign Key) ์ ์ธ
CREATE TABLE 'ํ
์ด๋ธ ๋ช
' {
'์์ฑ๋ช
' ํ์
,
'์์ฑ๋ช
2' ํ์
,
...
FOREIGN KEY ('์ธ๋ํค๋ก ์ฌ์ฉํ ์์ฑ ๋ช
')
REFERENCES '์ฐธ์กฐํ๋ ์์ฑ์ด ์๋ ํ
์ด๋ธ' ('์ฐธ์กฐํ ์์ฑ๋ช
')
}