1. ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค๊ณํ๊ธฐ
db ์ด๋ฆ: yummy_db
1) ๋ง์ง ํ
์ด๋ธ
์ด ์ด๋ฆ | place | ๋ฐ์ดํฐํ์ | ์ต๋ ๊ธธ์ด | null ํ์ฉ ์ฌ๋ถ |
์๋ฒ (PK) | num | int, auto_increment | x | |
์๋น ์ด๋ฆ (Unique) | place_name | char | 20 | x |
์์ ์ข ๋ฅ | place_kind | char | 10 (ํ์, ์ค์, ์์, ๋ฒ ํธ๋จ์) | x |
๊ฑฐ๋ฆฌ (๋๋ณด) | place_howfar | tinyint, unsigned | o |
๊ฐ๊น์ด ๊ฑฐ๋ฆฌ์ ์์นํ ๋ง์ง๋ง ์ ๋ฆฌํ ๊ฒ์ด๋ฏ๋ก tinyint๋ฅผ ์ฌ์ฉํ๋ค.
2) ์์ ํ
์ด๋ธ
์ด ์ด๋ฆ | food | ๋ฐ์ดํฐํ์ | ์ต๋ ๊ธธ์ด | null ํ์ฉ ์ฌ๋ถ |
์๋ฒ (PK) | num | int, auto_increment | x | |
์์ ์ข ๋ฅ | food_kind | char | 10 | x |
์์ ์ด๋ฆ | food_name | char | 20 | x |
์๋น ์ด๋ฆ (FK) | place_name | char | 20 | x |
์์ ๊ฐ๊ฒฉ | food_price | int | x | |
์์ ๋ง์กฑ๋ | food_rating | tinyint | 1์ ~5์ | o, 0์ ์ด์์ด๊ณ 5์ ์ด ๋์ง ์๋์ง ์ฒดํฌ |
๋น๊ณ | food_memo | char | 30 | o |
์ต์ข
์ ์ผ๋ก ์ถ๋ ฅํ ํ
์ด๋ธ์ ๋ง์ง์ ์ด๋ฆ์ ์
๋ ฅํ๋ฉด ๊ทธ๊ณณ์ ์์์ ๋ํ ์ ๋ณด๊ฐ ๋์ค๋ ํ
์ด๋ธ๊ณผ
์์์ ์ข
๋ฅ๋ฅผ ๋ฃ์ผ๋ฉด ์์์ ์ ๋ณด์ ๊ทธ ์๋น์ ์ ๋ณด๊ฐ ๋์ค๋ ํ
์ด๋ธ์ด๋ค.
๋ง์ง ํ ์ด๋ธ | |
์๋น ์ด๋ฆ | place_name |
์์ ์ข ๋ฅ | food_kind |
๊ฑฐ๋ฆฌ (๋๋ณด) | place_howfar |
์์ ์ด๋ฆ | food_name |
๊ฐ๊ฒฉ | food_price |
๋ง์กฑ๋ (5์ ) | food_rating |
๋น๊ณ | food_memo |
2. ํ ์ด๋ธ ๋ง๋ค ์์ ์ ํ๊ธฐ
food ํ
์ด๋ธ์ place ํ
์ด๋ธ์ place_name์ FK๋ก ๋ฐ๊ณ ์์ผ๋ฏ๋ก place ํ
์ด๋ธ์ ๋จผ์ ๋ง๋ ๋ค.
3. place ํ ์ด๋ธ ๋ง๋ค๊ณ ๋ฐ์ดํฐ ๋ฃ๊ธฐ
create table place (
num int not null primary key auto_increment,
place_name char(20) not null unique,
place_kind char(10) not null,
place_howfar tinyint unsigned
);
show columns from place;
insert into place(place_name, place_kind, place_howfar) values ('์ฌ๋ฐ๋ฅธ์ค์', '์ผ์', 5);
insert into place(place_name, place_kind, place_howfar) values ('์ดํ์ฐ์ค์', '์ผ์', 6);
insert into place(place_name, place_kind, place_howfar) values ('๋ฏธ๋ถ๋น', '๋ฒ ํธ๋จ์์', 5);
insert into place(place_name, place_kind, place_howfar) values ('๋กค๋งํ์คํ', '์์', 4);
insert into place(place_name, place_kind, place_howfar) values ('์ก์๋๋ฉด', 'ํ์', 3);
insert into place(place_name, place_kind, place_howfar) values ('ํ์ฝฉ๋ฐ์ 0410', '์ค์', 8);
insert into place(place_name, place_kind, place_howfar) values ('ํธ๋', '๋ฒ ํธ๋จ์์', 6);
insert into place(place_name, place_kind, place_howfar) values ('ํฌ๋ก๋น์ํธ', '๋ฒ ํธ๋จ์์', 7);
insert into place(place_name, place_kind, place_howfar) values ('๊นํฌ๋ผ ํ๊ตญ์์๋๊น์ค', 'ํ์', 8);
insert into place(place_name, place_kind, place_howfar) values ('๊ทธ๋๋๊ตญ์', 'ํ์', 4);
select * from place;
4. food ํ ์ด๋ธ ๋ง๋ค๊ณ ๋ฐ์ดํฐ ๋ฃ๊ธฐ
create table food (
num int not null primary key auto_increment,
food_kind char(10) not null,
food_name char(20) not null,
place_name char(20) not null,
food_price int not null,
food_rating tinyint unsigned check (food_rating <=5),
food_memo char(30),
foreign key (place_name) references place(place_name)
);
show columns from food;
insert into food(food_kind, food_name, place_name, food_price, food_rating, food_memo) values
('์ผ์', '์ฌ๋ฐ๋ฅธ์ด๋ฐฅ10ps', '์ฌ๋ฐ๋ฅธ์ค์', 14000, 5, '');
insert into food(food_kind, food_name, place_name, food_price, food_rating, food_memo) values
('์ผ์', '์ ์ฌํน์ ์ฐ๋์ ์', '์ฌ๋ฐ๋ฅธ์ค์', 9500, 5, '๊ฐ์ฑ๋น ๊ตฟ');
insert into food(food_kind, food_name, place_name, food_price, food_rating, food_memo) values
('์ผ์', '์ ์ฌํน์ ๋ชจ๋ฐ์ ์', '์ฌ๋ฐ๋ฅธ์ค์', 9500, 5, '๊ฐ์ฑ๋น ๊ตฟ, ์ฌ๋ฆ๋ฉ๋ด');
insert into food(food_kind, food_name, place_name, food_price, food_rating, food_memo) values
('์ผ์', '์๋ฐฅ', '์ฌ๋ฐ๋ฅธ์ค์', 7000, 5, '');
insert into food(food_kind, food_name, place_name, food_price, food_rating, food_memo) values
('์ผ์', 'ํ์ผ ๋ฐ์น์ด๋ฐฅ', '์ดํ์ฐ์ค์', 12000, 5, '๊ธด๊ผฌ๋ฆฌ์ด๋ฐฅ');
insert into food(food_kind, food_name, place_name, food_price, food_rating, food_memo) values
('์์', '์คํ
์ดํฌ ํ๋ผํ', '๋กค๋งํ์คํ', 8500, 2, '๋ง์๋ ๊ณ ๊ธฐ๊ฐ ์๋..');
insert into food(food_kind, food_name, place_name, food_price, food_rating, food_memo) values
('์์', 'ํ ๋งํ ํ์คํ', '๋กค๋งํ์คํ', 5000, 4, '');
insert into food(food_kind, food_name, place_name, food_price, food_rating, food_memo) values
('์์', '๋ฐ์งํ์คํ ํฌ๋ฆผ ํ์คํ', '๋กค๋งํ์คํ', 8500, 2, '๋ง์์ง ์์๋ฐ ๊ตณ์ด ๋ ๋จน์ง ์์๋ฏ');
insert into food(food_kind, food_name, place_name, food_price, food_rating, food_memo) values
('์ค์', '์ง์ฅ๋ฉด', 'ํ์ฝฉ๋ฐ์ 0410', 6500, 3, '๊ทธ๋ฅ์ง์ฅ๋ฉด');
insert into food(food_kind, food_name, place_name, food_price, food_rating, food_memo) values
('๋ฐฐํธ๋จ์์', '์์ง ์๊ตญ์', 'ํธ๋', 9000, 5, '๊ทธ๋ฆ์ด ๋งค์ฐ ํผ');
insert into food(food_kind, food_name, place_name, food_price, food_rating, food_memo) values
('ํ์', '์๋๊น์ค', '๊นํฌ๋ผ ํ๊ตญ์์๋๊น์ค', 10000, 4, '์์ด ๋๋ฌด ๋ง์');
insert into food(food_kind, food_name, place_name, food_price, food_rating, food_memo) values
('ํ์', '์์น๊ตญ์', '๊ทธ๋๋๊ตญ์', 5000, 4, '');
select * from food;
5. view ๋ง๋ค๊ณ ๋ฐ์ดํฐ ์กฐํํ๊ธฐ
create view find_place
as
select place.place_name, food.food_name, place.place_howfar, food.food_name, food.food_price, food.food_rating, food.food_memo
from food
join place
on place.place_name = food.place_name
order by food.food_rating desc;
select * from find_place;
์ผ์ ์ค์์ ์ฐพ๊ธฐ
select * from find_place
where food_kind='์ผ์';
์ฌ๋ฐ๋ฅธ ์ด๋ฐฅ ๋ฉ๋ด ๋ณด๊ธฐ
select * from find_place
where place_name='์ฌ๋ฐ๋ฅธ์ค์';
6. ์ธ๋ฑ์ค ๋ง๋ค๊ธฐ
์ธ๋ฑ์ค๋ ๊ฒ์์ ์์ฃผ ์ฐ์ด๋ ์ด์ ์ ํํ๋ ๊ฒ์ด ์ข์ผ๋ฏ๋ก place_name๊ณผ food_kind๋ฅผ ๋ง๋ค์๋ค.
create index idx_place_place_name
on place(place_name);
create index idx_food_food_kind
on food(food_kind);
PK์ Uniqueํ ๋ฐ์ดํฐ๋ ์ด๋ฏธ index๊ฐ ๋ง๋ค์ด์ ธ ์๋ ๊ฒ์ ๋ณผ ์ ์๋ค.
๊ทธ๋ฐ๋ฐ ์๊ฐํด๋ณด๋๊น food_kind๋ ํ์, ์ผ์ ๋ฑ ์ค๋ณต๋๊ฐ ๋์ผ๋ฏ๋ก ์ธ๋ฑ์ค๊ฐ ์๋ ๊ฒ์ด ๋ฌด์๋ฏธํ ๊ฒ ๊ฐ์์ ์ญ์ ํ์๋ค.
alter table food drop index idx_food_food_kind;
์ ์ฒด์ฝ๋
drop database if exists yummy_db;
create database yummy_db;
use yummy_db;
-- place ํ
์ด๋ธ
create table place (
num int not null primary key auto_increment,
place_name char(20) not null unique,
place_kind char(10) not null,
place_howfar tinyint unsigned
);
show columns from place;
insert into place(place_name, place_kind, place_howfar) values ('์ฌ๋ฐ๋ฅธ์ค์', '์ผ์', 5);
insert into place(place_name, place_kind, place_howfar) values ('์ดํ์ฐ์ค์', '์ผ์', 6);
insert into place(place_name, place_kind, place_howfar) values ('๋ฏธ๋ถ๋น', '๋ฒ ํธ๋จ์์', 5);
insert into place(place_name, place_kind, place_howfar) values ('๋กค๋งํ์คํ', '์์', 4);
insert into place(place_name, place_kind, place_howfar) values ('์ก์๋๋ฉด', 'ํ์', 3);
insert into place(place_name, place_kind, place_howfar) values ('ํ์ฝฉ๋ฐ์ 0410', '์ค์', 8);
insert into place(place_name, place_kind, place_howfar) values ('ํธ๋', '๋ฒ ํธ๋จ์์', 6);
insert into place(place_name, place_kind, place_howfar) values ('ํฌ๋ก๋น์ํธ', '๋ฒ ํธ๋จ์์', 7);
insert into place(place_name, place_kind, place_howfar) values ('๊นํฌ๋ผ ํ๊ตญ์์๋๊น์ค', 'ํ์', 8);
insert into place(place_name, place_kind, place_howfar) values ('๊ทธ๋๋๊ตญ์', 'ํ์', 4);
select * from place;
-- food ํ
์ด๋ธ
create table food (
num int not null primary key auto_increment,
food_kind char(10) not null,
food_name char(20) not null,
place_name char(20) not null,
food_price int not null,
food_rating tinyint unsigned check (food_rating <=5),
food_memo char(30),
foreign key (place_name) references place(place_name)
);
show columns from food;
insert into food(food_kind, food_name, place_name, food_price, food_rating, food_memo) values
('์ผ์', '์ฌ๋ฐ๋ฅธ์ด๋ฐฅ10ps', '์ฌ๋ฐ๋ฅธ์ค์', 14000, 5, '');
insert into food(food_kind, food_name, place_name, food_price, food_rating, food_memo) values
('์ผ์', '์ ์ฌํน์ ์ฐ๋์ ์', '์ฌ๋ฐ๋ฅธ์ค์', 9500, 5, '๊ฐ์ฑ๋น ๊ตฟ');
insert into food(food_kind, food_name, place_name, food_price, food_rating, food_memo) values
('์ผ์', '์ ์ฌํน์ ๋ชจ๋ฐ์ ์', '์ฌ๋ฐ๋ฅธ์ค์', 9500, 5, '๊ฐ์ฑ๋น ๊ตฟ, ์ฌ๋ฆ๋ฉ๋ด');
insert into food(food_kind, food_name, place_name, food_price, food_rating, food_memo) values
('์ผ์', '์๋ฐฅ', '์ฌ๋ฐ๋ฅธ์ค์', 7000, 5, '');
insert into food(food_kind, food_name, place_name, food_price, food_rating, food_memo) values
('์ผ์', 'ํ์ผ ๋ฐ์น์ด๋ฐฅ', '์ดํ์ฐ์ค์', 12000, 5, '๊ธด๊ผฌ๋ฆฌ์ด๋ฐฅ');
insert into food(food_kind, food_name, place_name, food_price, food_rating, food_memo) values
('์์', '์คํ
์ดํฌ ํ๋ผํ', '๋กค๋งํ์คํ', 8500, 2, '๋ง์๋ ๊ณ ๊ธฐ๊ฐ ์๋..');
insert into food(food_kind, food_name, place_name, food_price, food_rating, food_memo) values
('์์', 'ํ ๋งํ ํ์คํ', '๋กค๋งํ์คํ', 5000, 4, '');
insert into food(food_kind, food_name, place_name, food_price, food_rating, food_memo) values
('์์', '๋ฐ์งํ์คํ ํฌ๋ฆผ ํ์คํ', '๋กค๋งํ์คํ', 8500, 2, '๋ง์์ง ์์๋ฐ ๊ตณ์ด ๋ ๋จน์ง ์์๋ฏ');
insert into food(food_kind, food_name, place_name, food_price, food_rating, food_memo) values
('์ค์', '์ง์ฅ๋ฉด', 'ํ์ฝฉ๋ฐ์ 0410', 6500, 3, '๊ทธ๋ฅ์ง์ฅ๋ฉด');
insert into food(food_kind, food_name, place_name, food_price, food_rating, food_memo) values
('๋ฐฐํธ๋จ์์', '์์ง ์๊ตญ์', 'ํธ๋', 9000, 5, '๊ทธ๋ฆ์ด ๋งค์ฐ ํผ');
insert into food(food_kind, food_name, place_name, food_price, food_rating, food_memo) values
('ํ์', '์๋๊น์ค', '๊นํฌ๋ผ ํ๊ตญ์์๋๊น์ค', 10000, 4, '์์ด ๋๋ฌด ๋ง์');
insert into food(food_kind, food_name, place_name, food_price, food_rating, food_memo) values
('ํ์', '์์น๊ตญ์', '๊ทธ๋๋๊ตญ์', 5000, 4, '');
select * from food;
-- view ๋ง๋ค๊ธฐ
create view find_place
as
select place.place_name, food.food_kind, place.place_howfar, food.food_name, food.food_price, food.food_rating, food.food_memo
from food
join place
on place.place_name = food.place_name
order by food.food_rating desc;
-- ๋ฐ์ดํฐ ์กฐํํ๊ธฐ
select * from find_place;
select * from find_place
where food_kind='์ผ์';
select * from find_place
where food_kind='ํ์';
select * from find_place
where place_name='์ฌ๋ฐ๋ฅธ์ค์';
'๐ฅ๏ธ > DBMS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Oracle ๋ฌธ๋ฒ] ๋ฌธ์์ด ํฉ์น๊ธฐ (concat, ||) (0) | 2023.07.05 |
---|---|
[Oracle ๋ฌธ๋ฒ] order by ~ limit ๊ตฌํํ๊ธฐ (0) | 2023.06.28 |
SQL Select ํ์ฉ(์๋ธ์ฟผ๋ฆฌ, group by, join) (0) | 2023.04.10 |
SQL ์ ์ฝ์กฐ๊ฑด (PK, FK, Unique, Check, Default) (0) | 2023.04.10 |
[MySQL] ํ ์ด๋ธ ๋ง๋ค๊ธฐ (0) | 2023.04.10 |