这是一个非常基本的问题,我是初学者:)
我正在使用Django& amp;来构建一个库数据库。 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)
这样可以获得完整的交易清单。但是,如果我想获得一本书的当前状态,我必须搜索所有书籍的交易并找到最新的。
这是明智的吗?它是面向未来的吗?我不预见数据库会变得那么大,但是有没有更有效的方法来存储图书的当前状态,而不会使数据库失真?
感谢所有建议!
答案 0 :(得分:1)
精心设计的数据库不会搜索所有图书的交易以查找最新的。至少,数据库设计者将创建索引,dbms将(可能)使用它们。
MySQL可以做到这一点;我对Django不太熟悉,知道它是否足够聪明,让MySQL能够做到这一点。如果不是,我会有点惊讶。
关于它是否明智和未来证明 - 来自我当地的图书馆我查阅了书籍,CD(音乐和书籍),盒式磁带,地图,DVD,视频游戏,教育软件,玩具和框架艺术品。