λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
μΉ΄ν…Œκ³ λ¦¬ μ—†μŒ

DataBase κ°œλ… 및 μš©μ–΄ μ„€λͺ…

by 5566 2023. 9. 26.

1. λ°μ΄ν„°λ² μ΄μŠ€μ˜ κ°œλ…κ³Ό μ—­ν• 

λ°μ΄ν„°λ² μ΄μŠ€(Database)λŠ” μ²΄κ³„μ μœΌλ‘œ μ •λ¦¬λœ λ°μ΄ν„°μ˜ μ§‘ν•©μœΌλ‘œ, 쑰직 λ˜λŠ” 개인이 ν•„μš”λ‘œ ν•˜λŠ” 정보λ₯Ό 효율적으둜 μ €μž₯, 관리, 검색할 수 있게 ν•΄μ£ΌλŠ” λ„κ΅¬μž…λ‹ˆλ‹€. λ°μ΄ν„°λ² μ΄μŠ€λŠ” ν˜„λŒ€ μ‚¬νšŒμ—μ„œ 맀우 μ€‘μš”ν•œ 역할을 μˆ˜ν–‰ν•˜λ©°, λ‹€μ–‘ν•œ λΆ„μ•Όμ—μ„œ ν™œμš©λ˜κ³  μžˆμŠ΅λ‹ˆλ‹€.

1.1 λ°μ΄ν„°μ˜ κ°œλ…

λ°μ΄ν„°λŠ” 사건, 사물, κ°œλ… λ˜λŠ” μ‚¬λžŒμ— λŒ€ν•œ 사싀과 숫자, 문자 λ“±μ˜ μ›μ‹œμ μΈ 값듀을 μ˜λ―Έν•©λ‹ˆλ‹€. λ°μ΄ν„°λŠ” λ‹€μ–‘ν•œ ν˜•νƒœλ‘œ μ‘΄μž¬ν•˜λ©°, λ°μ΄ν„°λ² μ΄μŠ€λŠ” μ΄λŸ¬ν•œ 데이터λ₯Ό ꡬ쑰적으둜 μ €μž₯ν•˜κ³ , 관리할 수 μžˆλ„λ‘ λ„μ™€μ€λ‹ˆλ‹€.

1.2 λ°μ΄ν„°λ² μ΄μŠ€μ˜ μ—­ν• 

  1. 데이터 μ €μž₯: λ°μ΄ν„°λ² μ΄μŠ€λŠ” λŒ€λŸ‰μ˜ 데이터λ₯Ό ꡬ쑰적으둜 μ €μž₯ν•˜κ³ , 관리할 수 μžˆμŠ΅λ‹ˆλ‹€. 이λ₯Ό 톡해 λ°μ΄ν„°μ˜ 쀑볡을 쀄이고, μΌκ΄€λœ ν˜•μ‹μœΌλ‘œ 데이터λ₯Ό μ €μž₯ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  2. 데이터 검색: λ°μ΄ν„°λ² μ΄μŠ€λŠ” μ €μž₯된 데이터λ₯Ό 효율적으둜 검색할 수 μžˆλŠ” κΈ°λŠ₯을 μ œκ³΅ν•©λ‹ˆλ‹€. 이λ₯Ό 톡해 μ‚¬μš©μžλŠ” ν•„μš”ν•œ 정보λ₯Ό λΉ λ₯΄κ²Œ μ°Ύμ•„λ³Ό 수 μžˆμŠ΅λ‹ˆλ‹€.
  3. 데이터 κ°±μ‹ : λ°μ΄ν„°λ² μ΄μŠ€λŠ” μƒˆλ‘œμš΄ λ°μ΄ν„°μ˜ μΆ”κ°€, κΈ°μ‘΄ λ°μ΄ν„°μ˜ μˆ˜μ •, μ‚­μ œ λ“±μ˜ μž‘μ—…μ„ 톡해 데이터λ₯Ό κ°±μ‹ ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 이λ₯Ό 톡해 λ°μ΄ν„°μ˜ μ‹ λ’°μ„±κ³Ό 일관성을 μœ μ§€ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  4. 데이터 곡유: λ°μ΄ν„°λ² μ΄μŠ€λŠ” μ—¬λŸ¬ μ‚¬μš©μžκ°€ λ™μ‹œμ— μ ‘κ·Όν•˜μ—¬ 데이터λ₯Ό κ³΅μœ ν•  수 μžˆλŠ” ν™˜κ²½μ„ μ œκ³΅ν•©λ‹ˆλ‹€. 이λ₯Ό 톡해 ν˜‘μ—…κ³Ό μ •λ³΄κ³΅μœ λ₯Ό μ›ν™œν•˜κ²Œ ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  5. 데이터 λ³΄μ•ˆ: λ°μ΄ν„°λ² μ΄μŠ€λŠ” μ ‘κ·Όμ œμ–΄, μ•”ν˜Έν™” λ“±μ˜ λ³΄μ•ˆ κΈ°λŠ₯을 μ œκ³΅ν•˜μ—¬ 데이터λ₯Ό μ•ˆμ „ν•˜κ²Œ 관리할 수 μžˆμŠ΅λ‹ˆλ‹€.

