Sql 仅引用多个可能表中的一个
我正在将我设计拙劣的SQLite数据库迁移到Peewee ORM,并且很难找到适合以下场景的好方法 我有一个DVD表来保存有关版本本身的所有信息,还有描述DVD状态的tw表。这两个表都有其状态的特定详细信息。 代码示例:Sql 仅引用多个可能表中的一个,sql,sqlite,peewee,Sql,Sqlite,Peewee,我正在将我设计拙劣的SQLite数据库迁移到Peewee ORM,并且很难找到适合以下场景的好方法 我有一个DVD表来保存有关版本本身的所有信息,还有描述DVD状态的tw表。这两个表都有其状态的特定详细信息。 代码示例: class DVD(BaseModel): title = TextField() # More info like this class Sold(BaseModel): date = DateField() buyer = TextFiel
class DVD(BaseModel):
title = TextField()
# More info like this
class Sold(BaseModel):
date = DateField()
buyer = TextField()
class Onloan(BaseModel):
loaned = DateField()
back = DateField()
person = TextField()
如何正确地将一个状态表链接到DVD对象,以便通过DVD访问状态数据。例如,status?您可以添加一个外键 例如,如果一张DVD只能有一个
已售出
状态,您可以这样写:
class Sold(BaseModel):
date = DateField()
buyer = TextField()
class DVD(BaseModel):
title = TextField()
sold = ForeignKeyField(Sold, related_name='dvds')
另一方面,如果DVD可以多次借出,您可能会写:
class DVD(BaseModel):
title = TextField()
class Onloan(BaseModel):
loaned = DateField()
back = DateField()
person = TextField()
dvd = ForeignKeyField(DVD, related_name='loans')
当然可以,但是第一个示例中的多个状态表呢?我也会添加一个onloan外键,但其中只有一个可以同时处于“活动”状态。某些客户端代码是处理此问题的唯一方法吗?或者,我应该只使用一个表,将所有列组合为多个状态吗?