πŸ“˜ Programming/DB

[MySQL] κ΄€κ³„ν˜• λ°μ΄ν„°λ² μ΄μŠ€ (Relational Database)μ΄λž€? (νŠΉμ§•, ν‚€, 관계, μŠ€ν‚€λ§ˆ)

ν•œμ½”λ”© 2020. 7. 10. 15:02
728x90
728x90

κ΄€κ³„ν˜• λ°μ΄ν„°λ² μ΄μŠ€(relational database)

κ΄€κ³„ν˜• λ°μ΄ν„°λ² μ΄μŠ€λŠ” ν˜„μž¬ κ°€μž₯ 많이 μ‚¬μš©λ˜κ³  μžˆλŠ” λ°μ΄ν„°λ² μ΄μŠ€μ˜ ν•œ μ’…λ₯˜μž…λ‹ˆλ‹€.

κ΄€κ³„ν˜• λ°μ΄ν„°λ² μ΄μŠ€λž€ ν…Œμ΄λΈ”(table)둜 이루어져 있으며, 이 ν…Œμ΄λΈ”은 ν‚€(key)와 κ°’(value)의 관계λ₯Ό λ‚˜νƒ€λƒ…λ‹ˆλ‹€.

이처럼 λ°μ΄ν„°μ˜ 쒅속성을 관계(relationship)둜 ν‘œν˜„ν•˜λŠ” 것이 κ΄€κ³„ν˜• λ°μ΄ν„°λ² μ΄μŠ€μ˜ νŠΉμ§•μž…λ‹ˆλ‹€.

 