λ°μ΄ν„°λ² μ΄μŠ€λŠ” κΈ°μ—…μ˜ μ˜μ‚¬κ²°μ •μ— μ€‘μš”ν•œ 영ν–₯을 λ―ΈμΉ˜λŠ” 데이터λ₯Ό 효율적으둜 κ΄€λ¦¬ν•¨μœΌλ‘œμ¨ κ²½μ˜νš¨μœ¨μ„±μ„ λ†’μ΄λŠ” 역할을 ν•©λ‹ˆλ‹€. λ˜ν•œ λ°μ΄ν„°λ² μ΄μŠ€λŠ” λ‹€μ–‘ν•œ λΆ„μ•Όμ—μ„œ ν™œμš©λ˜κ³  있으며, λŒ€λŸ‰μ˜ 데이터λ₯Ό μ²΄κ³„μ μœΌλ‘œ μ²˜λ¦¬ν•¨μœΌλ‘œμ¨ μ΅œμ‹  기술인 인곡지λŠ₯κ³Ό 빅데이터 뢄석 등에도 ν•„μˆ˜μ μΈ 기반이 되고 μžˆμŠ΅λ‹ˆλ‹€.

2. λ°μ΄ν„°λ² μ΄μŠ€μ˜ μ£Όμš” μš©μ–΄ 및 ꡬ성 μš”μ†Œ

λ°μ΄ν„°λ² μ΄μŠ€(Database)λ₯Ό μ΄ν•΄ν•˜κΈ° μœ„ν•΄μ„œλŠ” λ°μ΄ν„°λ² μ΄μŠ€μ˜ μ£Όμš” μš©μ–΄μ™€ ꡬ성 μš”μ†Œμ— λŒ€ν•œ 이해가 ν•„μš”ν•©λ‹ˆλ‹€.

2.1 μ£Όμš” μš©μ–΄

  1. μ—”ν„°ν‹°(Entity): μ—”ν„°ν‹°λŠ” λ°μ΄ν„°λ² μ΄μŠ€μ—μ„œ μ €μž₯ν•˜κ³ μž ν•˜λŠ” 개체, 즉 μ‹€μ„Έκ³„μ˜ 객체λ₯Ό λ§ν•©λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, 학생, μ œν’ˆ, μ£Όλ¬Έ 등이 μ—”ν„°ν‹°μ˜ μ˜ˆμ‹œμž…λ‹ˆλ‹€.
  2. 속성(Attribute): 속성은 μ—”ν„°ν‹°λ₯Ό κ΅¬μ„±ν•˜λŠ” νŠΉμ„±μ΄λ‚˜ λ°μ΄ν„°μ˜ μ„±μ§ˆμ„ μ˜λ―Έν•©λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, 학생 μ—”ν„°ν‹°μ˜ 속성은 ν•™λ²ˆ, 이름, 성별 등이 될 수 μžˆμŠ΅λ‹ˆλ‹€.
  3. 관계(Relationship): κ΄€κ³„λŠ” μ—”ν„°ν‹° μ‚¬μ΄μ˜ 연결성을 λ‚˜νƒ€λƒ…λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, 학생과 κ°•μ˜λΌλŠ” μ—”ν„°ν‹° μ‚¬μ΄μ—λŠ” μˆ˜κ°• κ΄€κ³„λΌλŠ” 관계가 μžˆμ„ 수 μžˆμŠ΅λ‹ˆλ‹€.
  4. ν‚€(Key): ν‚€λŠ” μ—”ν„°ν‹°λ₯Ό κ΅¬λ³„ν•˜κ±°λ‚˜ 관계λ₯Ό ν˜•μ„±ν•˜λŠ” 데 μ‚¬μš©λ˜λŠ” μ†μ„±μœΌλ‘œ, 각 μ—”ν„°ν‹°λŠ” 일반적으둜 ν•˜λ‚˜ μ΄μƒμ˜ ν‚€λ₯Ό κ°€μ§‘λ‹ˆλ‹€. μ£Όμš” ν‚€λ‘œλŠ” κΈ°λ³Έ ν‚€(Primary Key), 후보킀(Candidate Key), μ™Έλž˜ ν‚€(Foreign Key) 등이 μžˆμŠ΅λ‹ˆλ‹€.

