๐ก ๊ณต๋ชจ์ ๊ธฐํ์ ์ต์ข ์ ์ถํจ! ๊ฐ๋ฐ ์ชฝ์ ๊ธฐ์ ์์ ๋ค ์ธ์ด๊ฐ๋ ๊ฑฐ ๊ฐ์์ ๊ธํ๊ฒ ๊ธฐํ์ผ๋ก ํ์์ง๋ง.. ๊ฐ๋ฐ์ ํด์ผํ๋๊น!
cmd์์ ์คํmysql -uroot -p
mysql> create database sorimadang;
@'localhost' : ํด๋น ์ปดํจํฐ์์๋ง ์ ๊ทผ ๊ฐ๋ฅ@'%' : ์ด๋ค ํด๋ผ์ด์ธํธ์์๋ ์ ๊ทผ ๊ฐ๋ฅmysql> create user 'user'@'localhost' identified by 'admin';
๊ณ์ ์ 2๋ฒ์์ ๋ง๋ค์๋ DB์ ๊ถํ ์ถ๊ฐDB๋ช
.* : ํด๋น DB์ ๋ชจ๋ ํ
์ด๋ธ์ ๋ชจ๋ ์ ๊ทผ ๊ถํ ๋ถ์ฌ*.* : ๋ชจ๋ DB์ ํ
์ด๋ธ์ ๋ชจ๋ ์ ๊ทผ ๊ถํ ๋ถ์ฌall privileges ๋์ ํน์ ๊ถํ ์ ๊ธฐ (ex. alter)mysql> grant all privileges on sorimadang.* to 'user'@'localhost';
mysql> flush privileges
cmd์์ ์คํmysql -h127.0.0.1 -uuser -p sorimadang

์์ฑCREATE TABLE `sorimadang`.`user` (
`user_id` VARCHAR(13) NOT NULL,
`nickname` VARCHAR(13) DEFAULT NULL,
`password` VARCHAR(20) NOT NULL,
PRIMARY KEY (`user_id`)
);
์กฐํselect * from user;
์์ฑcreate table gameoxquiz(
stage_num int not null,
quiz_num int not null,
quiz varchar(50) not null,
answer int not null,
constraint gameoxquiz_pk primary key (stage_num, quiz_num)
);
์ฝ์
(์์)insert into gameoxquiz values (1, 1, "๊ฐ์ผ๊ธ์ 12์ค์ด๋ค.", 1),
(1, 2, "๊ฐ์ผ๊ธ์ 2์ค์ด๋ค.", 0),
(1, 3, "๊ฐ์ผ๊ธ์ 3์ค์ด๋ค.", 0),
(1, 4, "๊ฐ์ผ๊ธ์ 4์ค์ด๋ค.", 0),
(1, 5, "๊ฐ์ผ๊ธ์ 5์ค์ด๋ค.", 0),
(2, 1, "๊ฐ์ผ๊ธ์ 6์ค์ด๋ค.", 0),
(2, 2, "๊ฐ์ผ๊ธ์ 7์ค์ด๋ค.", 0),
(2, 3, "๊ฐ์ผ๊ธ์ 8์ค์ด๋ค.", 0),
(2, 4, "๊ฐ์ผ๊ธ์ 9์ค์ด๋ค.", 0),
(2, 5, "๊ฐ์ผ๊ธ์ 10์ค์ด๋ค.", 0),
(3, 1, "๊ฐ์ผ๊ธ์ 11์ค์ด๋ค.", 0),
(3, 2, "๊ฐ์ผ๊ธ์ 13์ค์ด๋ค.", 0),
` (3, 3, "๊ฐ์ผ๊ธ์ 14์ค์ด๋ค.", 0),
(3, 4, "๊ฐ์ผ๊ธ์ 15์ค์ด๋ค.", 0),
(3, 5, "๊ฐ์ผ๊ธ์ 16์ค์ด๋ค.", 0);
์กฐํselect * from gameoxquiz;
์์ฑcreate table wrongquiz(
serial_id int not null,
user_id varchar(13) not null,
stage_num int not null,
quiz_num int not null,
primary key (serial_id),
constraint references_user foreign key (user_id) references user(user_id) on delete cascade,
constraint references_gameoxquiz foreign key (stage_num, quiz_num) references gameoxquiz(stage_num, quiz_num) on update cascade on delete cascade
);
๐ก ๋ฌด๊ฒฐ์ฑ ์ ์ฝ ์กฐ๊ฑด - ์ฐธ์กฐ ๋ฌด๊ฒฐ์ฑ
์ธ๋ํค ๊ฐ์ Null์ด๊ฑฐ๋ ์ฐธ์กฐ ๋ฆด๋ ์ด์ ์ ๊ธฐ๋ณธํค ๊ฐ๊ณผ ๋์ผํด์ผ ํจ.
์ฆ, ๋ฆด๋ ์ด์ ์ ์ฐธ์กฐํ ์ ์๋ ์ธ๋ํค ๊ฐ์ ๊ฐ์ง ์ ์๋ค๋ ๊ท์
on delete cascade : ๋ถ๋ชจ ํ
์ด๋ธ์์ ํํ์ด ์ญ์ ๋๋ฉด, ์ฐธ์กฐํ๋ ๋ชจ๋ ์์ ํ
์ด๋ธ์ ๋ฐ์ดํฐ๋ ํจ๊ป ์ญ์ on delete set null : ๋ถ๋ชจ ํ
์ด๋ธ์์ ํํ์ด ์ญ์ ๋๋ฉด, ๊ด๋ จ๋ ๋ชจ๋ ํํ์ ํด๋น ํค ๊ฐ์ NULL๋ก ๋ณ๊ฒฝ on update cascade : ๋ถ๋ชจ ํ
์ด๋ธ์์ ํค ๊ฐ์ด ๋ณ๊ฒฝ๋๋ฉด, ์ฐธ์กฐํ๋ ๋ชจ๋ ์์ ํ
์ด๋ธ์ ๊ฐ๋ ๊ฐ์ ๊ฐ์ผ๋ก ๋ณ๊ฒฝ์กฐํselect * from wrongquiz;
branch ํ์ธํ๊ธฐ๊ตฌ๊ธ ๋ก๊ทธ์ธ ํ์ฉOAuth๋ Spring Security ๊ณต๋ถํ๊ธฐํ
์ด๋ธ ์ถ๊ฐ