[파이썬] 파이썬을 이용한 데이터 모델링 샘플 프로젝트

소개

데이터 모델링은 데이터베이스 설계와 관련된 중요한 단계입니다. 이는 데이터를 구조적으로 조직화하고 효율적인 데이터베이스 시스템을 구축하는 데 도움이 되는 과정입니다. 이번 블로그 포스트에서는 파이썬을 사용하여 데이터 모델링을 수행하는 샘플 프로젝트를 소개하겠습니다.

요구사항

이 프로젝트에서는 다음과 같은 요구사항이 있습니다:

  1. 학생(Student)에 대한 정보를 저장할 수 있어야 합니다. 이에는 이름, 나이, 성별 등이 포함됩니다.
  2. 각 학생은 하나 이상의 과목(Subject)을 수강해야 합니다. 각 과목은 고유한 식별자, 이름, 성적 등의 정보를 가지고 있어야 합니다.
  3. 성적은 A, B, C, D, F와 같은 등급으로 표시되어야 합니다.
  4. 학생마다 수강한 과목에 대한 성적을 저장하고 조회할 수 있어야 합니다.

데이터 모델링

위의 요구사항을 바탕으로 다음과 같이 데이터 모델을 설계할 수 있습니다:

Student 테이블

| Column | Type | Description | |————|———|————————–| | id | INTEGER | 학생 식별자 | | name | TEXT | 학생 이름 | | age | INTEGER | 학생 나이 | | gender | TEXT | 학생 성별 |

Subject 테이블

| Column | Type | Description | |————|———|————————–| | id | INTEGER | 과목 식별자 | | name | TEXT | 과목 이름 |

Grade 테이블

| Column | Type | Description | |————|———|————————–| | id | INTEGER | 성적 식별자 | | student_id | INTEGER | 학생 식별자(Foreign Key) | | subject_id | INTEGER | 과목 식별자(Foreign Key) | | grade | TEXT | 성적 |

파이썬 코드 예제

이제 파이썬을 사용하여 위에서 설계한 데이터 모델을 구현해보겠습니다.

import sqlite3

# 데이터베이스 연결
conn = sqlite3.connect('school.db')
cursor = conn.cursor()

# 학생 테이블 생성
cursor.execute('''CREATE TABLE IF NOT EXISTS Student (
                    id INTEGER PRIMARY KEY AUTOINCREMENT,
                    name TEXT,
                    age INTEGER,
                    gender TEXT
                )''')

# 과목 테이블 생성
cursor.execute('''CREATE TABLE IF NOT EXISTS Subject (
                    id INTEGER PRIMARY KEY AUTOINCREMENT,
                    name TEXT
                )''')

# 성적 테이블 생성
cursor.execute('''CREATE TABLE IF NOT EXISTS Grade (
                    id INTEGER PRIMARY KEY AUTOINCREMENT,
                    student_id INTEGER,
                    subject_id INTEGER,
                    grade TEXT,
                    FOREIGN KEY (student_id) REFERENCES Student (id),
                    FOREIGN KEY (subject_id) REFERENCES Subject (id)
                )''')

# 학생 추가
cursor.execute("INSERT INTO Student (name, age, gender) VALUES (?, ?, ?)", ('John', 18, 'M'))
cursor.execute("INSERT INTO Student (name, age, gender) VALUES (?, ?, ?)", ('Emily', 17, 'F'))

# 과목 추가
cursor.execute("INSERT INTO Subject (name) VALUES (?)", ('Math',))
cursor.execute("INSERT INTO Subject (name) VALUES (?)", ('English',))

# 성적 추가
cursor.execute("INSERT INTO Grade (student_id, subject_id, grade) VALUES (?, ?, ?)", (1, 1, 'A'))
cursor.execute("INSERT INTO Grade (student_id, subject_id, grade) VALUES (?, ?, ?)", (2, 2, 'B'))

# 변경사항 저장
conn.commit()

# 성적 조회
cursor.execute('''SELECT Student.name, Subject.name, Grade.grade
                    FROM Grade
                    INNER JOIN Student ON Grade.student_id = Student.id
                    INNER JOIN Subject ON Grade.subject_id = Subject.id''')
results = cursor.fetchall()

# 결과 출력
for result in results:
    print("학생 이름:", result[0])
    print("과목 이름:", result[1])
    print("성적:", result[2])
    print()

# 연결 종료
cursor.close()
conn.close()

위의 코드는 SQLite 데이터베이스를 사용하여 학생, 과목 및 성적에 대한 데이터를 생성하고 조회하는 예제입니다. 코드를 실행하면 학생 이름, 과목 이름 및 성적을 화면에 출력할 수 있습니다.

결론

이 블로그 포스트에서는 파이썬을 사용하여 데이터 모델링을 수행하는 샘플 프로젝트를 소개했습니다. 데이터 모델링은 데이터의 구조를 조직화하고 데이터베이스 시스템을 설계하는 데 중요한 과정입니다. 파이썬을 사용하여 데이터 모델을 만들고 관리하는 것은 효율적이고 유연한 방법입니다. 이를 통해 데이터 관리 작업을 더욱 용이하게 수행할 수 있습니다.