2.2 ꡬ성 μš”μ†Œ

  1. ν…Œμ΄λΈ”(Table): ν…Œμ΄λΈ”μ€ 데이터λ₯Ό μ €μž₯ν•˜κΈ° μœ„ν•œ κ°€μž₯ 기본적인 ꡬ성 μš”μ†Œλ‘œ, ν–‰(Row)κ³Ό μ—΄(Column)둜 이루어진 2차원 κ΅¬μ‘°μž…λ‹ˆλ‹€. 각 행은 λ ˆμ½”λ“œ(Record)라고도 ν•˜λ©°, 각 열은 속성(Attribute)을 μ˜λ―Έν•©λ‹ˆλ‹€.
  2. μŠ€ν‚€λ§ˆ(Schema): μŠ€ν‚€λ§ˆλŠ” λ°μ΄ν„°λ² μ΄μŠ€μ˜ ꡬ쑰λ₯Ό μ •μ˜ν•˜λŠ” κ°œλ…μž…λ‹ˆλ‹€. μŠ€ν‚€λ§ˆλŠ” μ—”ν„°ν‹°, 속성, 관계 λ“±μ˜ ꡬ쑰적인 정보λ₯Ό ν¬ν•¨ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.
  3. 인덱슀(Index): μΈλ±μŠ€λŠ” ν…Œμ΄λΈ”μ˜ νŠΉμ • 열을 κΈ°μ€€μœΌλ‘œ 데이터λ₯Ό 검색 및 μ •λ ¬ν•˜κΈ° μœ„ν•΄ μ‚¬μš©λ˜λŠ” 데이터 κ΅¬μ‘°μž…λ‹ˆλ‹€. 인덱슀λ₯Ό μ‚¬μš©ν•˜λ©΄ λ°μ΄ν„°μ˜ 검색 속도λ₯Ό ν–₯μƒμ‹œν‚¬ 수 μžˆμŠ΅λ‹ˆλ‹€.
  4. λ·°(View): λ·°λŠ” ν•˜λ‚˜ μ΄μƒμ˜ ν…Œμ΄λΈ”μ—μ„œ ν•„μš”ν•œ 데이터λ₯Ό μ„ νƒν•˜μ—¬ κ°€μƒμ˜ ν…Œμ΄λΈ”λ‘œ λ§Œλ“œλŠ” κ°œλ…μž…λ‹ˆλ‹€. λ·°λ₯Ό μ‚¬μš©ν•˜λ©΄ μ‚¬μš©μžκ°€ ν•„μš”ν•œ λ°μ΄ν„°λ§Œμ„ λ³Ό 수 있으며, λ³΄μ•ˆ 및 νŽΈμ˜μ„± μΈ‘λ©΄μ—μ„œ μœ μš©ν•©λ‹ˆλ‹€.
  5. 쿼리(Query): μΏΌλ¦¬λŠ” λ°μ΄ν„°λ² μ΄μŠ€μ—μ„œ 데이터λ₯Ό 검색, μˆ˜μ •, μ‚­μ œ 등을 μˆ˜ν–‰ν•˜κΈ° μœ„ν•΄ μ‚¬μš©λ˜λŠ” λͺ…λ Ήμ–΄λ‚˜ λ¬Έμž₯을 μ˜λ―Έν•©λ‹ˆλ‹€. μΏΌλ¦¬λŠ” SQL(Structured Query Language)을 톡해 μž‘μ„±λ©λ‹ˆλ‹€.

μ΄λŸ¬ν•œ μ£Όμš” μš©μ–΄μ™€ ꡬ성 μš”μ†Œλ₯Ό μ΄ν•΄ν•˜λ©΄ λ°μ΄ν„°λ² μ΄μŠ€μ˜ ꡬ쑰와 λ™μž‘ 원리λ₯Ό μ΄ν•΄ν•˜λŠ” 데 도움이 λ©λ‹ˆλ‹€. λ°μ΄ν„°λ² μ΄μŠ€ 섀계 및 관리에 μžˆμ–΄μ„œ μ΄λŸ¬ν•œ μš”μ†Œλ“€μ„ μ˜¬λ°”λ₯΄κ²Œ μ΄μš©ν•˜λŠ” 것이 μ€‘μš”ν•©λ‹ˆλ‹€.

3. λ°μ΄ν„°λ² μ΄μŠ€ 관리 μ‹œμŠ€ν…œ (DBMS)의 μ—­ν• κ³Ό μ’…λ₯˜

λ°μ΄ν„°λ² μ΄μŠ€ 관리 μ‹œμŠ€ν…œ(Database Management System, DBMS)은 λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό 생성, μ‘°μž‘, κ΄€λ¦¬ν•˜λŠ” μ†Œν”„νŠΈμ›¨μ–΄μž…λ‹ˆλ‹€. DBMSλŠ” λ°μ΄ν„°μ˜ 효율적인 μ €μž₯, 검색, 갱신을 μœ„ν•΄ λ°μ΄ν„°μ˜ ꡬ쑰와 관계λ₯Ό μ •μ˜ν•˜κ³ , λ°μ΄ν„°μ˜ 무결성과 λ³΄μ•ˆμ„ 보μž₯ν•©λ‹ˆλ‹€.

