• Mindscape ๐Ÿ”ฅ
    • Playlist ๐ŸŽง
  • ๐Ÿค– Artifical Intelligence

    • 1. Basics; Linear Algebra
    • 2. Basics; Linear Algebra (2), Search (1)
    • 3. Search (2)
    • 4. Knowledge and Logic (1)
    • 5. Knowledge and Logic (2)
    • 6. Probability
    • 7. Information Theory
    • 8. Probabilitc Reasoning (2)
    • 9. Probabilitc Reasoning (3)
    • 10. Machine Learning (1)
    • 11. Machine Learning (2)
    • 12. Machine Learning (3)
    • 13. Linear Models
    • 14. Other Classic ML Models (1)
    • 15. Other Classic ML Models (2)
  • ๐Ÿ”’ Computer Security

    • 01. Overview
    • 02. ์ •๋ณด๋ณด์•ˆ์ •์ฑ… ๋ฐ ๋ฒ•๊ทœ
    • 03. Cryptographic Tools
    • 04. User Authentication
    • 05. Access Control
    • 06. Database Security
    • 07. Malicious Software
    • 08. Firmware Analysis
  • ๐Ÿ—„๏ธ Database System

    • 1. Introduction
    • 2. Relational Model
    • 3. SQL
    • 6. E-R Model
    • 7. Relational Database Design (1)
    • 7. Relational Database Design (2)
    • 13. Data Storage Structures
    • 14. Indexing
    • 15. Query Processing
  • ๐Ÿ“ Software Engineering

    • 2. Introduction to Software Engineering
    • 3. Process
    • 4. Process Models
    • 5. Agile
    • 6. Requirements
    • 7. Requirements Elicitation and Documentation
    • 8. Architecture
    • 9. Unified Modelling Language
    • 10. Object-Oriented Analysis
    • Object-Oriented Design
  • ๐Ÿง  Algorithm

    • Python ์‹œ๊ฐ„ ์ดˆ๊ณผ ๋ฐฉ์ง€๋ฅผ ์œ„ํ•œ ํŒ
    • C++ std::vector ์‚ฌ์šฉ๋ฒ• ์ •๋ฆฌ
    • Vim ์‚ฌ์šฉ ๋งค๋‰ด์–ผ
    • 1018๋ฒˆ: ์ฒด์ŠคํŒ ๋‹ค์‹œ ์น ํ•˜๊ธฐ
    • 1966๋ฒˆ: ํ”„๋ฆฐํ„ฐ ํ

2. Relational Model

Relational Database and Relational Model

  • Relational Database(๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค)๋Š” "Tables"์˜ ๋ชจ์Œ
  • Relational Model(๊ด€๊ณ„ํ˜• ๋ชจ๋ธ)์—์„œ
    • "Relation"์ด๋ผ๋Š” ์šฉ์–ด๋Š” table์„ ์ง€์นญํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ
    • "Tuple"์ด๋ผ๋Š” ์šฉ์–ด๋Š” table์˜ row(ํ–‰)๋ฅผ ์ง€์นญํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ
    • "Attribute(์†์„ฑ)"๋ผ๋Š” ์šฉ์–ด๋Š” table์˜ column(์—ด)์„ ์ง€์นญํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ

Relation Schema and Instance

  • A1,A2,...,AnA_1, A_2, ..., A_nA1โ€‹,A2โ€‹,...,Anโ€‹์€ attributes
  • R=(A1,A2,...,An)R = (A_1, A_2, ..., A_n)R=(A1โ€‹,A2โ€‹,...,Anโ€‹)์€ relation schema(๊ด€๊ณ„ ์Šคํ‚ค๋งˆ)
  • ์˜ˆ: instructor = (ID, name, dept_name, salary)
  • schema RRR์— ๋Œ€ํ•ด ์ •์˜๋œ relation instance(๊ด€๊ณ„ ์ธ์Šคํ„ด์Šค) rrr์€ r(R)r(R)r(R)๋กœ ํ‘œ๊ธฐ
  • relation์˜ ํ˜„์žฌ ๊ฐ’๋“ค์€ table์— ์˜ํ•ด ๋ช…์‹œ

Attributes

  • ๊ฐ attribute์— ํ—ˆ์šฉ๋˜๋Š” ๊ฐ’๋“ค์˜ ์ง‘ํ•ฉ์„ ํ•ด๋‹น attribute์˜ domain์ด๋ผ ์นญํ•จ
  • Attribute ๊ฐ’๋“ค์€ (๋ณดํ†ต) atomic(์›์ž์„ฑ), ์ฆ‰ ๋ถ„ํ•ด ๋ถˆ๊ฐ€๋Šฅํ•ด์•ผ ํ•จ
  • Atomicity๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ domain ์š”์†Œ๋ฅผ ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ•˜๋А๋ƒ์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง
  • ์˜ˆ: Phone number = country code + area code + local number
    • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๊ฐ ์ฝ”๋“œ/๋ฒˆํ˜ธ๋ฅผ ๊ฐœ๋ณ„์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋ฉด atomicํ•˜์ง€ ์•Š๊ฒŒ ๋จ
    • ์ „์ฒด ์ „ํ™”๋ฒˆํ˜ธ๋ฅผ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•˜๋ฉด atomicํ•จ
  • ํŠน์ˆ˜ ๊ฐ’ null์€ ๋ชจ๋“  domain์˜ ๋ฉค๋ฒ„
    • ๊ฐ’์ด ์•Œ ์ˆ˜ ์—†์Œ์„ ๋‚˜ํƒ€๋ƒ„
    • null ๊ฐ’์€ ๋งŽ์€ ์—ฐ์‚ฐ์˜ ์ •์˜์—์„œ ๋ณต์žก์„ฑ์„ ์•ผ๊ธฐํ•จ

