Database

[Database] Key

quedevel 2023. 3. 25. 17:51
728x90
λ°˜μ‘ν˜•

🎯 Key


ν‚€(Key)λŠ” λ°μ΄ν„°λ² μ΄μŠ€μ—μ„œ 쑰건에 λ§Œμ‘±ν•˜λŠ” νŠœν”Œμ„ μ°Ύκ±°λ‚˜ μˆœμ„œλŒ€λ‘œ μ •λ ¬ν•  λ•Œ λ‹€λ₯Έ νŠœν”Œλ“€κ³Ό ꡬ별할 수 μžˆλŠ” μœ μΌν•œ 기쀀이 λ˜λŠ” Attribute(속성)
ν‚€λŠ” λ°μ΄ν„°λ² μ΄μŠ€μ˜ μ„±λŠ₯κ³Ό 무결성에 μ€‘μš”ν•œ 역할을 ν•©λ‹ˆλ‹€. λ°μ΄ν„°λ² μ΄μŠ€ λ””μžμΈ μ‹œμ— ν‚€λ₯Ό 잘 μ •μ˜ν•˜μ—¬, λ°μ΄ν„°λ² μ΄μŠ€μ˜ 무결성을 보μž₯ν•˜κ³  데이터 검색 및 μ‘°μž‘μ˜ νš¨μœ¨μ„±μ„ 높일 수 μžˆμŠ΅λ‹ˆλ‹€.



⭐️ 학생 ν…Œμ΄λΈ”

id name student_id email phone
1 Alice 123 alice@gmail.com 123-0000
2 Bob 234 bob@gmail.com 234-0000
3 Claire 345 claire@gmail.com 345-0000
4 David 456 david@gmail.com 456-0000
5 Emma 567 emma@gmail.com 567-0000

κΈ°λ³Έν‚€ (Primary Key)


각 λ ˆμ½”λ“œλ₯Ό μœ μΌν•˜κ²Œ μ‹λ³„ν•˜λŠ” μ£Όμš” ν‚€μž…λ‹ˆλ‹€. λ°μ΄ν„°λ² μ΄μŠ€ λ‚΄μ˜ λͺ¨λ“  λ ˆμ½”λ“œλŠ” κΈ°λ³Έ ν‚€ 값이 λ°˜λ“œμ‹œ μžˆμ–΄μ•Ό ν•˜λ©°, μ€‘λ³΅λ˜λŠ” 값을 κ°€μ§ˆ 수 μ—†μŠ΅λ‹ˆλ‹€.

β—οΈμ˜ˆ) id μ»¬λŸΌμ€ 각 λ ˆμ½”λ“œλ₯Ό κ³ μœ ν•˜κ²Œ 식별할 수 μžˆλŠ” κΈ°λ³Έ ν‚€μž…λ‹ˆλ‹€.



후보킀 (Candidate Key)


κΈ°λ³Έ ν‚€λ‘œ μ‚¬μš©λ  수 μžˆλŠ” μ—΄μ˜ 집합을 λ§ν•©λ‹ˆλ‹€. 후보 ν‚€λŠ” μœ μΌμ„±κ³Ό μ΅œμ†Œμ„±μ„ λ§Œμ‘±ν•˜λŠ” μ—΄μ˜ μ‘°ν•©μœΌλ‘œ κ΅¬μ„±λ©λ‹ˆλ‹€.

β—οΈμ˜ˆ) 학생 아이디(student_id)와 이메일(email) μ»¬λŸΌμ€ 후보 ν‚€κ°€ 될 수 μžˆμŠ΅λ‹ˆλ‹€. 이듀 μ»¬λŸΌμ€ 각각 μœ μΌν•œ 값을 가지며, λ ˆμ½”λ“œλ₯Ό κ³ μœ ν•˜κ²Œ 식별할 수 μžˆμŠ΅λ‹ˆλ‹€.



λŒ€μ²΄ν‚€ (Alternate Key)


