소개
데이터 모델링은 데이터베이스 설계와 관련된 중요한 단계입니다. 이는 데이터를 구조적으로 조직화하고 효율적인 데이터베이스 시스템을 구축하는 데 도움이 되는 과정입니다. 이번 블로그 포스트에서는 파이썬을 사용하여 데이터 모델링을 수행하는 샘플 프로젝트를 소개하겠습니다.
요구사항
이 프로젝트에서는 다음과 같은 요구사항이 있습니다:
- 학생(Student)에 대한 정보를 저장할 수 있어야 합니다. 이에는 이름, 나이, 성별 등이 포함됩니다.
- 각 학생은 하나 이상의 과목(Subject)을 수강해야 합니다. 각 과목은 고유한 식별자, 이름, 성적 등의 정보를 가지고 있어야 합니다.
- 성적은 A, B, C, D, F와 같은 등급으로 표시되어야 합니다.
- 학생마다 수강한 과목에 대한 성적을 저장하고 조회할 수 있어야 합니다.
데이터 모델링
위의 요구사항을 바탕으로 다음과 같이 데이터 모델을 설계할 수 있습니다:
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 데이터베이스를 사용하여 학생, 과목 및 성적에 대한 데이터를 생성하고 조회하는 예제입니다. 코드를 실행하면 학생 이름, 과목 이름 및 성적을 화면에 출력할 수 있습니다.
결론
이 블로그 포스트에서는 파이썬을 사용하여 데이터 모델링을 수행하는 샘플 프로젝트를 소개했습니다. 데이터 모델링은 데이터의 구조를 조직화하고 데이터베이스 시스템을 설계하는 데 중요한 과정입니다. 파이썬을 사용하여 데이터 모델을 만들고 관리하는 것은 효율적이고 유연한 방법입니다. 이를 통해 데이터 관리 작업을 더욱 용이하게 수행할 수 있습니다.