3.1 DBMS의 μ—­ν• 

  1. 데이터 μ •μ˜ μ–Έμ–΄ (Data Definition Language, DDL) 처리: DDL은 λ°μ΄ν„°μ˜ ꡬ쑰λ₯Ό μ •μ˜ν•˜κ³ , λ°μ΄ν„°λ² μ΄μŠ€ 객체λ₯Ό 생성 및 μˆ˜μ •ν•˜λŠ” 역할을 ν•©λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, ν…Œμ΄λΈ”μ˜ 생성 및 λ³€κ²½, 인덱슀의 생성 등이 DDL에 ν•΄λ‹Ήν•©λ‹ˆλ‹€.
  2. 데이터 μ‘°μž‘ μ–Έμ–΄ (Data Manipulation Language, DML) 처리: DML은 λ°μ΄ν„°μ˜ μΆ”κ°€, μˆ˜μ •, μ‚­μ œ, 검색 λ“±μ˜ μž‘μ—…μ„ μˆ˜ν–‰ν•˜κΈ° μœ„ν•œ μ–Έμ–΄μž…λ‹ˆλ‹€. κ°€μž₯ 일반적으둜 μ‚¬μš©λ˜λŠ” DML은 SQL(Structured Query Language)μž…λ‹ˆλ‹€.
  3. 데이터 μ œμ–΄ μ–Έμ–΄ (Data Control Language, DCL) 처리: DCL은 λ°μ΄ν„°λ² μ΄μŠ€μ— μ ‘κ·Ό κΆŒν•œμ„ μ œμ–΄ν•˜λŠ” 역할을 ν•©λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, μ‚¬μš©μžμ˜ κΆŒν•œ λΆ€μ—¬ 및 회수, νŠΈλžœμž­μ…˜ μ œμ–΄ 등이 DCL에 ν•΄λ‹Ήν•©λ‹ˆλ‹€.
  4. λ°μ΄ν„°λ² μ΄μŠ€ λ³΄μ•ˆκ³Ό 무결성 μœ μ§€: DBMSλŠ” λ°μ΄ν„°λ² μ΄μŠ€μ˜ λ³΄μ•ˆμ„ μœ„ν•΄ μ ‘κ·Ό μ œμ–΄, 데이터 μ•”ν˜Έν™” λ“±μ˜ κΈ°λŠ₯을 μ œκ³΅ν•©λ‹ˆλ‹€. λ˜ν•œ, λ°μ΄ν„°μ˜ 무결성을 μœ μ§€ν•˜κΈ° μœ„ν•΄ μ œμ•½ 쑰건을 μ„€μ •ν•˜κ³ , νŠΈλžœμž­μ…˜ 관리와 회볡 κΈ°λŠ₯을 μ œκ³΅ν•©λ‹ˆλ‹€.
  5. λ°μ΄ν„°μ˜ λ°±μ—…κ³Ό 볡ꡬ: DBMSλŠ” λ°μ΄ν„°μ˜ λ°±μ—…κ³Ό 볡ꡬλ₯Ό μœ„ν•œ κΈ°λŠ₯을 μ œκ³΅ν•©λ‹ˆλ‹€. 주기적으둜 데이터λ₯Ό λ°±μ—…ν•˜μ—¬ μ‹œμŠ€ν…œ μž₯μ•  λ°œμƒ μ‹œ 데이터λ₯Ό 볡ꡬ할 수 있으며, μž₯μ•  λŒ€λΉ„λ₯Ό μœ„ν•œ μž¬ν•΄ 볡ꡬ κΈ°λŠ₯도 μ œκ³΅ν•©λ‹ˆλ‹€.

3.2 DBMS의 μ’…λ₯˜

  1. κ³„μΈ΅ν˜• λ°μ΄ν„°λ² μ΄μŠ€ 관리 μ‹œμŠ€ν…œ(Hierarchical DBMS): 데이터λ₯Ό 계측 ꡬ쑰둜 κ΄€λ¦¬ν•˜λŠ” λ°©μ‹μœΌλ‘œ, λΆ€λͺ¨-μžμ‹ 관계λ₯Ό λ‚˜νƒ€λ‚΄λŠ” 트리 ꡬ쑰λ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€. 주둜 κ³ μ •λœ ꡬ쑰의 데이터에 μ ν•©ν•˜λ©°, λ„€νŠΈμ›Œν¬ λͺ¨λΈμ˜ 기반으둜 μ‚¬μš©λ©λ‹ˆλ‹€.
  2. λ„€νŠΈμ›Œν¬ν˜• λ°μ΄ν„°λ² μ΄μŠ€ 관리 μ‹œμŠ€ν…œ(Network DBMS): 데이터λ₯Ό κ·Έλž˜ν”„ ꡬ쑰둜 κ΄€λ¦¬ν•˜λŠ” λ°©μ‹μœΌλ‘œ, μ—¬λŸ¬ 개의 λ…Έλ“œκ°€ μ„œλ‘œ μ—°κ²°λ˜μ–΄ μžˆλŠ” ν˜•νƒœμž…λ‹ˆλ‹€. λ³΅μž‘ν•œ 관계λ₯Ό ν‘œν˜„ν•˜κΈ°μ— μœ λ¦¬ν•˜μ§€λ§Œ, λ°μ΄ν„°μ˜ ꡬ쑰 변경이 μ–΄λ €μšΈ 수 μžˆμŠ΅λ‹ˆλ‹€.
  3. κ΄€κ³„ν˜• λ°μ΄ν„°λ² μ΄μŠ€ 관리 μ‹œμŠ€ν…œ(Relational DBMS): 데이터λ₯Ό ν…Œμ΄λΈ” ν˜•νƒœλ‘œ κ΄€λ¦¬ν•˜λŠ” λ°©μ‹μœΌλ‘œ, ν…Œμ΄λΈ” κ°„μ˜ 관계λ₯Ό 기반으둜 데이터λ₯Ό μ €μž₯ν•˜κ³  κ²€μƒ‰ν•©λ‹ˆλ‹€. κ°€μž₯ 일반적으둜 μ‚¬μš©λ˜λ©°, SQL을 μ‚¬μš©ν•˜μ—¬ 데이터 μ‘°μž‘μ„ ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  4. 객체지ν–₯ λ°μ΄ν„°λ² μ΄μŠ€ 관리 μ‹œμŠ€ν…œ(Object-oriented DBMS): 객체 지ν–₯ κ°œλ…μ„ λ„μž…ν•˜μ—¬ 데이터λ₯Ό κ΄€λ¦¬ν•˜λŠ” λ°©μ‹μœΌλ‘œ, μ‹€μ„Έκ³„μ˜ 객체λ₯Ό 직접 ν‘œν˜„ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 객체지ν–₯ ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄μ™€μ˜ ν˜Έν™˜μ„±μ΄ λ†’μœΌλ©°, λ³΅μž‘ν•œ 관계λ₯Ό ν‘œν˜„ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  5. NoSQL λ°μ΄ν„°λ² μ΄μŠ€ 관리 μ‹œμŠ€ν…œ(NoSQL DBMS): λŒ€μš©λŸ‰μ˜ λΆ„μ‚° 데이터 처리λ₯Ό μœ„ν•΄ μ„€κ³„λœ DBMS둜, κ΄€κ³„ν˜• λ°μ΄ν„°λ² μ΄μŠ€μ˜ μ œμ•½μ„ λ²—μ–΄λ‚œ μœ μ—°ν•œ 데이터 λͺ¨λΈμ„ μ œκ³΅ν•©λ‹ˆλ‹€. λŒ€μš©λŸ‰ 데이터 μ €μž₯, 고속 데이터 검색에 μ ν•©ν•˜λ©°, λΆ„μ‚° μ²˜λ¦¬μ™€ ν™•μž₯성이 κ°•μ μž…λ‹ˆλ‹€.

