2017-09-22 98 views
0

我正在尝试为处理工作订单工单上的服务活动的SQL数据库创建一些表关系。我有这些表格的一对一关系,并有一个问题。 我有用于创建工单票据的WOT(工单票)表。 WOT可以在与其关联的不同日期有多个服务活动。 每项服务活动可以使用多个部件(用于修理)。 这仅仅是基本的想法,但我已经创建了下面的表和关系:SQL表关系

WOT Table: 

WOT> wotnum - PK

Service Activity Table: 

service_activity>服务ID - PK

service_activity> wotnum - FK(链接到WOT表中的PK)

Part Used Table: 

partused> partusedid - PK

partused>服务ID - FK(链接到PK在服务活动表)

每个表的上面具有其它列,以及(未示出),但它们对于表格是唯一的,例如日期字段,部件号等。

service_activity>serviceid (PK)字段是autoin crement字段以及partused>partusedid (PK)字段也是如此。

我的问题是,在数据输入过程中,如何确保partused> serviceid字段(FK)与service_activity>serviceid field (PK)同步,而无需实际手动输入partused>serviceid field (FK)

尽管我对表格和关系有一个体面的理解(现在很关键),但对于通过表格在实际数据输入过程中如何相互作用的思考过程,我有点新手。我想这个答案可能很简单,但我还没有把握它。如果我目前的解决方案看起来不够,我会欢迎提供一个建议。我需要一些帮助才能朝着正确的方向前进。

+0

你是什么意思“没有实际上必须手动输入partused> serviceid字段”?您认为如果不是手动输入该字段,您还有什么其他方式?我甚至不确定在这种情况下“手动”的含义。 –

+0

我认为他需要更好地了解FK的工作原理:p – achecopar

回答

0

如果您已正确添加FK,当您在数据输入过程中手动输入partused.serviceid列数据时,它将自动参考service_activity.serviceid列。

例如:如果您只有一个service_activity与serviceid = 456

  1. 当你与partused.serviceid = 500 partused表尝试插入数据,它会抛出一个错误,并且插入将不会被允许。

  2. 当您尝试在partused.serviceid = 456中使用的表部分中插入数据时,它将成功,因为其他表中的引用行确实存在。

+1

谢谢!我认为这回答了我的问题。我打算和这个表结构一起去看看会发生什么。 – gitpicker

+0

@gitpicker好的!如果你认为它回答了你的问题,请接受我的回答:) – achecopar