Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 仅引用多个可能表中的一个_Sql_Sqlite_Peewee - Fatal编程技术网

Sql 仅引用多个可能表中的一个

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

我正在将我设计拙劣的SQLite数据库迁移到Peewee ORM,并且很难找到适合以下场景的好方法

我有一个DVD表来保存有关版本本身的所有信息,还有描述DVD状态的tw表。这两个表都有其状态的特定详细信息。 代码示例:

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外键,但其中只有一个可以同时处于“活动”状态。某些客户端代码是处理此问题的唯一方法吗?或者,我应该只使用一个表,将所有列组合为多个状态吗?