각각의 DBMSλŠ” νŠΉμ§•κ³Ό μš©λ„μ— 따라 μ„ νƒλ˜λ©°, κΈ°μ—…μ΄λ‚˜ 쑰직의 μš”κ΅¬μ‚¬ν•­μ— 맞좰 μ μ ˆν•œ DBMSλ₯Ό μ„ νƒν•˜μ—¬ ν™œμš©ν•΄μ•Ό ν•©λ‹ˆλ‹€.

4. λ°μ΄ν„°λ² μ΄μŠ€ 섀계와 μ •κ·œν™”

λ°μ΄ν„°λ² μ΄μŠ€ μ„€κ³„λŠ” λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό κ΅¬μ‘°ν™”ν•˜κ³  μ‘°μ§ν™”ν•˜λŠ” 과정을 μ˜λ―Έν•©λ‹ˆλ‹€. λ°μ΄ν„°λ² μ΄μŠ€ μ„€κ³„λŠ” λ°μ΄ν„°μ˜ 효율적인 μ €μž₯, 검색, 갱신을 μœ„ν•˜μ—¬ μ—”ν„°ν‹°, 속성, 관계 등을 μ •μ˜ν•˜κ³  κ΅¬μ„±ν•©λ‹ˆλ‹€. 이 κ³Όμ •μ—μ„œ μ •κ·œν™”(Normalization)λΌλŠ” κ°œλ…μ΄ μ€‘μš”ν•˜κ²Œ μ‚¬μš©λ©λ‹ˆλ‹€.

4.1 λ°μ΄ν„°λ² μ΄μŠ€ μ„€κ³„μ˜ 단계

  1. μš”κ΅¬μ‚¬ν•­ 뢄석: λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό κ΅¬μΆ•ν•˜κΈ° μœ„ν•œ μš”κ΅¬μ‚¬ν•­μ„ μˆ˜μ§‘ν•˜κ³  λΆ„μ„ν•©λ‹ˆλ‹€. 이 λ‹¨κ³„μ—μ„œ 업무 ν”„λ‘œμ„ΈμŠ€μ™€ λ°μ΄ν„°μ˜ 관련성을 νŒŒμ•…ν•˜μ—¬ λ°μ΄ν„°λ² μ΄μŠ€μ— ν•„μš”ν•œ 엔터티와 속성을 λ„μΆœν•©λ‹ˆλ‹€.
  2. κ°œλ…μ  섀계: μš”κ΅¬μ‚¬ν•­μ„ λ°”νƒ•μœΌλ‘œ μ—”ν„°ν‹°, 속성, 관계 λ“±μ˜ κ°œλ…μ  ꡬ쑰λ₯Ό μ„€κ³„ν•©λ‹ˆλ‹€. 이 λ‹¨κ³„μ—μ„œ κ°œλ…μ  λͺ¨λΈμ„ μ‚¬μš©ν•˜μ—¬ ꡬ쑰적 ν‘œν˜„μ„ μ‹œλ„ν•©λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, 개체-관계(ER) λͺ¨λΈμ„ μ‚¬μš©ν•©λ‹ˆλ‹€.
  3. 논리적 섀계: κ°œλ…μ  섀계λ₯Ό λ°”νƒ•μœΌλ‘œ μ‹€μ œμ μΈ λ°μ΄ν„°λ² μ΄μŠ€ ꡬ쑰λ₯Ό μ„€κ³„ν•©λ‹ˆλ‹€. 이 λ‹¨κ³„μ—μ„œ μ†μ„±μ˜ 데이터 νƒ€μž…κ³Ό 크기, κ΄€κ³„μ˜ ν‚€ 등을 κ²°μ •ν•©λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, κ΄€κ³„ν˜• λ°μ΄ν„°λ² μ΄μŠ€μ—μ„œ ν…Œμ΄λΈ”κ³Ό κ΄€κ³„μ˜ μ •μ˜λ₯Ό μˆ˜ν–‰ν•©λ‹ˆλ‹€.
  4. 물리적 섀계: 논리적 섀계λ₯Ό λ°”νƒ•μœΌλ‘œ λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό κ΅¬ν˜„ν•˜λŠ” 방법을 κ²°μ •ν•˜κ³ , 인덱슀, μ ‘κ·Ό 경둜 λ“±μ˜ 물리적인 ꡬ쑰λ₯Ό μ„€κ³„ν•©λ‹ˆλ‹€. 이 λ‹¨κ³„μ—μ„œ λ°μ΄ν„°μ˜ μ €μž₯ 방식, 무결성 μ œμ•½ 쑰건 등을 μ •μ˜ν•©λ‹ˆλ‹€.