Relations are Unordered

  • Relation์€ tuple๋“ค์˜ 'set'(์ง‘ํ•ฉ)
  • Tuple์˜ ์ˆœ์„œ๋Š” ๋ฌด๊ด€ (tuple์€ ์ž„์˜์˜ ์ˆœ์„œ๋กœ ์ €์žฅ๋  ์ˆ˜ ์žˆ์Œ)
  • ์˜ˆ: ์ˆœ์„œ ์—†๋Š” tuple์„ ๊ฐ€์ง„ instructor relation

Database Schema

  • 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)

Keys: Superkey, Candidate Key and Primary Key

  • KโІRK \subseteq RKโІR (relation schema RRR์˜ attribute์˜ ๋ถ€๋ถ„์ง‘ํ•ฉ)๋ผ๊ณ  ๊ฐ€์ •
  • ๋งŒ์•ฝ KKK์˜ ๊ฐ’๋“ค์ด ๊ฐ ๊ฐ€๋Šฅํ•œ relation instance r(R)r(R)r(R)์˜ ๊ณ ์œ ํ•œ tuple์„ ์‹๋ณ„ํ•˜๊ธฐ์— ์ถฉ๋ถ„ํ•˜๋‹ค๋ฉด, KKK๋Š” RRR์˜ superkey์ž„.
  • ์˜ˆ: {ID}์™€ {ID, name}์€ ๋ชจ๋‘ instructor์˜ superkey
  • Superkey KKK๋Š” KKK๊ฐ€ minimalํ•  ๋•Œ candidate key(ํ›„๋ณด ํ‚ค)์ž„
  • ์˜ˆ: {ID}๋Š” Instructor์˜ candidate key์ด์ง€๋งŒ, {ID, name}์€ ์•„๋‹˜
  • Candidate keys ์ค‘ ํ•˜๋‚˜๊ฐ€ primary key(๊ธฐ๋ณธ ํ‚ค)๋กœ ์„ ํƒ๋จ
  • Attribute ๊ฐ’๋“ค์ด ์ ˆ๋Œ€ ๋˜๋Š” ๊ฑฐ์˜ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š๋„๋ก ์„ ํƒ๋˜์–ด์•ผ ํ•จ
  • ์—ฌ๊ถŒ์˜ ์˜๋ฌธ ์ด๋ฆ„์„ ๋ฐ”๊พธ๊ธฐ ์–ด๋ ค์šด ์ด์œ ?
    • ํ•œ๊ตญ์—์„œ๋Š” ๋ชจ๋“  ๊ตญ๋ฏผ์ด ๊ณ ์œ  ID ๋ฒˆํ˜ธ(์ฃผ๋ฏผ๋“ฑ๋ก๋ฒˆํ˜ธ)๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์–ด ์ด๋ฆ„์ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ key๋กœ ์‚ฌ์šฉ๋˜์ง€ ์•Š์Œ
    • ๊ทธ๋Ÿฌ๋‚˜ ์™ธ๊ตญ์—์„œ๋Š” ์ข…์ข… (์ด๋ฆ„, ์ƒ๋…„์›”์ผ) ์Œ์œผ๋กœ ๊ฐ ๊ฐœ์ธ์„ ์‹๋ณ„ (์ฆ‰, ์ด๋Ÿฌํ•œ ์Œ์ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ key๋กœ ์‚ฌ์šฉ๋จ)
    • ์—ฌ๊ถŒ์˜ ์˜๋ฌธ ์ด๋ฆ„์„ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์€ ๋‹ค๋ฅธ ๋‚˜๋ผ์˜ ์ถœ์ž…๊ตญ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ key ๊ฐ’์„ ๋ณ€๊ฒฝํ•ด์•ผ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด๋ฉฐ, ๋‹น์—ฐํžˆ ์ด๋Š” ์‰ฝ๊ฒŒ ๋ฐ›์•„๋“ค์—ฌ์ง€์ง€ ์•Š์Œ

Keys: Foreign Key

  • Foreign key constraint(์™ธ๋ž˜ ํ‚ค ์ œ์•ฝ ์กฐ๊ฑด):
    • Relation r1r_1r1โ€‹์˜ attribute(๋“ค) AAA์—์„œ relation r2r_2r2โ€‹์˜ primary key BBB๋กœ
    • ์–ด๋–ค database instance์—์„œ๋„, r1r_1r1โ€‹์˜ ๊ฐ tuple์— ๋Œ€ํ•œ AAA์˜ ๊ฐ’์€ r2r_2r2โ€‹์˜ ์–ด๋–ค tuple์— ๋Œ€ํ•œ BBB์˜ ๊ฐ’์ด๊ธฐ๋„ ํ•ด์•ผ ํ•จ์„ ๋ช…์‹œ
    • ์ฆ‰, ํ•œ relation์˜ ๊ฐ’๋“ค์ด ๋‹ค๋ฅธ relation์— ๋‚˜ํƒ€๋‚˜์•ผ ํ•จ
  • Attribute(๋“ค) AAA๋Š” r2r_2r2โ€‹๋ฅผ ์ฐธ์กฐํ•˜๋Š” r1r_1r1โ€‹์˜ foreign key๋ผ ๋ถˆ๋ฆผ
  • r1r_1r1โ€‹์€ foreign key constraint์˜ referencing relation(์ฐธ์กฐํ•˜๋Š” ๊ด€๊ณ„)์ด๋ผ ๋ถˆ๋ฆผ
  • r2r_2r2โ€‹๋Š” 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์˜ ์ผ๋ฐ˜ํ™”๋œ ๋ฒ„์ „

Schema Diagram (for University Database)

  • ๋ฐ‘์ค„ ์นœ attributes๋Š” relation์˜ Primary-key
  • ID๋Š” student๋ฅผ ์ฐธ์กฐํ•˜๋Š” takes์˜ foreign key
  • ๋„ค ๊ฐœ์˜ attributes๋ฅผ ๊ฐ€์ง„ foreign key

Relational Query Languages

  • 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๊ฐœ์˜ ๊ธฐ๋ณธ ์—ฐ์‚ฐ์œผ๋กœ ๊ตฌ์„ฑ

