• 질문
    • 주식 매매 관리 프로그램을 만들어 보려고 하고 있어. 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 패널이나 다른 로직을 추가하여 완전한 백엔드 서버를 구축하실 수 있습니다. 추가적인 도움이 필요하시면 언제든지 말씀해 주세요! 😊

반응형

+ Recent posts