4.2 μ •κ·œν™”μ˜ κ°œλ…κ³Ό λͺ©μ 

μ •κ·œν™”λŠ” λ°μ΄ν„°λ² μ΄μŠ€ 섀계 λ‹¨κ³„μ—μ„œ 쀑볡성을 μ œκ±°ν•˜κ³  λ°μ΄ν„°μ˜ 일관성과 무결성을 보μž₯ν•˜κΈ° μœ„ν•΄ μˆ˜ν–‰λ˜λŠ” κ³Όμ •μž…λ‹ˆλ‹€. μ •κ·œν™”λŠ” κ΄€κ³„ν˜• λ°μ΄ν„°λ² μ΄μŠ€μ˜ ν…Œμ΄λΈ”μ„ λΆ„ν•΄ν•˜μ—¬ μž‘μ€ λΆ€λΆ„ ν…Œμ΄λΈ”λ‘œ λ‚˜λˆ„λŠ” μž‘μ—…μž…λ‹ˆλ‹€.

μ •κ·œν™”μ˜ μ£Όμš” λͺ©μ μ€ λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€:

  1. 쀑볡성 제거: λ°μ΄ν„°μ˜ 쀑볡을 μ΅œμ†Œν™”ν•˜μ—¬ μ €μž₯ 곡간을 μ ˆμ•½ν•˜κ³  λ°μ΄ν„°μ˜ 일관성을 μœ μ§€ν•©λ‹ˆλ‹€.
  2. κ°±μ‹  이상 방지: 데이터λ₯Ό λ³€κ²½ν•  λ•Œ λ°œμƒν•  수 μžˆλŠ” κ°±μ‹  이상(Insertion, Deletion, Modification Anomalies)을 λ°©μ§€ν•©λ‹ˆλ‹€.
  3. 쿼리 μ„±λŠ₯ ν–₯상: μ •κ·œν™”λœ ν…Œμ΄λΈ”μ€ 보닀 μž‘μ€ 크기와 ꡬ쑰λ₯Ό κ°€μ§€λ―€λ‘œ 쿼리의 처리 속도λ₯Ό ν–₯μƒμ‹œν‚΅λ‹ˆλ‹€.

4.3 μ •κ·œν™”μ˜ μ’…λ₯˜

μ •κ·œν™”λŠ” 1μ°¨ μ •κ·œν™”λΆ€ν„° 5μ°¨ μ •κ·œν™”κΉŒμ§€ 쑰건을 λ§Œμ‘±ν•˜λŠ” μˆœμ„œλŒ€λ‘œ μ§„ν–‰λ©λ‹ˆλ‹€. 일반적으둜 3μ°¨ μ •κ·œν™”κΉŒμ§€ μˆ˜ν–‰λ˜λ©°, 4차와 5μ°¨λŠ” νŠΉμˆ˜ν•œ μƒν™©μ—μ„œ ν•„μš”ν•©λ‹ˆλ‹€. 각각의 μ •κ·œν™” μˆ˜μ€€μ€ λ‹€μŒκ³Ό 같은 기쀀을 κ°€μ§‘λ‹ˆλ‹€.

  1. 1μ°¨ μ •κ·œν™”(1NF): ν…Œμ΄λΈ”μ—λŠ” μ›μžμ μΈ μ†μ„±λ§Œ μ‘΄μž¬ν•˜λ©°, 각 ν–‰λ§ˆλ‹€ μ‹λ³„μžλ₯Ό κ°€μ Έμ•Ό ν•©λ‹ˆλ‹€.
  2. 2μ°¨ μ •κ·œν™”(2NF): ν…Œμ΄λΈ”μ΄ 1μ°¨ μ •κ·œν™”λ₯Ό λ§Œμ‘±ν•˜κ³ , λΆ€λΆ„ ν•¨μˆ˜μ  쒅속성을 μ œκ±°ν•΄μ•Ό ν•©λ‹ˆλ‹€. 즉, λͺ¨λ“  속성이 후보 킀에 λŒ€ν•΄ μ™„μ „ ν•¨μˆ˜μ  쒅속성을 κ°€μ Έμ•Ό ν•©λ‹ˆλ‹€.
  3. 3μ°¨ μ •κ·œν™”(3NF): ν…Œμ΄λΈ”μ΄ 2μ°¨ μ •κ·œν™”λ₯Ό λ§Œμ‘±ν•˜κ³ , 이행적 ν•¨μˆ˜μ  쒅속성을 μ œκ±°ν•΄μ•Ό ν•©λ‹ˆλ‹€. ν…Œμ΄λΈ”μ— μžˆλŠ” λͺ¨λ“  쒅속성이 후보 ν‚€λ₯Ό 기초둜 ν•΄μ•Ό ν•©λ‹ˆλ‹€.
  4. 4μ°¨ μ •κ·œν™”(4NF): 닀쀑 κ°’ 쒅속성을 μ œκ±°ν•˜κΈ° μœ„ν•΄ μˆ˜ν–‰λ©λ‹ˆλ‹€. ν…Œμ΄λΈ”μ˜ λͺ¨λ“  닀쀑 κ°’ 쒅속성이 후보 ν‚€λ₯Ό 기초둜 ν•˜λŠ” ν…Œμ΄λΈ”λ‘œ λΆ„ν•΄λ˜μ–΄μ•Ό ν•©λ‹ˆλ‹€.
  5. 5μ°¨ μ •κ·œν™”(5NF): 쑰인 쒅속성을 μ œκ±°ν•˜κΈ° μœ„ν•΄ μˆ˜ν–‰λ©λ‹ˆλ‹€. ν…Œμ΄λΈ”μ΄ 더 이상 λΆ„ν•΄λ˜μ§€ μ•Šλ„λ‘ μ΅œμ ν™”λ˜μ–΄μ•Ό ν•©λ‹ˆλ‹€.