Relational Algebra

  • ํ•˜๋‚˜ ๋˜๋Š” ๋‘ ๊ฐœ์˜ relations๋ฅผ ์ž…๋ ฅ์œผ๋กœ ๋ฐ›๊ณ , ์ƒˆ๋กœ์šด relation์„ ๊ฒฐ๊ณผ๋กœ ์ƒ์„ฑํ•˜๋Š” ์—ฐ์‚ฐ๋“ค์˜ ์ง‘ํ•ฉ์œผ๋กœ ๊ตฌ์„ฑ๋œ procedural language
  • ์—ฌ์„ฏ ๊ฐ€์ง€ ๊ธฐ๋ณธ ์—ฐ์‚ฐ์ž:
    • select: ฯƒ\sigmaฯƒ
    • project: ฮ \Piฮ 
    • union: โˆช\cupโˆช
    • set difference: โˆ’-โˆ’
    • Cartesian product: ร—\timesร—
    • rename: ฯ\rhoฯ

Select Operation

  • Select ์—ฐ์‚ฐ์€ ์ฃผ์–ด์ง„ predicate(์ˆ ์–ด)๋ฅผ ๋งŒ์กฑํ•˜๋Š” tuple๋“ค์„ ์„ ํƒ
  • ํ‘œ๊ธฐ๋ฒ•: ฯƒp(r)\sigma_p(r)ฯƒpโ€‹(r)
  • ppp๋Š” selection predicate์ด๋ผ ๋ถˆ๋ฆผ
  • ์˜ˆ:
    • instructor relation์—์„œ Physics department์— ์†ํ•œ instructor๋“ค์˜ tuple์„ ์„ ํƒ
    • Query: ฯƒdept_name="Physics"(instructor)\sigma_\text{dept\_name="Physics"} (\text{instructor})ฯƒdept_name="Physics"โ€‹(instructor)
  • Selection predicate์—์„œ =,โ‰ ,>,โ‰ฅ,<,โ‰ค=, \neq, >, \geq, <, \leq=,๎€ =,>,โ‰ฅ,<,โ‰ค๋ฅผ ์‚ฌ์šฉํ•œ ๋น„๊ต ํ—ˆ์šฉ
  • ์—ฌ๋Ÿฌ predicate๋ฅผ connective(์ ‘์†์‚ฌ) โˆง\landโˆง(and), โˆจ\lorโˆจ(or), ยฌ\negยฌ(not)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋” ํฐ predicate๋กœ ๊ฒฐํ•ฉ ๊ฐ€๋Šฅ
  • ์˜ˆ:
    • ๊ธ‰์—ฌ๊ฐ€ $90,000 ์ด์ƒ์ธ Physics ์†Œ์† instructor ์ฐพ๊ธฐ: ฯƒdept_name="Physics"ย โˆงย salary>90000(instructor)\sigma_{\text{dept\_name="Physics"} ~\land ~\text{salary} > 90000}(\text{instructor})ฯƒdept_name="Physics"ย โˆงย salary>90000โ€‹(instructor)
  • Select predicate๋Š” ๋‘ attribute ๊ฐ„์˜ ๋น„๊ต๋ฅผ ํฌํ•จํ•  ์ˆ˜ ์žˆ์Œ
  • ์˜ˆ: ์ด๋ฆ„์ด building name๊ณผ ๊ฐ™์€ ๋ชจ๋“  department ์ฐพ๊ธฐ:
    • ฯƒdept_name=building(department)\sigma_{\text{dept\_name=building}} (\text{department})ฯƒdept_name=buildingโ€‹(department)
    • department=(dept_name, building, budget)

Project Operation

  • ํŠน์ • attributes๋ฅผ ์ œ์™ธํ•˜๊ณ  argument relation์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋‹จํ•ญ ์—ฐ์‚ฐ
  • ํ‘œ๊ธฐ๋ฒ•: ฮ A1,A2,A3,...,Ak(r)\Pi_{A_1, A_2, A_3, ..., A_k}(r)ฮ A1โ€‹,A2โ€‹,A3โ€‹,...,Akโ€‹โ€‹(r)
    • ์—ฌ๊ธฐ์„œ A1,A2,...,AkA_1, A_2, ..., A_kA1โ€‹,A2โ€‹,...,Akโ€‹๋Š” attribute ์ด๋ฆ„์ด๊ณ  rrr์€ relation ์ด๋ฆ„
  • ๊ฒฐ๊ณผ๋Š” ๋‚˜์—ด๋˜์ง€ ์•Š์€ column๋“ค์„ ์ง€์›Œ์„œ ์–ป์–ด์ง€๋Š” k๊ฐœ์˜ column์„ ๊ฐ€์ง„ relation์œผ๋กœ ์ •์˜๋จ
  • Relation์€ ์ง‘ํ•ฉ์ด๋ฏ€๋กœ ์ค‘๋ณต๋œ row๋Š” ๊ฒฐ๊ณผ์—์„œ ์ œ๊ฑฐ๋จ

Project Operation Example

  • ์˜ˆ: instructor์˜ dept_name attribute ์ œ๊ฑฐ
  • Query: ฮ ID,ย name,ย salary(instructor)\Pi_\text{ID, name, salary}(\text{instructor})ฮ ID,ย name,ย salaryโ€‹(instructor)

Composition of Relational Operations

  • Relational-algebra ์—ฐ์‚ฐ์˜ ๊ฒฐ๊ณผ๋Š” relation์ด๋ฏ€๋กœ, relational-algebra ์—ฐ์‚ฐ๋“ค์€ relational-algebra expression(๊ด€๊ณ„ ๋Œ€์ˆ˜ ํ‘œํ˜„์‹)์œผ๋กœ ํ•จ๊ป˜ ๊ตฌ์„ฑ๋  ์ˆ˜ ์žˆ์Œ
  • Query ๊ณ ๋ ค:
    • Physics department์˜ ๋ชจ๋“  instructor ์ด๋ฆ„ ์ฐพ๊ธฐ: ฮ name(ฯƒdept_name="Physics"(instructor))\Pi_{name}(\sigma_\text{dept\_name="Physics"}(\text{instructor}))ฮ nameโ€‹(ฯƒdept_name="Physics"โ€‹(instructor))
  • Projection ์—ฐ์‚ฐ์˜ ์ธ์ž๋กœ relation name์„ ์ฃผ๋Š” ๋Œ€์‹ ์—, relation์œผ๋กœ evaluate๋˜๋Š” ํ‘œํ˜„์‹์„ ์ œ๊ณต

