1. ์ ๋ํฌ
- ๋จ์ผ ์ปฌ๋ผ์ ๊ฐ์ด ์ค๋ณต๋์ง ์๋๋ก ํ๋ ๊ฒ์ด๋ค
username์ ๊ทธ ์์ฒด๋ก UQ(unique) ํด์ผํ๋ค.
username์ UQ๋ฅผ ์ฒดํฌํ๋ฉด, ๋์ผํ username์ ์กด์ฌํ ์ ์๊ณ ,
๊ฐ์ username์ผ๋ก ํ์๊ฐ์ ํ๋ ค๊ณ ํ๋ฉด, ์ค๋ฅ๋ฉ์ธ์ง๋ฅผ ๋์ ๋ค๋ฅธ username์ผ๋ก ๊ฐ์ ํ๊ฒ ํ ์ ์๋ค.
2. ์ด์ค์ ๋ํฌ
- ๋ ๊ฐ ์ด์์ ์ปฌ๋ผ ์กฐํฉ์ ๊ฐ์ด ์ค๋ณต๋์ง ์๋๋ก ํ๋ ๊ฒ์ด๋ค.
ํ๋ก์ฐ์ ํ๋ก์ํ๋ ์ฌ๋์ ์ฌ๋ฌ๋ช ์ด ๋ฐ์ํ ์ ์๋ค.
์๋ฅผ ๋ค๋ฉด 'abcd' ๋ผ๋ ์ฌ๋์ 'ef'์ 'gh'๋ผ๋ ์ฌ๋์ ๋์์ ํ๋ก์ฐ ํ ์ ์๋ค.
followerId followeeId
'abcd' 'ef'
'abcd' 'gh'
๊ทธ๋ฌ๋ฏ๋ก followerId๋ ๊ทธ ์์ฒด๋ก๋ ์ค๋ณต๋์ด๋ ์๊ด์๋ค.
์์ ๋ก๋ ๋ํ๋ด์ง ์์์ง๋ง, followeeId ์ปฌ๋ผ๋ ๊ทธ ์์ฒด๋ก๋ ์ค๋ณต๋์ด๋ ์๊ด ์๋ค.
๊ทธ๋ฌ๋ ์๋์ ๊ฐ์ด ์ค๋ณต๋์ด ๊ฐ์ ์ฌ๋์ ๋ ํ๋ก์ฐํ๋ค๋ฉด ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค.
insert into follow
(followerId, followeeId)
values
(101, 1) ;
insert into follow
(followerId, followeeId)
values
(101, 1) ;
๊ฐ์์ฌ๋์ด ๊ฐ์์ฌ๋์ ๋๋ฒ ์ด์ ํ๋ก์ฐ ํ ์ ์๋ค๋ฉด ๋ฌธ์ ๊ฐ ๋ฐ์ํ ๊ฒ์ด๋ฏ๋ก
(followerId, followeeId) ๋ ๊ฐ์ด ๋์์ ๊ฐ์๊ฐ์ด ๋๋ค๋ฉด ์๋๋ค.
๋ฐ๋ผ์ ์ด์ค์ ๋ํฌ๋ฅผ ์ค์ ํ๊ธฐ ์ํด์๋ ์๋์ ์์นํ Index๋ก ์ด๋ํด์,
์ธ๋ฑ์ค ์ด๋ฆ์ ์์ ๋กญ๊ฒ ์ค์ ํ๊ณ , Type์ UNIQUE๋ก ๋ฐ๊ฟ์ค๋ค์,
Index Columns์์ ์ค๋ณต๋์ง ์๊ฒ ํ ์ปฌ๋ผ์ ์ฒดํฌํด์ค๋ค.
APPLY ํ์ฌ ์ ์ฉํ๋ฉด ์ด์ค์ ๋ํฌ๋ฅผ ์ค์ ํ ์ ์๋ค.