μ •κ·œν™”λŠ” λ°μ΄ν„°μ˜ ꡬ쑰λ₯Ό λ…Όλ¦¬μ μœΌλ‘œ λΆ„μ„ν•˜κ³  μ΅œμ ν™”ν•˜λŠ” κ³Όμ •μž…λ‹ˆλ‹€. 이λ₯Ό 톡해 λ°μ΄ν„°μ˜ 일관성, 무결성을 μœ μ§€ν•˜λ©° 쿼리의 μ„±λŠ₯을 ν–₯μƒμ‹œν‚¬ 수 μžˆμŠ΅λ‹ˆλ‹€. λ°μ΄ν„°λ² μ΄μŠ€ 섀계 μ‹œμ—λŠ” μ •κ·œν™”λ₯Ό μ μš©ν•˜μ—¬ λ°μ΄ν„°μ˜ ν’ˆμ§ˆμ„ ν–₯μƒμ‹œν‚€λŠ” 것이 μ€‘μš”ν•©λ‹ˆλ‹€.

5. λ°μ΄ν„°λ² μ΄μŠ€μ˜ λ³΄μ•ˆκ³Ό 데이터 μ™„μ „μ„± μœ μ§€

λ°μ΄ν„°λ² μ΄μŠ€μ˜ λ³΄μ•ˆκ³Ό λ°μ΄ν„°μ˜ 완전성은 μ€‘μš”ν•œ μš”μ†Œλ‘œμ„œ λ°μ΄ν„°λ² μ΄μŠ€μ˜ μ•ˆμ „ν•œ μš΄μ˜μ„ μœ„ν•΄ ν•„μˆ˜μ μΈ λΆ€λΆ„μž…λ‹ˆλ‹€. λ°μ΄ν„°λ² μ΄μŠ€λŠ” κΈ°μ—…μ΄λ‚˜ 쑰직의 μ€‘μš”ν•œ 정보λ₯Ό λ‹΄κ³  μžˆμœΌλ―€λ‘œ, 이λ₯Ό λ³΄ν˜Έν•˜κ³  무결성을 μœ μ§€ν•˜λŠ” 것은 맀우 μ€‘μš”ν•©λ‹ˆλ‹€.

5.1 λ°μ΄ν„°λ² μ΄μŠ€ λ³΄μ•ˆ

λ°μ΄ν„°λ² μ΄μŠ€ λ³΄μ•ˆμ€ λ°μ΄ν„°λ² μ΄μŠ€μ— μ €μž₯된 정보λ₯Ό μ•ˆμ „ν•˜κ²Œ λ³΄ν˜Έν•˜κΈ° μœ„ν•œ 쑰치λ₯Ό μ΄μΉ­ν•©λ‹ˆλ‹€. λ°μ΄ν„°λ² μ΄μŠ€μ˜ λ³΄μ•ˆμ€ λ‹€μŒκ³Ό 같은 μΈ‘λ©΄μ—μ„œ κ³ λ €λ˜μ–΄μ•Ό ν•©λ‹ˆλ‹€.

  1. μ ‘κ·Ό μ œμ–΄: λ°μ΄ν„°λ² μ΄μŠ€μ— μ ‘κ·Όν•˜λŠ” κΆŒν•œμ„ κ΄€λ¦¬ν•©λ‹ˆλ‹€. μ‚¬μš©μžμ—κ²Œ ν•„μš”ν•œ μ΅œμ†Œν•œμ˜ κΆŒν•œλ§Œ λΆ€μ—¬ν•˜μ—¬ λΆˆν•„μš”ν•œ 접근을 μ°¨λ‹¨ν•˜κ³ , 인증과 κΆŒν•œ λΆ€μ—¬λ₯Ό 톡해 무단 접근을 λ°©μ§€ν•©λ‹ˆλ‹€.
  2. 데이터 μ•”ν˜Έν™”: λ°μ΄ν„°λ² μ΄μŠ€μ— μ €μž₯된 데이터λ₯Ό μ•”ν˜Έν™”ν•˜μ—¬ μ™ΈλΆ€μ—μ„œμ˜ λΆˆλ²•μ μΈ 접근에 λŒ€λΉ„ν•©λ‹ˆλ‹€. μ•”ν˜Έν™”λœ λ°μ΄ν„°λŠ” μΈκ°€λœ μ‚¬μš©μžλ§Œμ΄ ν•΄λ…ν•˜μ—¬ μ ‘κ·Όν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  3. 감사 좔적: λ°μ΄ν„°λ² μ΄μŠ€μ˜ λͺ¨λ“  μ ‘κ·Ό 기둝을 μΆ”μ ν•˜κ³  κΈ°λ‘ν•¨μœΌλ‘œμ¨ 무단 μ ‘κ·Όμ΄λ‚˜ 곡격 흔적을 νŒŒμ•…ν•  수 μžˆλ„λ‘ ν•©λ‹ˆλ‹€. μ΄λŠ” 잠재적인 μœ„ν˜‘μ„ μ‹λ³„ν•˜κ³  λŒ€μ‘ν•  수 μžˆλŠ” λ‹¨μ„œλ‘œ ν™œμš©λ  수 μžˆμŠ΅λ‹ˆλ‹€.
  4. μ™ΈλΆ€ μΉ¨μž… 방지: λ°©ν™”λ²½ 및 μΉ¨μž… 탐지 μ‹œμŠ€ν…œ 등을 μ‚¬μš©ν•˜μ—¬ μ™ΈλΆ€μ—μ„œμ˜ λΆˆλ²•μ μΈ μΉ¨μž…μ„ μ°¨λ‹¨ν•˜κ³ , λ°μ΄ν„°λ² μ΄μŠ€μ— λŒ€ν•œ 곡격을 λ°©μ–΄ν•©λ‹ˆλ‹€.