Cartesian-Product Operation

  • Cartesian-product ์—ฐ์‚ฐ(ร—\timesร—๋กœ ํ‘œ๊ธฐ)์€ ์ž„์˜์˜ ๋‘ relation์˜ ์ •๋ณด๋ฅผ ๊ฒฐํ•ฉํ•˜๊ฒŒ ํ•จ
  • ์˜ˆ: instructor์™€ teaches relations์˜ Cartesian product๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž‘์„ฑ: instructor ร—\timesร— teaches
  • instructor relation์˜ ๊ฐ tuple๊ณผ teaches relation์˜ ๊ฐ tuple์˜ ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ์Œ์˜ ์กฐํ•ฉ์ด ๊ฒฐ๊ณผ์˜ tuple์ด ๋จ
  • instructor.ID๊ฐ€ ๋‘ relation ๋ชจ๋‘์— ๋‚˜ํƒ€๋‚˜๋ฏ€๋กœ, attribute๊ฐ€ ์›๋ž˜ ์†ํ–ˆ๋˜ relation์˜ ์ด๋ฆ„์„ ๋ถ™์—ฌ ์ด attribute๋“ค์„ ๊ตฌ๋ณ„
    • instructor.ID
    • teaches.ID

The instructor ร—\timesร— teaches table

  • ์ด tuple์€ ๊ด€๋ จ ์—†๋Š” ๋ฐ์ดํ„ฐ ํ•ญ๋ชฉ๋“ค์„ ๊ฒฐํ•ฉ
  • Srinivasan ๊ต์ˆ˜๋Š” 2017๋…„ ๊ฐ€์„ ํ•™๊ธฐ์— PHY-101 ๊ณผ๋ชฉ์„ ๊ฐ€๋ฅด์นœ ์ ์ด ์—†์Œ

Join Operation

  • Cartesian-Product instructor $\times$ teaches๋Š” instructor์˜ ๋ชจ๋“  tuple๋“ค์„ teaches์˜ ๋ชจ๋“  tuple๋“ค๊ณผ ์—ฐ๊ด€์‹œํ‚ด
  • ๊ฒฐ๊ณผ๋กœ ๋‚˜์˜ค๋Š” ๋Œ€๋ถ€๋ถ„์˜ row๋Š” ํŠน์ • ๊ณผ๋ชฉ์„ ๊ฐ€๋ฅด์น˜์ง€ ์•Š์€ (์ฆ‰, ๋ฌด๊ด€ํ•œ) instructor์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ๊ฐ€์ง€๊ฒŒ ๋จ
  • Instructor์™€ ๊ทธ๋“ค์ด ๊ฐ€๋ฅด์นœ ๊ณผ๋ชฉ์— ์ง„์งœ ๊ด€๋ จ๋œ "instructor ร—\timesร— teaches"์˜ tuple๋“ค๋งŒ ์–ป๊ธฐ ์œ„ํ•ด์„œ๋Š”:

ฯƒinstructor.idย =ย teaches.id(instructorร—teaches)\sigma_\text{instructor.id = teaches.id}(\text{instructor} \times \text{teaches}) ฯƒinstructor.idย =ย teaches.idโ€‹(instructorร—teaches)

  • Instructor์™€ ๊ทธ๋“ค์ด ๊ฐ€๋ฅด์นœ ๊ณผ๋ชฉ์— ๊ด€๋ จ๋œ "instructor ร—\timesร— teaches"์˜ tuple๋“ค๋งŒ ์–ป๊ฒŒ ๋จ
  • ฯƒinstructor.idย =ย teaches.id(instructorร—teaches)\sigma_\text{instructor.id = teaches.id}(\text{instructor} \times \text{teaches})ฯƒinstructor.idย =ย teaches.idโ€‹(instructorร—teaches)์— ํ•ด๋‹นํ•˜๋Š” table
  • ๊ฒฐ๊ณผ๋Š” ๋ฐ์ดํ„ฐ ํ•ญ๋ชฉ๋“ค์ด ์„œ๋กœ ๊ด€๋ จ๋œ tuple๋“ค๋งŒ ํฌํ•จ
  • ์˜ˆ: EE ํ•™๊ณผ์˜ Kim ๊ต์ˆ˜๋Š” 2017๋…„ ๋ด„ ํ•™๊ธฐ์— EE-181 ๊ณผ๋ชฉ์„ ๊ฐ€๋ฅด์นจ

Natural-Join Operation

  • ํ‘œ๊ธฐ๋ฒ•: rโ‹ˆsr \bowtie srโ‹ˆs
  • rrr๊ณผ sss๋ฅผ ๊ฐ๊ฐ schema RRR๊ณผ SSS ์œ„์˜ relation์ด๋ผ ๊ฐ€์ •. ๊ฒฐ๊ณผ๋Š” schema RโˆชSR \cup SRโˆชS ์œ„์˜ relation์ด๋ฉฐ, rrr์˜ ๊ฐ tuple trt_rtrโ€‹๊ณผ sss์˜ ๊ฐ tuple tst_stsโ€‹๋ฅผ ๊ณ ๋ คํ•˜์—ฌ ์–ป์–ด์ง
  • ๋งŒ์•ฝ trt_rtrโ€‹๊ณผ tst_stsโ€‹๊ฐ€ RโˆฉSR \cap SRโˆฉS์˜ ๊ฐ attribute์—์„œ ๋™์ผํ•œ ๊ฐ’์„ ๊ฐ€์ง€๋ฉด, ๊ฒฐ๊ณผ์— tuple ttt๊ฐ€ ์ถ”๊ฐ€๋จ, ์—ฌ๊ธฐ์„œ
    • ttt๋Š” rrr์—์„œ trt_rtrโ€‹๊ณผ ๋™์ผํ•œ ๊ฐ’์„ ๊ฐ€์ง
    • ttt๋Š” sss์—์„œ tst_stsโ€‹์™€ ๋™์ผํ•œ ๊ฐ’์„ ๊ฐ€์ง
  • ์˜ˆ:
    • R=(A,B,C,D)R= (A, B, C, D)R=(A,B,C,D)
    • S=(E,B,D)S= (E, B, D)S=(E,B,D)
    • ๊ฒฐ๊ณผ ์Šคํ‚ค๋งˆ =(A,B,C,D,E)= (A, B, C, D, E)=(A,B,C,D,E)
    • rโ‹ˆsr \bowtie srโ‹ˆs๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ •์˜๋จ:

ฮ A,r.B,C,r.D,E(ฯƒr.B=s.Bโˆงr.D=s.D(rร—s))\Pi_{A, r.B, C, r.D, E}(\sigma_{r.B = s.B \land r.D = s.D}(r \times s)) ฮ A,r.B,C,r.D,Eโ€‹(ฯƒr.B=s.Bโˆงr.D=s.Dโ€‹(rร—s))

Natural Join Operation โ€“ Example

  • Relations rrr, sss์™€ ๊ทธ๋“ค์˜ natural join rโ‹ˆsr \bowtie srโ‹ˆs
    (๊ทธ๋ฆผ ์ƒ๋žต)

Natural Join์˜ ์†์„ฑ

  • ฮ A1,...,Ak(r)โˆฉฮ A1,...,Ak(s)=ฮ A1,...,Ak(rโ‹ˆs)\Pi_{A_1, ..., A_k}(r) \cap \Pi_{A_1, ..., A_k}(s) = \Pi_{A_1, ..., A_k}(r \bowtie s)ฮ A1โ€‹,...,Akโ€‹โ€‹(r)โˆฉฮ A1โ€‹,...,Akโ€‹โ€‹(s)=ฮ A1โ€‹,...,Akโ€‹โ€‹(rโ‹ˆs)
    • (A1,...,AkA_1, ..., A_kA1โ€‹,...,Akโ€‹: ๊ณตํ†ต attributes)
  • (rโ‹ˆs)โ‹ˆt=rโ‹ˆ(sโ‹ˆt)(r \bowtie s) \bowtie t = r \bowtie (s \bowtie t)(rโ‹ˆs)โ‹ˆt=rโ‹ˆ(sโ‹ˆt): associative(๊ฒฐํ•ฉ๋ฒ•์น™) ์„ฑ๋ฆฝ
  • ๋งŒ์•ฝ RโˆฉS=โˆ…R \cap S = \emptysetRโˆฉS=โˆ… ์ด๋ฉด rโ‹ˆs=rร—sr \bowtie s = r \times srโ‹ˆs=rร—s (์ค‘์š”! rโ‹ˆsโ‰ โˆ…r \bowtie s \neq \emptysetrโ‹ˆs๎€ =โˆ…)
  • ๋งŒ์•ฝ R=SR = SR=S ์ด๋ฉด, rโ‹ˆs=rโˆฉsr \bowtie s = r \cap srโ‹ˆs=rโˆฉs

Theta Join

  • Theta join ์—ฐ์‚ฐ์€ select ์—ฐ์‚ฐ๊ณผ Cartesian-Product ์—ฐ์‚ฐ์„ ๋‹จ์ผ ์—ฐ์‚ฐ์œผ๋กœ ๊ฒฐํ•ฉํ•˜๊ฒŒ ํ•จ
  • Relations r(R)r(R)r(R)๊ณผ s(S)s(S)s(S)์— ๋Œ€ํ•ด์„œ
  • "theta(ฮธ\thetaฮธ)"๋ฅผ ์Šคํ‚ค๋งˆ RโˆชSR \cup SRโˆชS์˜ attributes์— ๋Œ€ํ•œ predicate๋ผ ๊ฐ€์ •. Join ์—ฐ์‚ฐ rโ‹ˆฮธsr \bowtie_\theta srโ‹ˆฮธโ€‹s๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ •์˜๋จ: rโ‹ˆฮธs=ฯƒฮธ(rร—s)r \bowtie_\theta s = \sigma_\theta(r \times s)rโ‹ˆฮธโ€‹s=ฯƒฮธโ€‹(rร—s)
  • ๋”ฐ๋ผ์„œ ฯƒinstructor.idย =ย teaches.id(instructorร—teaches)\sigma_\text{instructor.id = teaches.id}(\text{instructor} \times \text{teaches})ฯƒinstructor.idย =ย teaches.idโ€‹(instructorร—teaches)๋Š” ๋‹ค์Œ๊ณผ ๋™๋“ฑํ•˜๊ฒŒ ์ž‘์„ฑ๋  ์ˆ˜ ์žˆ์Œ:

instructorโ‹ˆInstructor.idย =ย teaches.idteaches\text{instructor} \bowtie_\text{Instructor.id = teaches.id} \text{teaches} instructorโ‹ˆInstructor.idย =ย teaches.idโ€‹teaches

