Oracle 数据库表设计问题

Oracle 数据库表设计问题,oracle,database-design,Oracle,Database Design,我对桌子的设计有疑问 第一个名为products\u mast的表包含 CONTRACTS_ID (PK), AGREEMENT_NO, SUPPLIER_CODE, START_DATE, END_DATE PROD_EXTENSION_NO HIRING_ID (PK), CONTRACTS_ID(FK), PRODUCT_CODE, RATE 第二个名为products\u det的表包含 CONTRACTS_ID (PK), AGREEMENT_NO, SUPPLIER_CODE,

我对桌子的设计有疑问

第一个名为
products\u mast
的表包含

CONTRACTS_ID (PK),
AGREEMENT_NO,
SUPPLIER_CODE,
START_DATE,
END_DATE
PROD_EXTENSION_NO
HIRING_ID (PK),
CONTRACTS_ID(FK),
PRODUCT_CODE,
RATE
第二个名为
products\u det
的表包含

CONTRACTS_ID (PK),
AGREEMENT_NO,
SUPPLIER_CODE,
START_DATE,
END_DATE
PROD_EXTENSION_NO
HIRING_ID (PK),
CONTRACTS_ID(FK),
PRODUCT_CODE,
RATE
以上表格与
合同\u ID
链接<代码>开始日期和
结束日期
在一个表中,产品
费率
在第二个表中

在我的第三个表中,
事务
包含

TRANS_ID,
TRANS_REF_NO,
HIRING_ID FK (products_det),
REMARKS
一个问题通常是,协议可以延长一段时间,延长协议的新产品价格。因此,我将这些细节添加到 产品桅杆和产品详图与扩展002(新扩展)具有相同的协议编号。在交易中,我如何引用正确的
如果我将招聘ID与产品det链接,则费率为,因为招聘ID随新扩展而递增。如何解决此问题?

我不太确定我是否完全遵循了您关于扩展002(新扩展)的协议无价值的建议,但是如果是根据协议编号唯一标识交易的情况,如何将FK添加到表事务中,将其链接回products\u mast表中的AGREEMENT\u NO字段?

我计算每个月的产品费率,这就是为什么我有开始日期和结束日期。所以,如果我计算2011年3月的利率,那么它会从与招聘id相关的product_det中获取利率。那么,当发生扩展时,我如何在Transactions表中添加FK?每延期一次,我都有费用。那么,在交易表中确定费率的最佳方法是什么呢?如果您每月计算每个产品的费率,最好将日期下移到带有费率的产品明细表中。然后,这将允许一个唯一的链接到每个期间每个零件的费率的交易表?表结构可以是:
第一个名为products\u mast的表包含合同ID(PK)、产品代码(PK)协议编号、供应商代码第二个名为products\u det的表包含雇佣ID(PK组合)、产品扩展编号(PK组合)合同编号(FK)(产品编号)、产品代码(FK)(产品编号)、开始日期、结束日期费率在我的第三个表中交易包含、交易编号(PK)、交易参考号、雇用编号FK(产品编号)、产品扩展编号FK(产品编号)备注感谢您的解释。我有一两个疑问。最初,当合同签署时,我们输入所有日期和费率,扩展名为1。当合同延期时,我们在延期2中输入新的日期和费率。此时,我们还将扩展事务中的实际开始和结束日期。我是否需要更新事务表中的招聘id和分机号?我如何应对这种情况?另一件事是在交易表FK中应该是产品的合同ID,对吗?