๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๊ฐœ์ธ ๊ณต๋ถ€/DB

[๊ฐ•์˜ ์ •๋ฆฌ] Relational Database, KEY, Constraints

by syLim___ 2023. 12. 18.
728x90

 

์ถœ์ฒ˜ - ์‰ฌ์šด์ฝ”๋“œ Youtube


โœ… ์ˆ˜ํ•™์—์„œ์˜ Relation?

 - ์—ฌ๋Ÿฌ ๊ฐœ์˜ set์˜ ์›์†Œ๋“ค์˜ ๋ชจ๋“  ๊ฐ€๋Šฅํ•œ ์กฐํ•ฉ์œผ๋กœ ์ด๋ฃจ์–ด์ง„ ์ƒˆ๋กœ์šด set์„ Cartesian product๋ผ๊ณ  ํ•œ๋‹ค.

 - ์ด cartesian product์˜ ๋ถ€๋ถ„์ง‘ํ•ฉ์„ ๋˜๋Š” ํŠœํ”Œ๋“ค์˜ ์ง‘ํ•ฉ์„ relation์ด๋ผ๊ณ  ํ•œ๋‹ค.

 

โœ… ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ ๋ชจ๋ธ์—์„œ์˜ relation?

 - ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋„๋ฉ”์ธ(set)์˜ ๊ฐ’๋“ค๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ์กฐํ•ฉ๋“ค์˜ ์ง‘ํ•ฉ

 

โœ… ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ ๋ชจ๋ธ ์ฃผ์š” ๊ฐœ๋… (์šฉ์–ด ์ •๋ฆฌ)

 - domain : Atomicํ•œ ๊ฐ’๋“ค์˜ ์ง‘ํ•ฉ

 - attribute : domain์ด relation์—์„œ ๋งก์€ ์—ญํ•  ์ด๋ฆ„
 - tuple : ๊ฐ attribute์˜ ๊ฐ’์œผ๋กœ ์ด๋ฃจ์–ด์ง„ ๋ฆฌ์ŠคํŠธ (์ผ๋ถ€ ๊ฐ’์€ NULL์ผ ์ˆ˜ ์žˆ๋‹ค.)

 - relation : ํŠœํ”Œ๋“ค์˜ ์ง‘ํ•ฉ

 - relation name : relation์˜ ์ด๋ฆ„

 

 

โœ… ์˜ˆ์‹œ - Student relation

 ๐Ÿฅ Student domain ์ •์˜ํ•˜๊ธฐ

    - student_ids : 7์ž๋ฆฌ integer

    - human_names : ๋ฌธ์ž์—ด

    - university_grades : {1,2,3,4} ์ค‘ ํ•˜๋‚˜

    - major_names : ์ „๊ณต์ด๋ฆ„ ์ง‘ํ•ฉ

    - phone_numbers : ์ „ํ™”๋ฒˆํ˜ธ

 

 ๐Ÿฅ Relation ๋งŒ๋“ค๊ธฐ

 - Relation์„ ๋งŒ๋“œ๋ ค๋‹ค๋ณด๋‹ˆ, phone_numbers ๋„๋ฉ”์ธ์ด 2๊ฐœ ํ•„์š”ํ•  ๊ฒƒ ๊ฐ™๋‹ค. (1. ๋ณธ์ธ๋ฒˆํ˜ธ ์ €์žฅ ๋ชฉ์ , 2. ๋น„์ƒ์—ฐ๋ฝ๋ง ์ €์žฅ ๋ชฉ์ )

      --> ํ•˜๋‚˜์˜ ๋ฆด๋ ˆ์ด์…˜ ์•ˆ์—์„œ ๊ฐ™์€ ๋„๋ฉ”์ธ์ด ๋‹ค๋ฅธ ๋ชฉ์ (์—ญํ• )์„ ๊ฐ€์ง€๊ณ  2๋ฒˆ ์‚ฌ์šฉ๋œ๋‹ค

      --> ์ด ๋„๋ฉ”์ธ๋“ค์˜ ์—ญํ• ์„ ์ •์˜ํ•ด์ฃผ๊ธฐ ์œ„ํ•ด์„œ, ๊ฐ ๋„๋ฉ”์ธ์— ์†์„ฑ(attribute)์„ ๋ถ€์—ฌํ•œ๋‹ค.

 

 - ๊ทธ๋ฆผ์—์„œ ์ฒซ ๋ฒˆ์งธ ํ–‰์€ domain ์ด๋ฆ„, ๋‘ ๋ฒˆ์งธ ํ–‰์€ attribute ์ด๋ฆ„

 

 

 - ๊ฐ ๋„๋ฉ”์ธ์˜ ๊ฐ’๋“ค๋กœ ์ด๋ฃจ์–ด์ง„ ํŠœํ”Œ๋กœ Relation์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ณ , ์ด ๋ฆด๋ ˆ์ด์…˜์„ ๋ณด๊ธฐ ์ข‹๊ฒŒ ํ…Œ์ด๋ธ” ํ˜•ํƒœ๋กœ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ๋‹ค.

 

 - ๋ฆด๋ ˆ์ด์…˜(ํ…Œ์ด๋ธ”)์˜ ๊ฐ ํ–‰์€ ํŠœํ”Œ, ๊ฐ ์—ด์€ attribute ์ด๋‹ค.

 

 

 

