我需要一些帮助来为 ORM 创建模型。
我一直在尝试使用 Pyramid 和 SQLAlchemy 设计一个 Web 应用程序作为个人学习体验,以及作为我希望为我工作的公司开发的 Web 应用程序的较小组件。
关于这个应用程序的一些背景(建筑工作领域)。
它将用作我们的估算人员能够更新的投标时间表;这样我们前台的秘书就可以看到谁在从事什么工作以及估计该工作的承包商是什么。
我设计了 3 个模型,它们看起来像这样:
class JobListing(Base):
__tablename__ = 'joblist'
id = Column(Integer, primary_key=True)
jobname = Column(String(80), unique=True)
biddate = Column(DateTime)
def __init__(self, jobname, biddate):
self.jobname = jobname
self.biddate = biddate
class Contractors(Base):
__tablename__ = 'contractors'
id = Column(Integer, primary_key=True)
name = Column(String(80), unique=True)
address = Column(String(255))
phone = Column(String(11))
fax = Column(String(11))
def __init__(self, name, address, phone, fax):
self.name = name
self.address = address
self.phone = phone
self.fax = fax
class BiddingList(Base):
__tablename__ = 'biddinglist'
id = Column(Integer, primary_key=True)
job_id = Column(Integer, ForeignKey("joblist.id"))
job = relationship("JobListing", backref=backref("joblist", order_by=id))
contractor_id = Column(Integer, ForeignKey("contractors.id"))
contractors = relationship("Contractors", backref=backref("contractors", order_by=id))
joblisting 包含实际的工作信息;只需要工作名称和投标日期。
承包商包含特定于我们将投标的实际承包商的信息,只是标准信息,例如电话传真等。
Biddinglist 将包含我不确定应该如何组织的信息。我相信这是正确的方法,但它应该只是将承包商与工作 ID 联系起来。
每个工作只能列出一次承包商,但该工作可以有多个承包商。
我的问题是,我是通过这种设计以正确的方式接近这一点,还是我完全处于左侧领域?我只想从一开始就以正确的方式去做,这样我就有了坚实的基础。