Database 在存档表中添加外键约束
假设我有这些表,Oldbookings是一个存档表,其中包含一年前预订的行。此外,假设此类约束已在预订中定义:Database 在存档表中添加外键约束,database,database-design,relational-database,Database,Database Design,Relational Database,假设我有这些表,Oldbookings是一个存档表,其中包含一年前预订的行。此外,假设此类约束已在预订中定义: FOREIGN KEY (cusNo) REFERENCES Customers(cusNo) FOREIGN KEY (flightNo) REFERENCES Flights(flightNo) 在归档表中定义这些约束(外键)有意义吗 客户(cusNo,cusName,DOB) 航班(航班号,目的地) 预订(cusNo,flightNo,日期) 旧预订(cusNo,flight
FOREIGN KEY (cusNo) REFERENCES Customers(cusNo)
FOREIGN KEY (flightNo) REFERENCES Flights(flightNo)
在归档表中定义这些约束(外键)有意义吗
客户(cusNo,cusName,DOB)
航班(航班号,目的地)
预订(cusNo,flightNo,日期) 旧预订(cusNo,flightNo,日期)
这取决于业务需求
如果存在引用航班或客户的OldBookings行,则不允许删除或移动该航班或客户。它确保旧预订引用有效的航班和客户。在摘要中,我要说的是不要将预订表分为当前预订和旧预订。如果需要细分表,也许可以使用分区来生成逻辑子表 如果您确实需要维护离线或辅助系统历史记录,通常最好对旧的预订表进行非规范化,以便在平面记录结构中捕获所需的信息,如下所示:
**BOOKINGS**
BOOKING_ID
CUSTOMER_ID
FLIGHT_ID
...
**OLD_BOOKINGS**
BOOKING_ID
CUSTOMER_ID
CUSTOMER_COLUMN_1
...
CUSTOMER_COLUMN_N
FLIGHT_ID
FLIGHT_COLUMN_1
...
FLIGHT_COLUMN_N
BOOKING_ATTRIBUTE_1
...
BOOKING_ATTRIBUTE_N
在归档数据库中“复制”此类约束可以防止归档过程本身存在缺陷
取决于您(或者可能取决于您的用户)来决定是否要保护您的档案免遭此类缺陷。然而,出于各种原因,有时预订和旧预订存储在不同的数据库中。我是一个Oracle人员,所以我不知道您所说的“不同数据库”是什么意思“不同的数据库。”我确实认为,如果要将旧预订与当前预订分开存储,可能不应该同时引用同一航班表和客户表,这意味着您应该将旧预订非规范化,或者必须将它们复制到航班表和客户表中。