これはかなり基本的な質問です、私は初心者です:)データベース設計:完全なトランザクション履歴と現在のステータスのクイックルックアップを保存しますか?
私はDjango & MySQLを使用してライブラリデータベースを構築しています。データベースはの本とのユーザーとのトランザクションの概念を持ちます。ここではユーザーが書籍を取り出したり返ったりします。
私のことができるようにする必要があります。
- 特定の書籍のための取引の完全なリストを取得する - それをチェックアウトしたときに
- はすぐに、書籍の現在のステータスを取得誰。
私はこのようなテーブルを使用することを考えていましたが、このデザインに問題がありますか?
class Book(models.Model):
name = models.CharField()
class User(models.Model):
name = models.CharField()
TRANSACTION_TYPES = (
('I', 'Check in'),
('O', 'Check out'),
)
class Transaction(models.Model):
book = models.ForeignKey(Book)
user = models.ForeignKey(User)
type = models.CharField(max_length=1, choices=TRANSACTION_CHOICES)
date_added = models.DateTimeField(auto_now_add=True)
これは、トランザクションの完全なリストを取得するために問題なく動作します。しかし、私が本の現在の状態を知りたいのであれば、その本の取引をすべて検索し、最新のものを見つけなければならないでしょう。
これは合理的ですか?それは将来の証拠ですか?
私はデータベースがそれほど大きくなるとは考えていませんが、データベースの標準化を解除することなく、書籍の現在の状態を保存する効率的な方法はありますか?
感謝していただきありがとうございます。