Union Operation

  • Union(ํ•ฉ์ง‘ํ•ฉ) ์—ฐ์‚ฐ์€ ๋‘ relation์„ ๊ฒฐํ•ฉํ•˜๊ฒŒ ํ•จ
  • ํ‘œ๊ธฐ๋ฒ•: rโˆชsr \cup srโˆชs
  • rโˆชsr \cup srโˆชs๊ฐ€ ์œ ํšจํ•˜๊ธฐ ์œ„ํ•ด:
    1. r,sr, sr,s๋Š” ๋™์ผํ•œ arity(๋™์ผํ•œ ์ˆ˜์˜ attributes)๋ฅผ ๊ฐ€์ ธ์•ผ ํ•จ
    2. Attribute domains๋Š” ํ˜ธํ™˜ ๊ฐ€๋Šฅํ•ด์•ผ ํ•จ (์˜ˆ: rrr์˜ ๋‘ ๋ฒˆ์งธ column์€ sss์˜ ๋‘ ๋ฒˆ์งธ column๊ณผ ๊ฐ™์€ ์œ ํ˜•์˜ ๊ฐ’์„ ๋‹ค๋ฃธ)
  • ์˜ˆ:
    • 2017๋…„ ๊ฐ€์„ ํ•™๊ธฐ, ๋˜๋Š” 2018๋…„ ๋ด„ ํ•™๊ธฐ, ๋˜๋Š” ๋‘ ํ•™๊ธฐ ๋ชจ๋‘์— ๊ฐœ์„ค๋œ ๋ชจ๋“  ๊ณผ๋ชฉ์˜ ID ์ฐพ๊ธฐ:

ฮ course_id(ฯƒsemester="Fall"โˆงyear=2017(section))โˆชฮ course_id(ฯƒsemester="Spring"โˆงyear=2018(section))\Pi_\text{course\_id}(\sigma_{\text{semester}="Fall" \land \text{year}=2017}(\text{section})) \cup \Pi_\text{course\_id}(\sigma_{\text{semester}="Spring" \land \text{year}=2018}(\text{section})) ฮ 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 Operation

  • Set-intersection(๊ต์ง‘ํ•ฉ) ์—ฐ์‚ฐ: ๋‘ ์ž…๋ ฅ relation ๋ชจ๋‘์— ์žˆ๋Š”, ๊ณตํ†ต๋œ tuple์„ ๋ฐ˜ํ™˜ํ•จ
  • ํ‘œ๊ธฐ๋ฒ•: rโˆฉsr \cap srโˆฉs
  • ๊ฐ€์ •:
    1. rrr๊ณผ sss๋Š” ๋™์ผํ•œ arity๋ฅผ ๊ฐ€์ง
    2. rrr๊ณผ sss์˜ attributes๋Š” ํ˜ธํ™˜ ๊ฐ€๋Šฅํ•จ
  • ์˜ˆ: 2017๋…„ ๊ฐ€์„๊ณผ 2018๋…„ ๋ด„ ํ•™๊ธฐ ๋ชจ๋‘์— ๊ฐœ์„ค๋œ ๋ชจ๋“  ๊ณผ๋ชฉ์˜ ์ง‘ํ•ฉ ์ฐพ๊ธฐ:

ฮ course_id(ฯƒsemester="Fall"โˆงyear=2017(section))โˆฉฮ course_id(ฯƒsemester="Spring"โˆงyear=2018(section))\Pi_\text{course\_id}(\sigma_{semester="Fall" \land year=2017}(\text{section})) \cap \Pi_\text{course\_id}(\sigma_{semester="Spring" \land year=2018}(\text{section})) ฮ course_idโ€‹(ฯƒsemester="Fall"โˆงyear=2017โ€‹(section))โˆฉฮ course_idโ€‹(ฯƒsemester="Spring"โˆงyear=2018โ€‹(section))

Set Difference Operation

  • Set-difference(์ฐจ์ง‘ํ•ฉ) ์—ฐ์‚ฐ: ํ•œ relation์—๋Š” ์žˆ์ง€๋งŒ ๋‹ค๋ฅธ relation์—๋Š” ์—†๋Š” tuple์„ ๋ฐ˜ํ™˜ํ•จ
  • ํ‘œ๊ธฐ๋ฒ•: rโˆ’sr - srโˆ’s
  • Set differences๋Š” ํ˜ธํ™˜ ๊ฐ€๋Šฅํ•œ relations ์‚ฌ์ด์—์„œ ์ˆ˜ํ–‰๋˜์–ด์•ผ ํ•จ
    1. rrr๊ณผ sss๋Š” ๋™์ผํ•œ arity๋ฅผ ๊ฐ€์ ธ์•ผ ํ•จ
    2. rrr๊ณผ sss์˜ attribute domains๋Š” ํ˜ธํ™˜ ๊ฐ€๋Šฅํ•ด์•ผ ํ•จ
  • ์˜ˆ:
    • 2017๋…„ ๊ฐ€์„ ํ•™๊ธฐ์—๋Š” ๊ฐœ์„ค๋˜์—ˆ์ง€๋งŒ 2018๋…„ ๋ด„ ํ•™๊ธฐ์—๋Š” ๊ฐœ์„ค๋˜์ง€ ์•Š์€ ๋ชจ๋“  ๊ณผ๋ชฉ ์ฐพ๊ธฐ:

ฮ course_id(ฯƒsemester="Fall"โˆงyear=2017(section))โˆ’ฮ course_id(ฯƒsemester="Spring"โˆงyear=2018(section))\Pi_{course\_id}(\sigma_{semester="Fall" \land year=2017}(section)) - \Pi_{course\_id}(\sigma_{semester="Spring" \land year=2018}(section)) ฮ course_idโ€‹(ฯƒsemester="Fall"โˆงyear=2017โ€‹(section))โˆ’ฮ course_idโ€‹(ฯƒsemester="Spring"โˆงyear=2018โ€‹(section))

The Assignment Operation

  • ๋•Œ๋กœ๋Š” relational-algebra expression์˜ ์ผ๋ถ€๋ฅผ ์ž„์‹œ relation ๋ณ€์ˆ˜์— ํ• ๋‹นํ•˜์—ฌ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์ด ํŽธ๋ฆฌํ•จ
  • Assignment(ํ• ๋‹น) ์—ฐ์‚ฐ์€ โ†\leftarrowโ†๋กœ ํ‘œ๊ธฐ๋˜๋ฉฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์˜ ํ• ๋‹น์ฒ˜๋Ÿผ ์ž‘๋™
  • ์˜ˆ: "Physics"์™€ "Music" department์˜ ๋ชจ๋“  instructor ์ฐพ๊ธฐ
    • Physics โ†ฯƒdept_name="Physics"(instructor)\leftarrow \sigma_{dept\_name="Physics"}(instructor)โ†ฯƒdept_name="Physics"โ€‹(instructor)
    • Music โ†ฯƒdept_name="Music"(instructor)\leftarrow \sigma_{dept\_name="Music"}(instructor)โ†ฯƒdept_name="Music"โ€‹(instructor)
    • Physics โˆช\cupโˆช Music
  • Assignment ์—ฐ์‚ฐ ์—†๋Š” ๋™์ผํ•œ expression:

ฯƒdept_name="Physics"(instructor)โˆชฯƒdept_name="Music"(instructor)\sigma_{dept\_name="Physics"}(instructor) \cup \sigma_{dept\_name="Music"}(instructor) ฯƒdept_name="Physics"โ€‹(instructor)โˆชฯƒdept_name="Music"โ€‹(instructor)

  • Assignment ์—ฐ์‚ฐ์„ ์‚ฌ์šฉํ•˜๋ฉด query๋ฅผ ์ผ๋ จ์˜ assign๊ณผ ๊ทธ ๊ฒฐ๊ณผ๊ฐ€ query์˜ ๊ฒฐ๊ณผ๋กœ ํ‘œ์‹œ๋˜๋Š” expression์œผ๋กœ ๊ตฌ์„ฑ๋œ ์ˆœ์ฐจ์  ํ”„๋กœ๊ทธ๋žจ์œผ๋กœ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Œ

The Rename Operation

  • Relational-algebra expressions์˜ ๊ฒฐ๊ณผ๋Š” ์ฐธ์กฐํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ด๋ฆ„์ด ์—†์Œ
  • Rename(์ด๋ฆ„ ๋ณ€๊ฒฝ) ์—ฐ์‚ฐ์ž, ฯ\rhoฯ๊ฐ€ ๊ทธ ๋ชฉ์ ์œผ๋กœ ์ œ๊ณต๋จ
  • Expression: ฯx(E)\rho_x(E)ฯxโ€‹(E)๋Š” expression EEE์˜ ๊ฒฐ๊ณผ๋ฅผ xxx๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ ๋ฐ˜ํ™˜
  • Attributes ์ด๋ฆ„๋„ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ• ๋‹น ๊ฐ€๋Šฅ: ฯx(A1,A2,..An)(E)\rho_{x(A_1,A_2, .. An)} (E)ฯx(A1โ€‹,A2โ€‹,..An)โ€‹(E)

Equivalent(๋™๋“ฑํ•œ) Queries

  • Relational algebra์—์„œ query๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ํ•˜๋‚˜ ์ด์ƒ ์กด์žฌ
  • ์˜ˆ: ๊ธ‰์—ฌ๊ฐ€ 90,000๋ณด๋‹ค ๋งŽ์€ Physics department์˜ instructor์— ๋Œ€ํ•œ ์ •๋ณด ์ฐพ๊ธฐ
    • Query 1: ฯƒdept_name="Physics"โˆงsalary>90000(instructor)\sigma_{dept\_name="Physics" \land salary > 90000}(instructor)ฯƒdept_name="Physics"โˆงsalary>90000โ€‹(instructor)
    • Query 2: ฯƒdept_name="Physics"(ฯƒsalary>90000(instructor))\sigma_{dept\_name="Physics"}(\sigma_{salary > 90000}(instructor))ฯƒdept_name="Physics"โ€‹(ฯƒsalary>90000โ€‹(instructor))
  • ์˜ˆ: Physics department์˜ instructor๊ฐ€ ๊ฐ€๋ฅด์น˜๋Š” ๊ณผ๋ชฉ์— ๋Œ€ํ•œ ์ •๋ณด ์ฐพ๊ธฐ
    • Query 1: ฯƒdept_name="Physics"(instructorโ‹ˆinstructor.ID=teaches.IDteaches)\sigma_{dept\_name="Physics"}(instructor \bowtie_{instructor.ID = teaches.ID} teaches)ฯƒdept_name="Physics"โ€‹(instructorโ‹ˆinstructor.ID=teaches.IDโ€‹teaches)
    • Query 2: (ฯƒdept_name="Physics"(instructor))โ‹ˆinstructor.ID=teaches.IDteaches(\sigma_{dept\_name="Physics"}(instructor)) \bowtie_{instructor.ID = teaches.ID} teaches(ฯƒdept_name="Physics"โ€‹(instructor))โ‹ˆinstructor.ID=teaches.IDโ€‹teaches
  • ๋‘ query๋Š” ๋™์ผํ•˜์ง€๋Š” ์•Š์ง€๋งŒ, ๋™๋“ฑํ•จ
    • ์–ด๋–ค ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ๋„ ๋™์ผํ•œ ๊ฒฐ๊ณผ๋ฅผ ์ œ๊ณตํ•˜๊ธฐ ๋•Œ๋ฌธ.

Modification of the Database

  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๋‚ด์šฉ์€ ๋‹ค์Œ ์—ฐ์‚ฐ๋“ค์„ ์‚ฌ์šฉํ•˜์—ฌ ์ˆ˜์ •๋  ์ˆ˜ ์žˆ์Œ:
    • Deletion
    • Insertion
    • Updating
  • ์ด ๋ชจ๋“  ์—ฐ์‚ฐ์€ assignment ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ‘œํ˜„๋จ

