- 질문
- 주식 매매 관리 프로그램을 만들어 보려고 하고 있어. python을 이용해서 만들려고 하는데 주식 종목별로 계좌 잔고, 매매내역, 수익현황, 배당금 수령 현황등을 저장하는 database를 만들려고 하는데, database schema를 제안해줘.
- 답변
- 흥미로운 프로젝트네요! 주식 매매 관리 프로그램을 위해 필요한 데이터베이스 스키마를 제안드릴게요. 아래는 기본적으로 필요한 테이블과 각 테이블의 구조입니다:
테이블: 계좌(Account)
필드 이름데이터 타입설명
account_id | INTEGER | 기본 키 |
account_name | TEXT | 계좌 이름 |
balance | REAL | 계좌 잔고 |
creation_date | DATE | 계좌 생성일 |
테이블: 주식 종목(Stock)
필드 이름데이터 타입설명
stock_id | INTEGER | 기본 키 |
stock_symbol | TEXT | 종목 코드 |
stock_name | TEXT | 종목 이름 |
테이블: 매매 내역(Transaction)
필드 이름데이터 타입설명
transaction_id | INTEGER | 기본 키 |
account_id | INTEGER | 계좌 ID (외래 키) |
stock_id | INTEGER | 주식 종목 ID (외래 키) |
transaction_date | DATE | 거래 날짜 |
transaction_type | TEXT | 거래 유형 (매수/매도) |
quantity | INTEGER | 거래 수량 |
price | REAL | 거래 가격 |
테이블: 수익 현황(Profit)
필드 이름데이터 타입설명
profit_id | INTEGER | 기본 키 |
account_id | INTEGER | 계좌 ID (외래 키) |
stock_id | INTEGER | 주식 종목 ID (외래 키) |
total_invested | REAL | 총 투자 금액 |
total_return | REAL | 총 수익 금액 |
profit_date | DATE | 수익 계산 날짜 |
테이블: 배당금 수령 현황(Dividend)
필드 이름데이터 타입설명
dividend_id | INTEGER | 기본 키 |
account_id | INTEGER | 계좌 ID (외래 키) |
stock_id | INTEGER | 주식 종목 ID (외래 키) |
dividend_amount | REAL | 배당금 금액 |
dividend_date | DATE | 배당금 수령 날짜 |
이 스키마는 주식 매매 관리 프로그램을 구축하는 데 필요한 기본적인 데이터베이스 구조를 제공합니다. 이를 기반으로 Python과 SQL을 사용해 데이터베이스를 생성하고 관리할 수 있습니다. 추가적으로 필요한 기능이나 데이터가 있다면 언제든지 말씀해 주세요! 😊
- 질문
- 제안해준 스키마를 이용해서 django를 이용해 backend server를 만들려고 하는데 model.py를 어떻게 만들면 좋을지 기본 코드를 제공해줘
- 답변
- Django를 사용해서 주식 매매 관리 프로그램의 backend server를 만들기 위해 model.py 파일의 기본 코드를 제공해 드릴게요. 아래는 제안해드린 스키마를 기반으로 한 Django 모델들입니다.
python
from django.db import models
class Account(models.Model):
account_name = models.CharField(max_length=100)
balance = models.DecimalField(max_digits=20, decimal_places=2)
creation_date = models.DateField()
def __str__(self):
return self.account_name
class Stock(models.Model):
stock_symbol = models.CharField(max_length=10)
stock_name = models.CharField(max_length=100)
def __str__(self):
return self.stock_name
class Transaction(models.Model):
account = models.ForeignKey(Account, on_delete=models.CASCADE)
stock = models.ForeignKey(Stock, on_delete=models.CASCADE)
transaction_date = models.DateField()
transaction_type = models.CharField(max_length=4, choices=(('BUY', '매수'), ('SELL', '매도')))
quantity = models.IntegerField()
price = models.DecimalField(max_digits=20, decimal_places=2)
def __str__(self):
return f'{self.account.account_name} - {self.stock.stock_name} - {self.transaction_type}'
class Profit(models.Model):
account = models.ForeignKey(Account, on_delete=models.CASCADE)
stock = models.ForeignKey(Stock, on_delete=models.CASCADE)
total_invested = models.DecimalField(max_digits=20, decimal_places=2)
total_return = models.DecimalField(max_digits=20, decimal_places=2)
profit_date = models.DateField()
def __str__(self):
return f'{self.account.account_name} - {self.stock.stock_name}'
class Dividend(models.Model):
account = models.ForeignKey(Account, on_delete=models.CASCADE)
stock = models.ForeignKey(Stock, on_delete=models.CASCADE)
dividend_amount = models.DecimalField(max_digits=20, decimal_places=2)
dividend_date = models.DateField()
def __str__(self):
return f'{self.account.account_name} - {self.stock.stock_name}'
위의 코드에는 5개의 모델이 포함되어 있으며, 각 모델은 데이터베이스 테이블에 매핑됩니다. ForeignKey를 사용하여 모델 간의 관계를 정의하였고, __str__ 메서드를 사용하여 객체의 문자열 표현을 정의했습니다.
이제, 이 모델들을 관리할 Django admin 패널이나 다른 로직을 추가하여 완전한 백엔드 서버를 구축하실 수 있습니다. 추가적인 도움이 필요하시면 언제든지 말씀해 주세요! 😊
반응형
'my-hts' 카테고리의 다른 글
Free react dashboard (0) | 2024.11.21 |
---|---|
Stock 관련 참고할 만한 사이트들을 모아보자 (0) | 2024.11.21 |
화면에 무엇을 보여 줄 것인가... (2) | 2024.11.21 |
HTS App 을 만들어 보기로 했다. (0) | 2024.11.20 |