- Relational Database(๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค)๋ "Tables"์ ๋ชจ์
- Relational Model(๊ด๊ณํ ๋ชจ๋ธ)์์
- "Relation"์ด๋ผ๋ ์ฉ์ด๋ table์ ์ง์นญํ๋ ๋ฐ ์ฌ์ฉ
- "Tuple"์ด๋ผ๋ ์ฉ์ด๋ table์ row(ํ)๋ฅผ ์ง์นญํ๋ ๋ฐ ์ฌ์ฉ
- "Attribute(์์ฑ)"๋ผ๋ ์ฉ์ด๋ table์ column(์ด)์ ์ง์นญํ๋ ๋ฐ ์ฌ์ฉ
- A1โ,A2โ,...,Anโ์ attributes
- R=(A1โ,A2โ,...,Anโ)์ relation schema(๊ด๊ณ ์คํค๋ง)
- ์:
instructor = (ID, name, dept_name, salary) - schema R์ ๋ํด ์ ์๋ relation instance(๊ด๊ณ ์ธ์คํด์ค) r์ r(R)๋ก ํ๊ธฐ
- relation์ ํ์ฌ ๊ฐ๋ค์ table์ ์ํด ๋ช
์
- ๊ฐ attribute์ ํ์ฉ๋๋ ๊ฐ๋ค์ ์งํฉ์ ํด๋น attribute์ domain์ด๋ผ ์นญํจ
- Attribute ๊ฐ๋ค์ (๋ณดํต) atomic(์์์ฑ), ์ฆ ๋ถํด ๋ถ๊ฐ๋ฅํด์ผ ํจ
- Atomicity๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ domain ์์๋ฅผ ์ด๋ป๊ฒ ์ฌ์ฉํ๋๋์ ๋ฐ๋ผ ๋ฌ๋ผ์ง
- ์:
Phone number = country code + area code + local number- ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ๊ฐ ์ฝ๋/๋ฒํธ๋ฅผ ๊ฐ๋ณ์ ์ผ๋ก ์ฌ์ฉํ๋ฉด atomicํ์ง ์๊ฒ ๋จ
- ์ ์ฒด ์ ํ๋ฒํธ๋ฅผ ๊ทธ๋๋ก ์ฌ์ฉํ๋ฉด atomicํจ
- ํน์ ๊ฐ
null์ ๋ชจ๋ domain์ ๋ฉค๋ฒ - ๊ฐ์ด ์ ์ ์์์ ๋ํ๋
null ๊ฐ์ ๋ง์ ์ฐ์ฐ์ ์ ์์์ ๋ณต์ก์ฑ์ ์ผ๊ธฐํจ
- Relation์ tuple๋ค์ 'set'(์งํฉ)
- Tuple์ ์์๋ ๋ฌด๊ด (tuple์ ์์์ ์์๋ก ์ ์ฅ๋ ์ ์์)
- ์: ์์ ์๋ tuple์ ๊ฐ์ง
instructor relation
- Database schema(๋ฐ์ดํฐ๋ฒ ์ด์ค ์คํค๋ง):
- ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋
ผ๋ฆฌ์ ๊ตฌ์กฐ, relation schemas์ ์งํฉ
- Database instance(๋ฐ์ดํฐ๋ฒ ์ด์ค ์ธ์คํด์ค):
- ์ฃผ์ด์ง ํน์ ์์ ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค data snapshot
- ์: University database
- Database schema:
instructor(ID, name, dept_name, salary)department(dept_name, building, budget)course(course_id, title, dept_name, credits)section(course_id, sec_id, semester, year, building, room_number, time_slot_id)prereq(course_id, prereq_id)teaches(ID, course_id, sec_id, semester, year)student(ID, name, dept_name, tot_cred)adviser(s_id, i_id)takes(ID, course_id, sec_id, semester, year, grade)classroom(building, room_number, capacity)time_slot(time_slot_id, day, start_time, end_time)
- KโR (relation schema R์ attribute์ ๋ถ๋ถ์งํฉ)๋ผ๊ณ ๊ฐ์
- ๋ง์ฝ K์ ๊ฐ๋ค์ด ๊ฐ ๊ฐ๋ฅํ relation instance r(R)์ ๊ณ ์ ํ tuple์ ์๋ณํ๊ธฐ์ ์ถฉ๋ถํ๋ค๋ฉด, K๋ R์ superkey์.
- ์:
{ID}์ {ID, name}์ ๋ชจ๋ instructor์ superkey - Superkey K๋ K๊ฐ minimalํ ๋ candidate key(ํ๋ณด ํค)์
- ์:
{ID}๋ Instructor์ candidate key์ด์ง๋ง, {ID, name}์ ์๋ - Candidate keys ์ค ํ๋๊ฐ primary key(๊ธฐ๋ณธ ํค)๋ก ์ ํ๋จ
- Attribute ๊ฐ๋ค์ด ์ ๋ ๋๋ ๊ฑฐ์ ๋ณ๊ฒฝ๋์ง ์๋๋ก ์ ํ๋์ด์ผ ํจ
- ์ฌ๊ถ์ ์๋ฌธ ์ด๋ฆ์ ๋ฐ๊พธ๊ธฐ ์ด๋ ค์ด ์ด์ ?
- ํ๊ตญ์์๋ ๋ชจ๋ ๊ตญ๋ฏผ์ด ๊ณ ์ ID ๋ฒํธ(์ฃผ๋ฏผ๋ฑ๋ก๋ฒํธ)๋ฅผ ๊ฐ์ง๊ณ ์์ด ์ด๋ฆ์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ key๋ก ์ฌ์ฉ๋์ง ์์
- ๊ทธ๋ฌ๋ ์ธ๊ตญ์์๋ ์ข
์ข
(์ด๋ฆ, ์๋
์์ผ) ์์ผ๋ก ๊ฐ ๊ฐ์ธ์ ์๋ณ (์ฆ, ์ด๋ฌํ ์์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ key๋ก ์ฌ์ฉ๋จ)
- ์ฌ๊ถ์ ์๋ฌธ ์ด๋ฆ์ ๋ณ๊ฒฝํ๋ ๊ฒ์ ๋ค๋ฅธ ๋๋ผ์ ์ถ์
๊ตญ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ key ๊ฐ์ ๋ณ๊ฒฝํด์ผ ํ ์ ์๋ ๊ฒ์ด๋ฉฐ, ๋น์ฐํ ์ด๋ ์ฝ๊ฒ ๋ฐ์๋ค์ฌ์ง์ง ์์
- Foreign key constraint(์ธ๋ ํค ์ ์ฝ ์กฐ๊ฑด):
- Relation r1โ์ attribute(๋ค) A์์ relation r2โ์ primary key B๋ก
- ์ด๋ค database instance์์๋, r1โ์ ๊ฐ tuple์ ๋ํ A์ ๊ฐ์ r2โ์ ์ด๋ค tuple์ ๋ํ B์ ๊ฐ์ด๊ธฐ๋ ํด์ผ ํจ์ ๋ช
์
- ์ฆ, ํ relation์ ๊ฐ๋ค์ด ๋ค๋ฅธ relation์ ๋ํ๋์ผ ํจ
- Attribute(๋ค) A๋ r2โ๋ฅผ ์ฐธ์กฐํ๋ r1โ์ foreign key๋ผ ๋ถ๋ฆผ
- r1โ์ foreign key constraint์ referencing relation(์ฐธ์กฐํ๋ ๊ด๊ณ)์ด๋ผ ๋ถ๋ฆผ
- r2โ๋ referenced relation(์ฐธ์กฐ๋๋ ๊ด๊ณ)์ด๋ผ ๋ถ๋ฆผ
- ์:
instructor์ dept_name์ department๋ฅผ ์ฐธ์กฐํ๋ instructor์ foreign key
- Referential integrity constraint(์ฐธ์กฐ ๋ฌด๊ฒฐ์ฑ ์ ์ฝ ์กฐ๊ฑด):
- Referencing relation์ ์ด๋ค tuple์ ๋ช
์๋ attributes์ ๋ํ๋๋ ๊ฐ๋ค์ referenced relation์ ์ต์ ํ tuple์ ๋ช
์๋ attributes(๋ฐ๋์ primary key๊ฐ ์๋ ์ ์์)์๋ ๋ํ๋จ
- Foreign key constraint์ ์ผ๋ฐํ๋ ๋ฒ์
- ๋ฐ์ค ์น attributes๋ relation์ Primary-key
ID๋ student๋ฅผ ์ฐธ์กฐํ๋ takes์ foreign key- ๋ค ๊ฐ์ attributes๋ฅผ ๊ฐ์ง foreign key
- Procedural(์ ์ฐจ์ ) vs non-procedural(๋น์ ์ฐจ์ ) or declarative(์ ์ธ์ )
- "Pure" languages:
- Relational algebra(๊ด๊ณ ๋์) (procedural)
- Tuple relational calculus(ํํ ๊ด๊ณ ํด์) (non-procedural)
- Domain relational calculus(๋๋ฉ์ธ ๊ด๊ณ ํด์) (non-procedural)
- ์ 3๊ฐ์ pure languages๋ ๊ณ์ฐ ๋ฅ๋ ฅ ๋ฉด์์ ๋๋ฑ
- ์ด ์ฅ์์๋ relational algebra์ ์ง์คํ ๊ฒ์
- Turing-machine equivalent๊ฐ ์๋
- 6๊ฐ์ ๊ธฐ๋ณธ ์ฐ์ฐ์ผ๋ก ๊ตฌ์ฑ
- ํ๋ ๋๋ ๋ ๊ฐ์ relations๋ฅผ ์
๋ ฅ์ผ๋ก ๋ฐ๊ณ , ์๋ก์ด relation์ ๊ฒฐ๊ณผ๋ก ์์ฑํ๋ ์ฐ์ฐ๋ค์ ์งํฉ์ผ๋ก ๊ตฌ์ฑ๋ procedural language
- ์ฌ์ฏ ๊ฐ์ง ๊ธฐ๋ณธ ์ฐ์ฐ์:
- select: ฯ
- project: ฮ
- union: โช
- set difference: โ
- Cartesian product: ร
- rename: ฯ
- Select ์ฐ์ฐ์ ์ฃผ์ด์ง predicate(์ ์ด)๋ฅผ ๋ง์กฑํ๋ tuple๋ค์ ์ ํ
- ํ๊ธฐ๋ฒ: ฯpโ(r)
- p๋ selection predicate์ด๋ผ ๋ถ๋ฆผ
- ์:
instructor relation์์ Physics department์ ์ํ instructor๋ค์ tuple์ ์ ํ- Query: ฯdept_name="Physics"โ(instructor)
- Selection predicate์์ =,๎ =,>,โฅ,<,โค๋ฅผ ์ฌ์ฉํ ๋น๊ต ํ์ฉ
- ์ฌ๋ฌ predicate๋ฅผ connective(์ ์์ฌ) โง(and), โจ(or), ยฌ(not)๋ฅผ ์ฌ์ฉํ์ฌ ๋ ํฐ predicate๋ก ๊ฒฐํฉ ๊ฐ๋ฅ
- ์:
- ๊ธ์ฌ๊ฐ
$90,000 ์ด์์ธ Physics ์์ instructor ์ฐพ๊ธฐ: ฯdept_name="Physics"ย โงย salary>90000โ(instructor)
- Select predicate๋ ๋ attribute ๊ฐ์ ๋น๊ต๋ฅผ ํฌํจํ ์ ์์
- ์: ์ด๋ฆ์ด building name๊ณผ ๊ฐ์ ๋ชจ๋ department ์ฐพ๊ธฐ:
- ฯdept_name=buildingโ(department)
department=(dept_name, building, budget)
- ํน์ attributes๋ฅผ ์ ์ธํ๊ณ argument relation์ ๋ฐํํ๋ ๋จํญ ์ฐ์ฐ
- ํ๊ธฐ๋ฒ: ฮ A1โ,A2โ,A3โ,...,Akโโ(r)
- ์ฌ๊ธฐ์ A1โ,A2โ,...,Akโ๋ attribute ์ด๋ฆ์ด๊ณ r์ relation ์ด๋ฆ
- ๊ฒฐ๊ณผ๋ ๋์ด๋์ง ์์ column๋ค์ ์ง์์ ์ป์ด์ง๋ k๊ฐ์ column์ ๊ฐ์ง relation์ผ๋ก ์ ์๋จ
- Relation์ ์งํฉ์ด๋ฏ๋ก ์ค๋ณต๋ row๋ ๊ฒฐ๊ณผ์์ ์ ๊ฑฐ๋จ
- ์:
instructor์ dept_name attribute ์ ๊ฑฐ - Query: ฮ ID,ย name,ย salaryโ(instructor)
- Relational-algebra ์ฐ์ฐ์ ๊ฒฐ๊ณผ๋ relation์ด๋ฏ๋ก, relational-algebra ์ฐ์ฐ๋ค์ relational-algebra expression(๊ด๊ณ ๋์ ํํ์)์ผ๋ก ํจ๊ป ๊ตฌ์ฑ๋ ์ ์์
- Query ๊ณ ๋ ค:
- Physics department์ ๋ชจ๋ instructor ์ด๋ฆ ์ฐพ๊ธฐ: ฮ nameโ(ฯdept_name="Physics"โ(instructor))
- Projection ์ฐ์ฐ์ ์ธ์๋ก relation name์ ์ฃผ๋ ๋์ ์, relation์ผ๋ก evaluate๋๋ ํํ์์ ์ ๊ณต
- Cartesian-product ์ฐ์ฐ(ร๋ก ํ๊ธฐ)์ ์์์ ๋ relation์ ์ ๋ณด๋ฅผ ๊ฒฐํฉํ๊ฒ ํจ
- ์:
instructor์ teaches relations์ Cartesian product๋ ๋ค์๊ณผ ๊ฐ์ด ์์ฑ: instructor ร teaches instructor relation์ ๊ฐ tuple๊ณผ teaches relation์ ๊ฐ tuple์ ๊ฐ๋ฅํ ๋ชจ๋ ์์ ์กฐํฉ์ด ๊ฒฐ๊ณผ์ tuple์ด ๋จinstructor.ID๊ฐ ๋ relation ๋ชจ๋์ ๋ํ๋๋ฏ๋ก, attribute๊ฐ ์๋ ์ํ๋ relation์ ์ด๋ฆ์ ๋ถ์ฌ ์ด attribute๋ค์ ๊ตฌ๋ณ
- ์ด tuple์ ๊ด๋ จ ์๋ ๋ฐ์ดํฐ ํญ๋ชฉ๋ค์ ๊ฒฐํฉ
Srinivasan ๊ต์๋ 2017๋
๊ฐ์ ํ๊ธฐ์ PHY-101 ๊ณผ๋ชฉ์ ๊ฐ๋ฅด์น ์ ์ด ์์
- Cartesian-Product
instructor $\times$ teaches๋ instructor์ ๋ชจ๋ tuple๋ค์ teaches์ ๋ชจ๋ tuple๋ค๊ณผ ์ฐ๊ด์ํด - ๊ฒฐ๊ณผ๋ก ๋์ค๋ ๋๋ถ๋ถ์ row๋ ํน์ ๊ณผ๋ชฉ์ ๊ฐ๋ฅด์น์ง ์์ (์ฆ, ๋ฌด๊ดํ) instructor์ ๋ํ ์ ๋ณด๋ฅผ ๊ฐ์ง๊ฒ ๋จ
- Instructor์ ๊ทธ๋ค์ด ๊ฐ๋ฅด์น ๊ณผ๋ชฉ์ ์ง์ง ๊ด๋ จ๋ "
instructor ร teaches"์ tuple๋ค๋ง ์ป๊ธฐ ์ํด์๋:
ฯinstructor.idย =ย teaches.idโ(instructorรteaches)
- Instructor์ ๊ทธ๋ค์ด ๊ฐ๋ฅด์น ๊ณผ๋ชฉ์ ๊ด๋ จ๋ "
instructor ร teaches"์ tuple๋ค๋ง ์ป๊ฒ ๋จ - ฯinstructor.idย =ย teaches.idโ(instructorรteaches)์ ํด๋นํ๋ table
- ๊ฒฐ๊ณผ๋ ๋ฐ์ดํฐ ํญ๋ชฉ๋ค์ด ์๋ก ๊ด๋ จ๋ tuple๋ค๋ง ํฌํจ
- ์:
EE ํ๊ณผ์ Kim ๊ต์๋ 2017๋
๋ด ํ๊ธฐ์ EE-181 ๊ณผ๋ชฉ์ ๊ฐ๋ฅด์นจ
- ํ๊ธฐ๋ฒ: rโs
- r๊ณผ s๋ฅผ ๊ฐ๊ฐ schema R๊ณผ S ์์ relation์ด๋ผ ๊ฐ์ . ๊ฒฐ๊ณผ๋ schema RโชS ์์ relation์ด๋ฉฐ, r์ ๊ฐ tuple trโ๊ณผ s์ ๊ฐ tuple tsโ๋ฅผ ๊ณ ๋ คํ์ฌ ์ป์ด์ง
- ๋ง์ฝ trโ๊ณผ tsโ๊ฐ RโฉS์ ๊ฐ attribute์์ ๋์ผํ ๊ฐ์ ๊ฐ์ง๋ฉด, ๊ฒฐ๊ณผ์ tuple t๊ฐ ์ถ๊ฐ๋จ, ์ฌ๊ธฐ์
- t๋ r์์ trโ๊ณผ ๋์ผํ ๊ฐ์ ๊ฐ์ง
- t๋ s์์ tsโ์ ๋์ผํ ๊ฐ์ ๊ฐ์ง
- ์:
- R=(A,B,C,D)
- S=(E,B,D)
- ๊ฒฐ๊ณผ ์คํค๋ง =(A,B,C,D,E)
- rโs๋ ๋ค์๊ณผ ๊ฐ์ด ์ ์๋จ:
ฮ A,r.B,C,r.D,Eโ(ฯr.B=s.Bโงr.D=s.Dโ(rรs))
- Relations r, s์ ๊ทธ๋ค์ natural join rโs
(๊ทธ๋ฆผ ์๋ต)
- ฮ A1โ,...,Akโโ(r)โฉฮ A1โ,...,Akโโ(s)=ฮ A1โ,...,Akโโ(rโs)
- (A1โ,...,Akโ: ๊ณตํต attributes)
- (rโs)โt=rโ(sโt): associative(๊ฒฐํฉ๋ฒ์น) ์ฑ๋ฆฝ
- ๋ง์ฝ RโฉS=โ
์ด๋ฉด rโs=rรs (์ค์! rโs๎ =โ
)
- ๋ง์ฝ R=S ์ด๋ฉด, rโs=rโฉs
- Theta join ์ฐ์ฐ์ select ์ฐ์ฐ๊ณผ Cartesian-Product ์ฐ์ฐ์ ๋จ์ผ ์ฐ์ฐ์ผ๋ก ๊ฒฐํฉํ๊ฒ ํจ
- Relations r(R)๊ณผ s(S)์ ๋ํด์
- "theta(ฮธ)"๋ฅผ ์คํค๋ง RโชS์ attributes์ ๋ํ predicate๋ผ ๊ฐ์ . Join ์ฐ์ฐ rโฮธโs๋ ๋ค์๊ณผ ๊ฐ์ด ์ ์๋จ: rโฮธโs=ฯฮธโ(rรs)
- ๋ฐ๋ผ์ ฯinstructor.idย =ย teaches.idโ(instructorรteaches)๋ ๋ค์๊ณผ ๋๋ฑํ๊ฒ ์์ฑ๋ ์ ์์:
instructorโInstructor.idย =ย teaches.idโteaches
- Union(ํฉ์งํฉ) ์ฐ์ฐ์ ๋ relation์ ๊ฒฐํฉํ๊ฒ ํจ
- ํ๊ธฐ๋ฒ: rโชs
- rโชs๊ฐ ์ ํจํ๊ธฐ ์ํด:
- r,s๋ ๋์ผํ arity(๋์ผํ ์์ attributes)๋ฅผ ๊ฐ์ ธ์ผ ํจ
- Attribute domains๋ ํธํ ๊ฐ๋ฅํด์ผ ํจ (์: r์ ๋ ๋ฒ์งธ column์ s์ ๋ ๋ฒ์งธ column๊ณผ ๊ฐ์ ์ ํ์ ๊ฐ์ ๋ค๋ฃธ)
- ์:
- 2017๋
๊ฐ์ ํ๊ธฐ, ๋๋ 2018๋
๋ด ํ๊ธฐ, ๋๋ ๋ ํ๊ธฐ ๋ชจ๋์ ๊ฐ์ค๋ ๋ชจ๋ ๊ณผ๋ชฉ์ ID ์ฐพ๊ธฐ:
ฮ course_idโ(ฯsemester="Fall"โงyear=2017โ(section))โชฮ course_idโ(ฯsemester="Spring"โงyear=2018โ(section))
section relation์ schema: section (course_id, sec_id, semester, year, building, room_number, time_slot_id)
- Set-intersection(๊ต์งํฉ) ์ฐ์ฐ: ๋ ์
๋ ฅ relation ๋ชจ๋์ ์๋, ๊ณตํต๋ tuple์ ๋ฐํํจ
- ํ๊ธฐ๋ฒ: rโฉs
- ๊ฐ์ :
- r๊ณผ s๋ ๋์ผํ arity๋ฅผ ๊ฐ์ง
- r๊ณผ s์ attributes๋ ํธํ ๊ฐ๋ฅํจ
- ์: 2017๋
๊ฐ์๊ณผ 2018๋
๋ด ํ๊ธฐ ๋ชจ๋์ ๊ฐ์ค๋ ๋ชจ๋ ๊ณผ๋ชฉ์ ์งํฉ ์ฐพ๊ธฐ:
ฮ course_idโ(ฯsemester="Fall"โงyear=2017โ(section))โฉฮ course_idโ(ฯsemester="Spring"โงyear=2018โ(section))
- Set-difference(์ฐจ์งํฉ) ์ฐ์ฐ: ํ relation์๋ ์์ง๋ง ๋ค๋ฅธ relation์๋ ์๋ tuple์ ๋ฐํํจ
- ํ๊ธฐ๋ฒ: rโs
- Set differences๋ ํธํ ๊ฐ๋ฅํ relations ์ฌ์ด์์ ์ํ๋์ด์ผ ํจ
- r๊ณผ s๋ ๋์ผํ arity๋ฅผ ๊ฐ์ ธ์ผ ํจ
- r๊ณผ s์ attribute domains๋ ํธํ ๊ฐ๋ฅํด์ผ ํจ
- ์:
- 2017๋
๊ฐ์ ํ๊ธฐ์๋ ๊ฐ์ค๋์์ง๋ง 2018๋
๋ด ํ๊ธฐ์๋ ๊ฐ์ค๋์ง ์์ ๋ชจ๋ ๊ณผ๋ชฉ ์ฐพ๊ธฐ:
ฮ course_idโ(ฯsemester="Fall"โงyear=2017โ(section))โฮ course_idโ(ฯsemester="Spring"โงyear=2018โ(section))
- ๋๋ก๋ relational-algebra expression์ ์ผ๋ถ๋ฅผ ์์ relation ๋ณ์์ ํ ๋นํ์ฌ ์์ฑํ๋ ๊ฒ์ด ํธ๋ฆฌํจ
- Assignment(ํ ๋น) ์ฐ์ฐ์ โ๋ก ํ๊ธฐ๋๋ฉฐ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ํ ๋น์ฒ๋ผ ์๋
- ์: "Physics"์ "Music" department์ ๋ชจ๋ instructor ์ฐพ๊ธฐ
- Physics โฯdept_name="Physics"โ(instructor)
- Music โฯdept_name="Music"โ(instructor)
- Physics โช Music
- Assignment ์ฐ์ฐ ์๋ ๋์ผํ expression:
ฯdept_name="Physics"โ(instructor)โชฯdept_name="Music"โ(instructor)
- Assignment ์ฐ์ฐ์ ์ฌ์ฉํ๋ฉด query๋ฅผ ์ผ๋ จ์ assign๊ณผ ๊ทธ ๊ฒฐ๊ณผ๊ฐ query์ ๊ฒฐ๊ณผ๋ก ํ์๋๋ expression์ผ๋ก ๊ตฌ์ฑ๋ ์์ฐจ์ ํ๋ก๊ทธ๋จ์ผ๋ก ์์ฑํ ์ ์์
- Relational-algebra expressions์ ๊ฒฐ๊ณผ๋ ์ฐธ์กฐํ๋ ๋ฐ ์ฌ์ฉํ ์ ์๋ ์ด๋ฆ์ด ์์
- Rename(์ด๋ฆ ๋ณ๊ฒฝ) ์ฐ์ฐ์, ฯ๊ฐ ๊ทธ ๋ชฉ์ ์ผ๋ก ์ ๊ณต๋จ
- Expression: ฯxโ(E)๋ expression E์ ๊ฒฐ๊ณผ๋ฅผ x๋ผ๋ ์ด๋ฆ์ผ๋ก ๋ฐํ
- Attributes ์ด๋ฆ๋ ๋ค์๊ณผ ๊ฐ์ด ํ ๋น ๊ฐ๋ฅ: ฯx(A1โ,A2โ,..An)โ(E)
- Relational algebra์์ query๋ฅผ ์์ฑํ๋ ๋ฐฉ๋ฒ์ ํ๋ ์ด์ ์กด์ฌ
- ์: ๊ธ์ฌ๊ฐ
90,000๋ณด๋ค ๋ง์ Physics department์ instructor์ ๋ํ ์ ๋ณด ์ฐพ๊ธฐ - Query 1: ฯdept_name="Physics"โงsalary>90000โ(instructor)
- Query 2: ฯdept_name="Physics"โ(ฯsalary>90000โ(instructor))
- ์: Physics department์ instructor๊ฐ ๊ฐ๋ฅด์น๋ ๊ณผ๋ชฉ์ ๋ํ ์ ๋ณด ์ฐพ๊ธฐ
- Query 1: ฯdept_name="Physics"โ(instructorโinstructor.ID=teaches.IDโteaches)
- Query 2: (ฯdept_name="Physics"โ(instructor))โinstructor.ID=teaches.IDโteaches
- ๋ query๋ ๋์ผํ์ง๋ ์์ง๋ง, ๋๋ฑํจ
- ์ด๋ค ๋ฐ์ดํฐ๋ฒ ์ด์ค์์๋ ๋์ผํ ๊ฒฐ๊ณผ๋ฅผ ์ ๊ณตํ๊ธฐ ๋๋ฌธ.
- ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ด์ฉ์ ๋ค์ ์ฐ์ฐ๋ค์ ์ฌ์ฉํ์ฌ ์์ ๋ ์ ์์:
- Deletion
- Insertion
- Updating
- ์ด ๋ชจ๋ ์ฐ์ฐ์ assignment ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ์ฌ ํํ๋จ
- Delete(์ญ์ ) ์์ฒญ์ query์ ์ ์ฌํ๊ฒ ํํ๋์ง๋ง, ์ฌ์ฉ์์๊ฒ tuple์ ํ์ํ๋ ๋์ ์ ํ๋ tuple์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ ๊ฑฐ๋จ
- ์ ์ฒด tuple๋ง ์ญ์ ๊ฐ๋ฅ. ํน์ attributes์ ๊ฐ๋ง ์ญ์ ๋ถ๊ฐ
- Deletion์ relational algebra์์ ๋ค์๊ณผ ๊ฐ์ด ํํ๋จ: rโrโE
- ์ฌ๊ธฐ์ r์ relation์ด๊ณ E๋ relational algebra query
- ์:
- Perryridge ์ง์ ์ ๋ชจ๋ ๊ณ์ข ๊ธฐ๋ก ์ญ์ : accountโaccountโฯbranchโname="Perryridge"โ(account)
- ๊ธ์ก์ด
0์์ 50 ์ฌ์ด์ธ ๋ชจ๋ ๋์ถ ๊ธฐ๋ก ์ญ์ : loanโloanโฯamountโฅ0โงamountโค50โ(loan)
- Relation์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์
ํ๊ธฐ ์ํด:
- ์ฝ์
ํ tuple์ ๋ช
์ํ๊ฑฐ๋
- ๊ฒฐ๊ณผ๊ฐ ์ฝ์
๋ tuple๋ค์ ์งํฉ์ธ query๋ฅผ ์์ฑ
- Relational algebra์์ insertion์ ๋ค์๊ณผ ๊ฐ์ด ํํ๋จ: rโrโชE
- ์ฌ๊ธฐ์ r์ relation์ด๊ณ E๋ relational algebra expression
- ๋จ์ผ tuple์ ์ฝ์
์ E๋ฅผ ํ๋์ tuple์ ํฌํจํ๋ ์์ relation์ผ๋ก ํ์ฌ ํํ๋จ
- ์:
Smith๊ฐ Perryridge ์ง์ ์ A-973 ๊ณ์ข์ $1200๋ฅผ ๊ฐ์ง๊ณ ์๋ค๋ ์ ๋ณด๋ฅผ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฝ์
- accountโaccountโช("Perryridge",ย A-973,ย 1200)
- depositorโdepositorโช("Smith",ย A-973)
- Tuple์ ๋ชจ๋ ๊ฐ์ ๋ณ๊ฒฝํ์ง ์๊ณ tuple์ ๊ฐ์ ๋ณ๊ฒฝํ๋ ๋ฉ์ปค๋์ฆ
- ์ด ์์
์ ์ํํ๊ธฐ ์ํด generalized projection operator(์ผ๋ฐํ๋ ํ๋ก์ ์
์ฐ์ฐ์)๋ฅผ ์ฌ์ฉ
- rโฮ F1โ,F2โ,...,Fnโโ(r)
- ๊ฐ Fiโ๋,
- i๋ฒ์งธ attribute๊ฐ ์
๋ฐ์ดํธ๋์ง ์์ผ๋ฉด r์ i๋ฒ์งธ attribute์ด๊ฑฐ๋,
- ๋ง์ฝ attribute๊ฐ ์
๋ฐ์ดํธ๋์ด์ผ ํ๋ค๋ฉด, Fiโ๋ ์์์ r์ attributes๋ง์ ํฌํจํ๋ expression์ผ๋ก, attribute์ ์๋ก์ด ๊ฐ์ ์ ๊ณต
- ์:
- ๋ชจ๋ ์์ก์ 5% ์ฆ๊ฐ์์ผ ์ด์ ์ง๊ธํ๊ธฐ
accountโฮ AN,ย BN,ย BALย -ย 1.05โ(account)
- ์ฌ๊ธฐ์
AN, BN, BAL์ ๊ฐ๊ฐ account-number, branch-name, balance๋ฅผ ์๋ฏธ