5.2 데이터 μ™„μ „μ„± μœ μ§€

λ°μ΄ν„°μ˜ 완전성은 λ°μ΄ν„°λ² μ΄μŠ€μ— μ €μž₯된 정보가 κ°€λŠ₯ν•œ ν•œ μ •ν™•ν•˜κ³  λ¬΄κ²°ν•˜κ²Œ μœ μ§€λ˜λŠ” 것을 μ˜λ―Έν•©λ‹ˆλ‹€. λ°μ΄ν„°λ² μ΄μŠ€μ˜ 데이터 완전성을 μœ μ§€ν•˜κΈ° μœ„ν•œ μ‘°μΉ˜λŠ” λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

  1. 무결성 μ œμ•½ 쑰건: λ°μ΄ν„°λ² μ΄μŠ€μ— μ €μž₯된 데이터가 정해진 μ œμ•½ 쑰건에 따라 λ¬΄κ²°ν•˜κ²Œ μœ μ§€λ˜λ„λ‘ ν•©λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, 프라이머리 ν‚€, μ™Έλž˜ ν‚€, 고유 μ œμ•½ 쑰건 등을 μ‚¬μš©ν•˜μ—¬ λ°μ΄ν„°μ˜ 일관성을 κ°•μ œν•©λ‹ˆλ‹€.
  2. νŠΈλžœμž­μ…˜ 관리: νŠΈλžœμž­μ…˜μ€ λ°μ΄ν„°λ² μ΄μŠ€μ˜ 논리적인 μž‘μ—… λ‹¨μœ„μž…λ‹ˆλ‹€. νŠΈλžœμž­μ…˜ 처리λ₯Ό 톡해 λ°μ΄ν„°λ² μ΄μŠ€ κ°±μ‹  쀑에 λ°œμƒν•  수 μžˆλŠ” 였λ₯˜λ‚˜ 쀑간 μƒνƒœλ₯Ό λ°©μ§€ν•˜κ³ , 일관성을 μœ μ§€ν•©λ‹ˆλ‹€.
  3. 회볡 κΈ°λŠ₯: λ°μ΄ν„°λ² μ΄μŠ€μ— μ €μž₯된 λ°μ΄ν„°μ˜ 손싀 λ˜λŠ” 손상을 λ°©μ§€ν•˜κΈ° μœ„ν•΄ λ°±μ—…κ³Ό 볡ꡬ κΈ°λŠ₯을 μ œκ³΅ν•©λ‹ˆλ‹€. 주기적으둜 λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό λ°±μ—…ν•˜μ—¬ μ‹œμŠ€ν…œ μž₯μ• κ°€ λ°œμƒν–ˆμ„ λ•Œ 데이터λ₯Ό 볡ꡬ할 수 μžˆμŠ΅λ‹ˆλ‹€.
  4. μ—λŸ¬ 감지 및 μˆ˜μ •: λ°μ΄ν„°λ² μ΄μŠ€ μ‹œμŠ€ν…œμ€ λ°μ΄ν„°μ˜ μ—λŸ¬λ₯Ό κ°μ§€ν•˜κ³  이λ₯Ό μˆ˜μ •ν•˜λŠ” κΈ°λŠ₯을 μ œκ³΅ν•©λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, λΉ„νŠΈ μ—λŸ¬ κ²€μΆœ 및 μˆ˜μ •, λ°μ΄ν„°λ² μ΄μŠ€ 무결성 였λ₯˜ κ²€μΆœ 등이 이에 ν•΄λ‹Ήλ©λ‹ˆλ‹€.

λ°μ΄ν„°λ² μ΄μŠ€μ˜ λ³΄μ•ˆκ³Ό λ°μ΄ν„°μ˜ 완전성은 λ°μ΄ν„°μ˜ μ€‘μš”μ„±κ³Ό 기밀성을 κ³ λ €ν•˜μ—¬ μ μ ˆν•œ 쑰치λ₯Ό μ·¨ν•΄μ•Ό ν•˜λŠ” μ€‘μš”ν•œ λ¬Έμ œμž…λ‹ˆλ‹€. λ°μ΄ν„°λ² μ΄μŠ€ κ΄€λ¦¬μžλŠ” μ΄λŸ¬ν•œ 츑면을 κ³ λ €ν•˜μ—¬ λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό μš΄μ˜ν•˜κ³  λ³΄ν˜Έν•˜λŠ” 것이 ν•„μš”ν•©λ‹ˆλ‹€.

λŒ“κΈ€