κ΄€κ³„ν˜• λ°μ΄ν„°λ² μ΄μŠ€μ˜ ν…Œμ΄λΈ”(table) ꡬ쑰 (좜처 : http://tcpschool.com/mysql/mysql_intro_relationalDB)

ν…Œμ΄λΈ”μ€ 이름을 가지고 있으며, ν–‰(row)κ³Ό μ—΄(column) κ·Έλ¦¬κ³  거기에 λŒ€μ‘ν•˜λŠ” 값을 κ°€μ§‘λ‹ˆλ‹€.

κ΄€κ³„ν˜• λ°μ΄ν„°λ² μ΄μŠ€λŠ” μœ„μ™€ 같이 κ΅¬μ„±λœ ν…Œμ΄λΈ”이 λ‹€λ₯Έ ν…Œμ΄λΈ”λ“€κ³Ό 관계λ₯Ό λ§Ίκ³  λͺ¨μ—¬μžˆλŠ” μ§‘ν•©μ²΄λ‘œ 이해할 수 μžˆμŠ΅λ‹ˆλ‹€.


κ΄€κ³„ν˜• λ°μ΄ν„°λ² μ΄μŠ€μ˜ νŠΉμ§•

 

1. λ°μ΄ν„°μ˜ λΆ„λ₯˜, μ •λ ¬, 탐색 속도가 λΉ λ¦…λ‹ˆλ‹€.

2. μ˜€λž«λ™μ•ˆ μ‚¬μš©λœ 만큼 신뒰성이 λ†’κ³ , μ–΄λ–€ μƒν™©μ—μ„œλ„ λ°μ΄ν„°μ˜ 무결성을 보μž₯ν•΄ μ€λ‹ˆλ‹€.

3. 기쑴에 μž‘μ„±λœ μŠ€ν‚€λ§ˆλ₯Ό μˆ˜μ •ν•˜κΈ°κ°€ μ–΄λ ΅μŠ΅λ‹ˆλ‹€.

4. λ°μ΄ν„°λ² μ΄μŠ€μ˜ λΆ€ν•˜λ₯Ό λΆ„μ„ν•˜λŠ” 것이 μ–΄λ ΅μŠ΅λ‹ˆλ‹€.


κ΄€κ³„ν˜• λ°μ΄ν„°λ² μ΄μŠ€ μš©μ–΄

 

1. μ—΄(column)

각각의 열은 μœ μΌν•œ 이름을 가지고 있으며, μžμ‹ λ§Œμ˜ νƒ€μž…μ„ 가지고 μžˆμŠ΅λ‹ˆλ‹€.

μ΄λŸ¬ν•œ 열은 ν•„λ“œ(field) λ˜λŠ” μ†μ„±(attribute)이라고도 λΆˆλ¦½λ‹ˆλ‹€.

 

2. ν–‰(row)

행은 κ΄€κ³„λœ λ°μ΄ν„°μ˜ λ¬ΆμŒμ„ μ˜λ―Έν•©λ‹ˆλ‹€.

ν•œ ν…Œμ΄λΈ”μ˜ λͺ¨λ“  행은 같은 수의 열을 가지고 μžˆμŠ΅λ‹ˆλ‹€.

μ΄λŸ¬ν•œ 행은 νŠœν”Œ(tuple) λ˜λŠ” λ ˆμ½”λ“œ(record)라고도 λΆˆλ¦½λ‹ˆλ‹€.

 

3. κ°’(value)

ν…Œμ΄λΈ”μ€ 각각의 ν–‰κ³Ό 열에 λŒ€μ‘ν•˜λŠ” 값을 가지고 μžˆμŠ΅λ‹ˆλ‹€.

μ΄λŸ¬ν•œ 값은 μ—΄μ˜ νƒ€μž…μ— λ§žλŠ” 값이어야 ν•©λ‹ˆλ‹€.

 

4. ν‚€(key)

ν…Œμ΄λΈ”μ—μ„œ ν–‰μ˜ μ‹λ³„μžλ‘œ μ΄μš©λ˜λŠ” 열을 ν‚€(key) λ˜λŠ” κΈ°λ³Έ ν‚€(primary key)라고 ν•©λ‹ˆλ‹€.

즉, ν…Œμ΄λΈ”μ— μ €μž₯된 λ ˆμ½”λ“œλ₯Ό κ³ μœ ν•˜κ²Œ μ‹λ³„ν•˜λŠ” 후보 ν‚€(candidate key) μ€‘μ—μ„œ λ°μ΄ν„°λ² μ΄μŠ€ μ„€κ³„μžκ°€ μ§€μ •ν•œ 속성을 μ˜λ―Έν•©λ‹ˆλ‹€.

 

5. 관계(relationship)

ν…Œμ΄λΈ” κ°„μ˜ κ΄€κ³„λŠ” κ΄€κ³„λ₯Ό λ§ΊλŠ” ν…Œμ΄λΈ”μ˜ μˆ˜μ— 따라 λ‹€μŒκ³Ό 같이 λ‚˜λˆŒ 수 μžˆμŠ΅λ‹ˆλ‹€.

 

1. μΌλŒ€μΌ(one-to-one) 관계

2. μΌλŒ€λ‹€(one-to-many) 관계

3. λ‹€λŒ€λ‹€(many-to-many) 관계

 

κ΄€κ³„ν˜• λ°μ΄ν„°λ² μ΄μŠ€μ—μ„œλŠ” μ΄λŸ¬ν•œ 관계λ₯Ό λ‚˜νƒ€λ‚΄κΈ° μœ„ν•΄ μ™Έλž˜ ν‚€(foreign key)λΌλŠ” 것을 μ‚¬μš©ν•©λ‹ˆλ‹€.

μ™Έλž˜ ν‚€λŠ” ν•œ ν…Œμ΄λΈ”μ˜ ν‚€ μ€‘μ—μ„œ λ‹€λ₯Έ ν…Œμ΄λΈ”μ˜ ν–‰(row)을 식별할 수 μžˆλŠ” ν‚€λ₯Ό μ˜λ―Έν•©λ‹ˆλ‹€.

 

ν…Œμ΄λΈ” κ°„μ˜ 관계 (좜처 : http://tcpschool.com/mysql/mysql_intro_relationalDB)

 

6. μŠ€ν‚€λ§ˆ(schema)

μŠ€ν‚€λ§ˆλŠ” ν…Œμ΄λΈ”μ„ λ””μžμΈν•˜κΈ° μœ„ν•œ 청사진이라고 ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

μ΄λŸ¬ν•œ μŠ€ν‚€λ§ˆλŠ” ν…Œμ΄λΈ”μ˜ 각 열에 λŒ€ν•œ ν•­λͺ©κ³Ό νƒ€μž…λΏλ§Œ μ•„λ‹ˆλΌ κΈ°λ³Έ 킀와 μ™Έλž˜ 킀도 λ‚˜νƒ€λ‚΄μ•Ό ν•©λ‹ˆλ‹€.

 

μŠ€ν‚€λ§ˆλŠ” 개체-관계 λ‹€μ΄μ–΄κ·Έλž¨(entity-relationship diagram)μ΄λ‚˜ λ¬Έμžμ—΄λ‘œ ν‘œν˜„ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

Reservation(ID, Name, Date, RoomNum)

 

μœ„μ˜ λ¬Έμžμ—΄μ„ κ°œμ²΄-관계 λ‹€μ΄μ–΄κ·Έλž¨μœΌλ‘œ λ‚˜νƒ€λ‚΄λ©΄ λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

 κ°œμ²΄-관계 λ‹€μ΄μ–΄κ·Έλž¨ (좜처 : http://tcpschool.com/mysql/mysql_intro_relationalDB)

 

728x90
λ°˜μ‘ν˜•