Deletion

  • Delete(์‚ญ์ œ) ์š”์ฒญ์€ query์™€ ์œ ์‚ฌํ•˜๊ฒŒ ํ‘œํ˜„๋˜์ง€๋งŒ, ์‚ฌ์šฉ์ž์—๊ฒŒ tuple์„ ํ‘œ์‹œํ•˜๋Š” ๋Œ€์‹  ์„ ํƒ๋œ tuple์ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์ œ๊ฑฐ๋จ
  • ์ „์ฒด tuple๋งŒ ์‚ญ์ œ ๊ฐ€๋Šฅ. ํŠน์ • attributes์˜ ๊ฐ’๋งŒ ์‚ญ์ œ ๋ถˆ๊ฐ€
  • Deletion์€ relational algebra์—์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ‘œํ˜„๋จ: rโ†rโˆ’Er \leftarrow r - Erโ†rโˆ’E
    • ์—ฌ๊ธฐ์„œ rrr์€ relation์ด๊ณ  EEE๋Š” relational algebra query
  • ์˜ˆ:
    • Perryridge ์ง€์ ์˜ ๋ชจ๋“  ๊ณ„์ขŒ ๊ธฐ๋ก ์‚ญ์ œ: accountโ†accountโˆ’ฯƒbranchโˆ’name="Perryridge"(account)\text{account} \leftarrow \text{account} - \sigma_{branch-name = "Perryridge"}(\text{account})accountโ†accountโˆ’ฯƒbranchโˆ’name="Perryridge"โ€‹(account)
    • ๊ธˆ์•ก์ด 0์—์„œ 50 ์‚ฌ์ด์ธ ๋ชจ๋“  ๋Œ€์ถœ ๊ธฐ๋ก ์‚ญ์ œ: loanโ†loanโˆ’ฯƒamountโ‰ฅ0โˆงamountโ‰ค50(loan)\text{loan} \leftarrow \text{loan} - \sigma_{amount \geq 0 \land amount \leq 50}(\text{loan})loanโ†loanโˆ’ฯƒamountโ‰ฅ0โˆงamountโ‰ค50โ€‹(loan)

Insertion

  • Relation์— ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฝ์ž…ํ•˜๊ธฐ ์œ„ํ•ด:
    • ์‚ฝ์ž…ํ•  tuple์„ ๋ช…์‹œํ•˜๊ฑฐ๋‚˜
    • ๊ฒฐ๊ณผ๊ฐ€ ์‚ฝ์ž…๋  tuple๋“ค์˜ ์ง‘ํ•ฉ์ธ query๋ฅผ ์ž‘์„ฑ
  • Relational algebra์—์„œ insertion์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ‘œํ˜„๋จ: rโ†rโˆชEr \leftarrow r \cup Erโ†rโˆชE
    • ์—ฌ๊ธฐ์„œ rrr์€ relation์ด๊ณ  EEE๋Š” relational algebra expression
  • ๋‹จ์ผ tuple์˜ ์‚ฝ์ž…์€ EEE๋ฅผ ํ•˜๋‚˜์˜ tuple์„ ํฌํ•จํ•˜๋Š” ์ƒ์ˆ˜ relation์œผ๋กœ ํ•˜์—ฌ ํ‘œํ˜„๋จ
  • ์˜ˆ:
    • Smith๊ฐ€ Perryridge ์ง€์ ์˜ A-973 ๊ณ„์ขŒ์— $1200๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค๋Š” ์ •๋ณด๋ฅผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์‚ฝ์ž…
    • accountโ†accountโˆช("Perryridge",ย A-973,ย 1200)\text{account} \leftarrow \text{account} \cup \text{("Perryridge", A-973, 1200)}accountโ†accountโˆช("Perryridge",ย A-973,ย 1200)
    • depositorโ†depositorโˆช("Smith",ย A-973)\text{depositor} \leftarrow \text{depositor} \cup \text{("Smith", A-973)}depositorโ†depositorโˆช("Smith",ย A-973)

Updating

  • Tuple์˜ ๋ชจ๋“  ๊ฐ’์„ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ณ  tuple์˜ ๊ฐ’์„ ๋ณ€๊ฒฝํ•˜๋Š” ๋ฉ”์ปค๋‹ˆ์ฆ˜
  • ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด generalized projection operator(์ผ๋ฐ˜ํ™”๋œ ํ”„๋กœ์ ์…˜ ์—ฐ์‚ฐ์ž)๋ฅผ ์‚ฌ์šฉ
  • rโ†ฮ F1,F2,...,Fn(r)r \leftarrow \Pi_{F_1, F_2, ..., F_n}(r)rโ†ฮ F1โ€‹,F2โ€‹,...,Fnโ€‹โ€‹(r)
  • ๊ฐ FiF_iFiโ€‹๋Š”,
    • i๋ฒˆ์งธ attribute๊ฐ€ ์—…๋ฐ์ดํŠธ๋˜์ง€ ์•Š์œผ๋ฉด rrr์˜ i๋ฒˆ์งธ attribute์ด๊ฑฐ๋‚˜,
    • ๋งŒ์•ฝ attribute๊ฐ€ ์—…๋ฐ์ดํŠธ๋˜์–ด์•ผ ํ•œ๋‹ค๋ฉด, FiF_iFiโ€‹๋Š” ์ƒ์ˆ˜์™€ rrr์˜ attributes๋งŒ์„ ํฌํ•จํ•˜๋Š” expression์œผ๋กœ, attribute์˜ ์ƒˆ๋กœ์šด ๊ฐ’์„ ์ œ๊ณต
  • ์˜ˆ:
    • ๋ชจ๋“  ์ž”์•ก์„ 5% ์ฆ๊ฐ€์‹œ์ผœ ์ด์ž ์ง€๊ธ‰ํ•˜๊ธฐ

      accountโ†ฮ AN,ย BN,ย BALย -ย 1.05(account)\text{account} \leftarrow \Pi_\text{AN, BN, BAL - 1.05}(\text{account}) accountโ†ฮ AN,ย BN,ย BALย -ย 1.05โ€‹(account)

    • ์—ฌ๊ธฐ์„œ AN, BN, BAL์€ ๊ฐ๊ฐ account-number, branch-name, balance๋ฅผ ์˜๋ฏธ
์ตœ๊ทผ ์ˆ˜์ •: 25. 11. 6. ์˜คํ›„ 12:07
Contributors: kmbzn
Prev
1. Introduction
Next
3. SQL

BUILT WITH

CloudflareNode.jsGitHubGitVue.jsJavaScriptVSCodenpm

All trademarks and logos are property of their respective owners.
ยฉ 2025 kmbzn ยท MIT License