โœ… Relation schema

 - Relation์˜ ๊ตฌ์กฐ๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค.

 - Relation์ด๋ฆ„(attribute ๋ฆฌ์ŠคํŠธ) ๋กœ ํ‘œ๊ธฐ๋œ๋‹ค.

 - ์˜ˆ์‹œ: STUDENT(id, name, grade, major, phone_num, emer_phone_num)

 

 - Relation schema๋Š” attribute๋ฟ๋งŒ์•„๋‹ˆ๋ผ attributes์™€ ๊ด€๋ จ๋œ constraints๋„ ํฌํ•จํ•œ๋‹ค.

 

 

โœ… Degree of a relation

 - Relation schema์—์„œ attributes์˜ ๊ฐœ์ˆ˜

 - ์˜ˆ์‹œ: ์œ„ ๋ฆด๋ ˆ์ด์…˜์˜ degree๋Š” 6

 

 

โญ๏ธ Relational Database(๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค)๋ž€?

 - Relational data model์— ๊ธฐ๋ฐ˜ํ•˜์—ฌ ๊ตฌ์กฐํ™”๋œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค

 - Relational database๋Š” ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ฆด๋ ˆ์ด์…˜์œผ๋กœ ๊ตฌ์„ฑ๋œ๋‹ค.

 

๐Ÿฅ Relational database schema?

 - Relation schema๋“ค์˜ ์ง‘ํ•ฉ + integrity constraints set

 

 

โœ… Relation์˜ ํŠน์ง•

 - ์ค‘๋ณต๋œ ํŠœํ”Œ์„ ๊ฐ€์งˆ ์ˆ˜ ์—†๋‹ค. (๋ฆด๋ ˆ์ด์…˜์€ ์ •์˜๋ถ€ํ„ฐ ํŠœํ”Œ๋“ค์˜ "์ง‘ํ•ฉ"์ด๊ธฐ ๋•Œ๋ฌธ)

 - ๋ฆด๋ ˆ์ด์…˜์—์„œ ํŠœํ”Œ์˜ ์ˆœ์„œ์™€ attribute์˜ ์ˆœ์„œ๋Š” ์ค‘์š”ํ•˜์ง€ ์•Š๋‹ค. (์ง‘ํ•ฉ์ด๋‹ˆ๊นŒ!)

 - ๋ฆด๋ ˆ์ด์…˜์˜ ํŠœํ”Œ์„ uniqueํ•˜๊ฒŒ ์‹๋ณ„ํ•˜๊ธฐ ์œ„ํ•ด, attribute์˜ ๋ถ€๋ถ„์ง‘ํ•ฉ์„ key๋กœ ์„ค์ •ํ•œ๋‹ค.

 - ํ•˜๋‚˜์˜ ๋ฆด๋ ˆ์ด์…˜์—์„œ attribute์˜ ์ด๋ฆ„์€ ์ค‘๋ณต๋  ์ˆ˜ ์—†๊ณ , atomicํ•ด์•ผํ•œ๋‹ค.

 - Attribute๊ฐ€ atomicํ•ด์•ผํ•œ๋‹ค => ํ•˜๋‚˜์˜ attribute๊ฐ€ ๋‚˜๋ˆ ์งˆ ์ˆ˜ ์žˆ๋Š” ์—ฌ๋Ÿฌ ์ •๋ณด๋ฅผ ๋‹ด๊ณ  ์žˆ๋Š” composite(or multivalued) attribute๊ฐ€ ๋˜๋ฉด ์•ˆ ๋œ๋‹ค

 

โœ… Null์€ ์–ธ์ œ ์‚ฌ์šฉ๋˜๋Š”๊ฐ€

 - ๊ฐ’์ด ์กด์žฌํ•˜์ง€ ์•Š์„ ๋•Œ

 - ๊ฐ’์ด ์กด์žฌํ•˜์ง€๋งŒ, ์•„์ง ๊ทธ ๊ฐ’์ด ๋ฌด์—‡์ธ์ง€ ๋ชจ๋ฅผ ๋•Œ

 - ํ•ด๋‹น ์‚ฌํ•ญ๊ณผ ๊ด€๋ จ ์—†์„ ๋•Œ

 

 - Null์€ ์ค‘์˜์ ์ธ ์˜๋ฏธ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋˜๋„๋ก ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด ์ข‹๋‹ค .

 

 