κΈ°λ³Έ ν‚€(primary key)둜 μ‚¬μš©λ  수 μ—†μ§€λ§Œ, λ ˆμ½”λ“œλ₯Ό μœ μΌν•˜κ²Œ 식별할 수 μžˆλŠ” ν‚€

β—οΈμ˜ˆ) μ „ν™”λ²ˆν˜Έ(phone) μ»¬λŸΌμ€ λŒ€μ²΄ ν‚€κ°€ 될 수 μžˆμŠ΅λ‹ˆλ‹€. 이 μ»¬λŸΌμ€ 각각 μœ μΌν•œ 값을 가지며, λ ˆμ½”λ“œλ₯Ό κ³ μœ ν•˜κ²Œ 식별할 수 μžˆμŠ΅λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜, μ „ν™”λ²ˆν˜ΈλŠ” 일반적으둜 λ ˆμ½”λ“œλ₯Ό κ³ μœ ν•˜κ²Œ μ‹λ³„ν•˜λŠ” 데 μ‚¬μš©λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.



μ™Έλž˜ν‚€ (Foreign Key)


λ‹€λ₯Έ ν…Œμ΄λΈ”μ—μ„œ κΈ°λ³Έ ν‚€λ‘œ μ‚¬μš©λ˜λŠ” 열을 μ°Έμ‘°ν•˜λŠ” μ—΄μž…λ‹ˆλ‹€. μ™Έλž˜ ν‚€λ₯Ό μ‚¬μš©ν•˜μ—¬ 두 개 μ΄μƒμ˜ ν…Œμ΄λΈ” κ°„μ˜ 관계λ₯Ό ν˜•μ„±ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

β—οΈμ˜ˆ) 학생 정보 ν…Œμ΄λΈ”κ³Ό λ‹€λ₯Έ ν…Œμ΄λΈ”μ„ μ—°κ²°ν•˜λŠ” μ™Έλž˜ ν‚€κ°€ μžˆμ„ 수 μžˆμŠ΅λ‹ˆλ‹€. λ‹€λ₯Έ ν…Œμ΄λΈ”μ—μ„œ 학생 아이디(student_id)λ₯Ό μ°Έμ‘°ν•˜λŠ” 경우, 이 μ»¬λŸΌμ€ μ™Έλž˜ ν‚€κ°€ λ©λ‹ˆλ‹€.



μŠˆνΌν‚€ (Super Key)


λ ˆμ½”λ“œλ₯Ό μœ μΌν•˜κ²Œ 식별할 수 μžˆλŠ” 킀이며, λ ˆμ½”λ“œμ˜ λ‹€λ₯Έ 속성(attribute)λ“€μ˜ μ‘°ν•©μœΌλ‘œ κ΅¬μ„±λ©λ‹ˆλ‹€.

β—οΈμ˜ˆ) 이름(name)κ³Ό 이메일(email) 컬럼의 쑰합은 슈퍼 ν‚€κ°€ 될 수 μžˆμŠ΅λ‹ˆλ‹€. 이 쑰합은 λ ˆμ½”λ“œλ₯Ό κ³ μœ ν•˜κ²Œ 식별할 수 있으며, 이듀 컬럼의 λΆ€λΆ„ 집합은 κ³ μœ ν•œ κ°’μœΌλ‘œ λ ˆμ½”λ“œλ₯Ό 식별할 수 μžˆμŠ΅λ‹ˆλ‹€. ν•˜μ§€λ§Œ, 이름과 이메일을 λͺ¨λ‘ ν¬ν•¨ν•˜μ§€ μ•Šμ•„λ„ λ ˆμ½”λ“œλ₯Ό 식별할 수 μžˆλŠ” λ‹€λ₯Έ 쑰합도 μ‘΄μž¬ν•©λ‹ˆλ‹€.

728x90
λ°˜μ‘ν˜•

'Database' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

[Database] SQL vs NoSQL  (0) 2023.03.26
[Database] SQL Injection  (0) 2023.03.25
[Database] JOIN  (0) 2023.03.25
[Database] MySQL to Oracle  (0) 2021.07.31
[Database] Oracle 12  (0) 2020.02.27