๊ตญ๋น์ง์ D+30
- DB ์ธ๋ํค, ๊ทธ๋ฃนํ, DB๊ฐ๋ -
DB ์ธ๋ํค
์ธ๋ํค๋ ๋ด ํ ์ด๋ธ๊ณผ ๋ค๋ฅธ ํ ์ด๋ธ์ ์ฐ๊ฒฐํด์ฃผ๋ ๋ค๋ฅธ ํ ์ด๋ธ์ ํค์ด๋ค.
๋ง์ฝ ์ธ๋ํค๊ฐ ์์ ๊ฒฝ์ฐ ๋ถํ์ํ ์ ๋ณด๊ฐ ๋ง์์ง ์ ์์ผ๋ฉฐ, ์ถํ์ ์์ ๋ ๋ฐ์ดํฐ๋ก์ธํด ๋ฐ์ดํฐ ๋ถ์ผ์น๊ฐ ๋ฐ์๋ ์ ์๋ค.
ํ ์ด๋ธ์ ๋ฌดํฑ๋๊ณ ๋ง๋ค๊ฒ ๋ ๊ฒฝ์ฐ ๊ณต๊ฐ๋ญ๋น์ ๋ฐ์ดํฐ์ ๊ฒฐํจ์ด ๋ฐ์๋ ์ ์๋ค๋ ๊ฒ์ด๋ค.
๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์ธ๋ํค๋ฅผ ์ฌ์ฉํ๊ฒ ๋๋ฉด ์ค๋ณต์ ์ต์ํํ๊ณ ๋ฐ์ดํฐ์ ๋ฌด๊ฒฐ์ฑ์ ์งํฌ ์ ์๊ธฐ ๋๋ฌธ์ ์ธ๋ํค์ ์กด์ฌ๋ ๋งค์ฐ ์ค์ํ๋ค.
-- ํ
์ด๋ธ ์์ฑ
create table usertbl -- ํ์ํ
์ด๋ธ
(
userID char(20) not null primary key,
name varchar(20) not null,
birthYear int not null,
addr char(2) not null,
mobile1 char(3),
mobile2 char(8),
height smallint,
mDate date
);
create table buytbl -- ๊ตฌ๋งคํ
์ด๋ธ
(
num int not null primary key auto_increment,
userID char(20) not null,
prodName varchar(20) not null,
groupName char(4),
price int not null,
amount smallint not null,
-- usertbl์ userID(์ธ๋ํค)๋ฅผ ํตํด buytbl์ ์ฐธ์กฐํ ์ ์๋ค.
foreign key (userID) references usertbl(userID)
);
DB ๊ทธ๋ฃนํ
• group by
- ์กฐํ ๊ฒฐ๊ณผ๋ฅผ ํน์ ๊ธฐ์ค์ผ๋ก ๊ทธ๋ฃนํ์ ์ํ
- where์ ๋ค์์ ์์น
- ์ง๊ณํจ์ : AVG(), MIN(), MAX(), COUNT()
• having
group by์ ํจ๊ป ์ฌ์ฉ๋๋ ์กฐ๊ฑด์ ๋ก ๊ธฐ์กด์ ์ฌ์ฉํ๊ณ ์๋ where์ ๊ฐ์ ๊ฒฝ์ฐ where์ ์ ๋์์ ํ ์ด๋ธ๋ก ์กฐ๊ฑด์ ์ฑ๋ฆฝ๋๋ ๋ฐ์ดํฐ๋ฅผ ๋ฝ์๋ด์ง๋ง group by๋ฅผ ์ฌ์ฉํด์ ์ง๊ณํจ์๋ฅผ ์ฌ์ฉํ ๊ฒฝ์ฐ ๋์์ด ํ ์ด๋ธ์ด ์๋๋ผ ์ง๊ณํจ์์ ๊ฒฐ๊ณผ๋ฌผ๋ด์์ ๋ฝ์๋ด๊ธฐ ๋๋ฌธ์ having์ ์ฌ์ฉํด์ค๋ค.
-- ์ฌ์ฉ์๋ณ๋ก 1000์ ์ด์ ์ฐ ์ฌ๋์ ์ด ๊ตฌ๋งค์ก์ ์กฐํํ๋ค.
select userID, sum(price*amount) as '๊ตฌ๋งค์ดํฉ'
from buytbl
group by userID
having sum(price*amount) > 1000;
DB ๊ฐ๋
• ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์
- ํตํฉ๋ฐ์ดํฐ : ๋ฐ์ดํฐ๋ฅผ ํตํฉ์์ผ์ ์ค๋ณต์ ์์ค๋ค. (๋ฐ์ดํฐ ์ต์ํ)
- ๊ณต์ฉ๋ฐ์ดํฐ : ์ฌ๋ฌ ์กฐ์ง, ์ฌ์ฉ์๊ฐ ๋ฐ์ดํฐ๋ฅผ ๊ณต์ ํ๋ค.
- ์ด์๋ฐ์ดํฐ : ์กฐ์ง์ด ํ์ํ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ค.
- ์ ์ฅ๋ฐ์ดํฐ : ๋ฐ์ดํฐ๋ ์ ์ฅ๋์ด์ผ ํ๋ค.
• ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํน์ง
โ ์ค์๊ฐ ์ ๊ทผ์ฑ
- ์์ฒญ๋ฐ์ ๋ฐ์ดํฐ ์ฒ๋ฆฌ๋ ์ค์๊ฐ์ผ๋ก ์ฒ๋ฆฌ๋๊ณ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํด์ผ ํ๋ค.
- ์ด๋ ์ปดํจํฐ์์์ ์ค์๊ฐ์ด๋, ๋ช ๋ น์ ๋ด๋ฆฐ ์ฆ์ ์ฒ๋ฆฌ๋๋ ๊ฒ์ด ์๋๋ผ ์์์ด ํ์ ๋์ด ์๋ ์ํฉ์์ ์์ ์ํ์ด ์์ฒญ๋์์ ๋, ์ด๋ฅผ ์ ํ๋ ์๊ฐ์์ ์ฒ๋ฆฌํด ๊ฒฐ๊ณผ๋ฅผ ๋ด์ฃผ๋ ๊ฒ์ ๋งํ๋ค.
(์ฆ, ์ ํด์ง ์๊ฐ์์๋ง ์ฒ๋ฆฌ๋๋ฉด ๋ฌด์กฐ๊ฑด ์ค์๊ฐ์ด๋ผ๋ ์๋ฏธ์ด๋ค)
(์ด์์ฒด์ ๋ ๊ธฐ์ค์ด ์๊ธฐ๋๋ฌธ์ ์ค์๊ฐ์ด๋ผ๊ณ ํ ์ ์๋ค)
โก ๊ณ์์ ๋ณํ
- ์ ์ฅ๋ ๋ฐ์ดํฐ๋ ์ ๋ ฅ, ์์ , ์ญ์ ์ ์ํด ์ง์์ ์ผ๋ก ๋ณํํ๋ค.
โข ๋์๊ณต์ฉ (Concurrent Sharing)
- ์๋ก ๋ค๋ฅธ ๋ชฉ์ ์ ์์ฉ SW ๋ฐ ์ฌ์ฉ์์ ์ํด ๋์ ๊ณต์ฉ์ด ๊ฐ๋ฅํ๋ค.
- Concurrent : ๋์์ ์คํ๋๋ ๊ฒ์ฒ๋ผ ๋ณด์ด๋ ๊ฒ (๋ณํ์ฑ)
- Parallel : ๋์์ ์์ ์ด ์ฒ๋ฆฌ๊ฐ ๋๋ ๊ฒ (๋ณ๋ ฌ์ฑ)
(๋์์ ๋ํ ์๋ฏธ๊ฐ ์ฐจ์ด๊ฐ ์์ผ๋ฏ๋ก ์ ๊ตฌ๋ถํ๋๋ก ํ๋ค)
โฃ ๋ด์ฉ์ ์ํ ์ฐธ์กฐ
- ๋ฐ์ดํฐ์ ์ฐธ์กฐ๋ ๋ฐ์ดํฐ์ ์ฃผ์๊ฐ ์๋ ์ ์ฅ๋ ๊ฐ์ ์ํด ์ฒ๋ฆฌ๋๋ค.
• ์คํค๋ง
- ๋ฐ์ดํฐ๋ฒ ์ด์ค, ํ ์ด๋ธ, ๋ทฐ๋ฑ์ ๋ง๋ค๊ธฐ ์ํ ๊ธฐ๋ฐ์ด ๋๋ ๋ฐ์ดํฐ์งํฉ, ๊ท์น
- ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ตฌ์กฐ์ ์ ์ฝ ์กฐ๊ฑด์ ๊ดํ ์ ๋ฐ์ ์ธ ๋ช ์ธ๋ฅผ ๊ธฐ์ ํ ๋ฉํ๋ฐ์ดํฐ์ ์งํฉ
์คํค๋ง 3๊ณ์ธต
โ ์ธ๋ถ์คํค๋ง(External Schema) = ์ฌ์ฉ์ ๋ทฐ(View)
- ์ฌ์ฉ์๋ ์์ฉํ๋ก๊ทธ๋๋จธ๊ฐ ๊ฐ ๊ฐ์ธ์ ์ ์ฅ์์ ํ์๋ก ํ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ ผ๋ฆฌ์ ๊ตฌ์กฐ๋ฅผ ์ ์ํ ๊ฒ์ด๋ค.
- ์ ์ฒด ๋ฐ์ด์ค๋ฒ ์ด์ค์ ํ ๋ ผ๋ฆฌ์ ์ธ ๋ถ๋ถ์ผ๋ก ๋ณผ ์ ์์ด ์๋ธ ์คํค๋ง๋ผ๊ณ ๋ ํ๋ค.
- ์ผ๋ฐ ์ฌ์ฉ์๋ ์ง์์ด(SQL)๋ฅผ ์ด์ฉํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฝ๊ฒ ์ฌ์ฉํ ์ ์๋ค.
โก ๊ฐ๋ ์คํค๋ง(Conceptual Schema) = ์ ์ฒด์ ์ธ ๋ทฐ(View)
- ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฒด์ ์ธ ๋ ผ๋ฆฌ์ ์ธ ๊ตฌ์กฐ๋ก์, ๋ชจ๋ ์์ฉํ๋ก๊ทธ๋จ์ด๋ ์ฌ์ฉ์๋ค์ด ํ์๋ก ํ๋ ๋ฐ์ดํฐ๋ฅผ ์ข ํฉํ ์กฐ์ง ์ ์ฒด์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก ํ๋๋ง ์กด์ฌํ๋ค.
- ๊ฐ์ฒด๊ฐ์ ๊ด๊ณ์ ์ ์ฝ ์กฐ๊ฑด์ ๋ํ๋ด๊ณ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ๊ทผ ๊ถํ, ๋ณด์ ๋ฐ ๋ฌด๊ฒฐ์ฑ ๊ท์น์ ๊ดํ ๋ช ์ธ๋ฅผ ์ ์ํ๋ค.
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ์ผ์ ์ ์ฅ๋๋ ๋ฐ์ดํฐ์ ํํ๋ฅผ ๋ํ๋ด๋ ๊ฒ์ผ๋ก ๋จ์ํ ์คํค๋ง๋ผ๊ณ ํ๋ฉด ๊ฐ๋ ์คํค๋ง๋ฅผ ์๋ฏธํ๋ค.
- ๊ธฐ๊ด์ด๋ ์กฐ์ง์ฒด์ ๊ด์ ์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ ์ํ ๊ฒ์ด๋ค.
โข ๋ด๋ถ์คํค๋ง(Internal Schema) = ์ ์ฅ ์คํค๋ง(Storage Schema)
- ๋ฌผ๋ฆฌ์ ์ธ ์ ์ฅ์ฅ์น์ ๋ฐ์ดํฐ๋ฅผ ์ด๋ป๊ฒ ์ ์ฅํ ๊ฒ์ธ๊ฐ์ ๋ํ ์ ๋ณด๋ฅผ ๊ฐ์ง๊ณ ์๋ค.
- ์ค์ ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅ๋ ๋ ์ฝ๋์ ๋ฌผ๋ฆฌ์ ์ธ ๊ตฌ์กฐ๋ฅผ ์ ์ํ๊ณ , ์ ์ฅ ๋ฐ์ดํฐ ํญ๋ชฉ์ ํํ๋ฐฉ๋ฒ, ๋ด๋ถ ๋ ์ฝ๋์ ๋ฌผ๋ฆฌ์ ์์ ๋ฑ์ ๋ํ๋ธ๋ค.
• ํํ
- ํ ์ด๋ธ์ ์ ์ฅ๋์ด ์๋ ๋ฐ์ดํฐ๋ก row๋ฅผ ํํ์ด๋ผ๊ณ ํ๋ค.
ํํ์ ํน์ฑ
- ํํ์ ์ ์ผ์ฑ : ๊ฐ์ ํํ์ ์กด์ฌํ์ง ์๋๋ค. → ํค(key)๋ฅผ ๊ฐ์ง๋ค.
- ํํ์ ๋ฌด์์์ฑ : ๊ธฐ์กด์ ํํ์ ์์๋ฅผ ๊ฐ์ง๊ณ ์์ง ์๋๋ค.
• ํค (key)
- ํํ์ ๊ตฌ๋ถํ๊ธฐ ์ํ ๊ฐ
โ ํ๋ณดํค (Candidate Key)
- ๋ฆด๋ ์ด์ ์ ๊ตฌ์ฑํ๋ ์์ฑ๋ค์ค ํํ์ ์ ์ผํ๊ฒ ์๋ณํ ์ ์๋ ์์ฑ๋ค์ ๋ถ๋ถ์งํฉ์ ์๋ฏธํ๋ค.
- ๋ชจ๋ ๋ฆด๋ ์ด์ ์ ํ๋ ์ด์์ ํ๋ณดํค๋ฅผ ๊ฐ์ ธ์ผ ํ๋ค.
- ์ ์ผ์ฑ๊ณผ ์ต์์ฑ์ ๋ง์กฑํด์ผ ํ๋ค.
โก ๊ธฐ๋ณธํค (Primary Key)
- ํ๋ณดํค ์ค์์ ์ ํํ ๋ฉ์ธํค์ด๋ค.
- ํํ์ ์ ์ผํ๊ฒ ๊ตฌ๋ถํ ์ ์๋ ์์ฑ์ผ๋ก Null๊ฐ์ ๊ฐ์ง ์ ์๋ค.
- ํต์ผํ ๊ฐ์ด ์ค๋ณต๋์ด ์ ์ฅ ๋ ์ ์๋ค.
โข ๋์ฒดํค (Alternate Key)
- ํ๋ณดํค๊ฐ ๋ ์ด์์ผ ๋ ๊ธฐ๋ณธํค๋ฅผ ์ ์ธํ ๋๋จธ์ง ํ๋ณดํค๋ฅผ ๋ํ๋ธ๋ค.
โฃ ์ํผํค (Super Key)
- ํ ๋ฆด๋ ์ด์ ๋ด์ ์๋ ์์ฑ๋ค์ ์งํฉ์ผ๋ก ๊ตฌ์ฑ๋ ํค์ด๋ค.
- ์ ์ผ์ฑ์ ๋ง์กฑํ์ง๋ง ์ต์์ฑ์ ๋ง์กฑํ์ง ๋ชปํ๋ค.
โค ์ธ๋ํค (Foreign Key)
- ์ฐธ์กฐ๋๋ ๋ฆด๋ ์ด์ ์ ๊ธฐ๋ณธํค์ ๋์๋์ด ๋ฆด๋ ์ด์ ๊ฐ์ ์ฐธ์กฐ ๊ด๊ณ๋ฅผ ํํํ๋ ๋๊ตฌ์ด๋ค.
(์ธ๋ํค๋ ์ผ์ข ์ ์ ์ฝ์กฐ๊ฑด์ด์ง ํค๋ผ๊ณ ๋ณด๊ธฐ ์ด๋ ต๋ค)
- ์ธ๋ํค๋ก ์ง์ ๋๋ฉด ์ฐธ์กฐ ํ ์ด๋ธ์ ๊ธฐ๋ณธํค์ ์๋ ๊ฐ์ ์ ๋ ฅํ ์ ์๋ค.
'์๋ > ๊ตญ๋น์ง์' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[D+32] DB์ด์ํ์, ์ ๊ทํ (0) | 2022.11.07 |
---|---|
[D+31] JOIN, ๋ชจ๋ธ๋ง (0) | 2022.11.04 |
[D+29] DB ํ ์ด๋ธ ์์ฑ ๋ฐ ๋ฐ์ดํฐ ์ถ๊ฐ/์ญ์ , ์กฐํ, ์๋ธ์ฟผ๋ฆฌ (0) | 2022.11.02 |
[D+28] ๋ฐ์ดํฐ๋ฒ ์ด์ค Database (0) | 2022.11.01 |
[D+27] ์ฝ๋ฉ ๋ฐ์ด (0) | 2022.10.30 |
๋๊ธ