答案 0 :(得分:0)
我想我的第一个问题是,如果信用卡有用户的外键,那么订单是否需要同时拥有客户ID和信用卡ID?你能不能从使用过的信用卡中找出顾客?
我不相信您可以拥有受表中数据限制的外键,事物的最佳验证(数据库)方面是外键,因此在客户表上有一个外键用于客户ID和信用卡表上的外键用于信用卡ID。如果您必须在表中包含两条信息,那么我怀疑最好的解决方案是添加一些业务逻辑,以在将卡插入表中之前检查该卡是否属于所述客户。
这种类型的业务逻辑可以通过c#或通过存储过程完成。
但伪代码应该是这样的:
public void InsertOrder(int customerId, int creditCardId)
{
var customer = db.GetCustomer(customerId);
var cards = db.GetCardsBelongingToCustomer(customerId);
if(cards.Any(card => card.Id == creditCardId))
{
db.InsertOrder(new Order{});;
}
}