โœ… KEY

๐Ÿ”‘ Super Key (์Šˆํผํ‚ค)

 - ๋ฆด๋ ˆ์ด์…˜์—์„œ ํŠœํ”Œ์„ uniqueํ•˜๊ฒŒ ์‹๋ณ„ํ•  ์ˆ˜ ์žˆ๋Š” attribute์˜ ๋ถ€๋ถ„์ง‘ํ•ฉ

 

๐Ÿ”‘ Candidate Key (ํ›„๋ณดํ‚ค)

 - ์–ด๋А ํ•œ attribute๋ผ๋„ ์ œ๊ฑฐํ•˜๋ฉด super key๊ฐ€ ์•„๋‹ˆ๊ฒŒ ๋˜๋Š” super key

 - key ๋˜๋Š” minimal superkey๋ผ๊ณ  ๋ถ€๋ฅด๊ธฐ๋„ ํ•œ๋‹ค.

 

๐Ÿ”‘ Primary Key (๊ธฐ๋ณธํ‚ค)

 - ๋ฆด๋ ˆ์ด์…˜์—์„œ ํŠœํ”Œ์„ uniqueํ•˜๊ฒŒ ์‹๋ณ„ํ•˜๊ธฐ ์œ„ํ•ด ์„ ํƒ๋œ candidate key

 - ๋ณดํ†ต attribute ์ˆ˜๊ฐ€ ๊ฐ€์žฅ ์ ์€ ํ‚ค๋ฅผ primary key๋กœ ์„ ํƒํ•œ๋‹ค. (ํŽธํ•˜๋‹ˆ๊นŒ!)

 

๐Ÿ”‘ Unique Key ๋˜๋Š” Alternate Key (๋Œ€์ฒดํ‚ค)

 - Primary key๊ฐ€ ์•„๋‹Œ candidate key

 

๐Ÿ”‘ Foreign Key (์™ธ๋ž˜ํ‚ค)

 - ๋‹ค๋ฅธ ๋ฆด๋ ˆ์ด์…˜์˜ Primary Key๋ฅผ ์ฐธ์กฐํ•˜๋Š” attribute์˜ ๋ถ€๋ถ„์ง‘ํ•ฉ

 

 

 

โœ… Constraints

 - Relational database์˜ ๋ฆด๋ ˆ์ด์…˜๋“ค์ด ์–ธ์ œ๋‚˜ ํ•ญ์ƒ ์ง€์ผœ์ค˜์•ผ ํ•˜๋Š” ์ œ์•ฝ์‚ฌํ•ญ

 

๐Ÿฅ Implicit Constraints

 - Relation data model ์ž์ฒด๊ฐ€ ๊ฐ€์ง€๋Š” constraints

 - ์˜ˆ์‹œ ) Relation์€ ์ค‘๋ณต๋˜๋Š” ํŠœํ”Œ์„ ๊ฐ€์งˆ ์ˆ˜ ์—†๋‹ค, ๋ฆด๋ ˆ์ด์…˜ ๋‚ด์—์„œ๋Š” ๊ฐ™์€ ์ด๋ฆ„์˜ attribute๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์—†๋‹ค

 

๐Ÿฅ Schema-based Constraints

 - Explicit constraints๋ผ๊ณ ๋„ ํ•œ๋‹ค

 - ์ฃผ๋กœ DDL์„ ํ†ตํ•ด ์Šคํ‚ค๋งˆ์— ์ง์ ‘ ๋ช…์‹œํ•  ์ˆ˜ ์žˆ๋Š” constraints

 - ์ข…๋ฅ˜

    - Domain constraints : Attribute์˜ value๋Š” ํ•ด๋‹น attribute์˜ ๋„๋ฉ”์ธ์— ์†ํ•œ value์—ฌ์•ผ ํ•œ๋‹ค.

    - Key constraints : ์„œ๋กœ ๋‹ค๋ฅธ ํŠœํ”Œ๋“ค์€ ๊ฐ™์€ value์˜ key๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์—†๋‹ค.

    - Null value constraints : Attribute๊ฐ€ NOT NULL๋กœ ๋ช…์‹œ๋˜์—ˆ๋‹ค๋ฉด, value๋กœ null์„ ๊ฐ€์งˆ ์ˆ˜ ์—†๋‹ค.

    - Entity integrity constraints : Primary key๋Š” value๋กœ null์„ ๊ฐ€์งˆ ์ˆ˜ ์—†๋‹ค.

    - Referential integrity constraints : FK์™€ PK์˜ ๋„๋ฉ”์ธ์ด ๊ฐ™์•„์•ผ ํ•˜๊ณ , FK๋Š” value๋กœ PK์— ์—†๋Š” value๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์—†๋‹ค.

728x90