0
我的后续设计是否会出现问题?基本上,我想跟踪一个客户的总支付额(例如50美元),这个支付额分为两个项目(例如20美元和30美元)。但我希望能够查看任何项目 - ITEM(ITEM_ID),并知道客户在其总计帐单 - 付款(PAYMENT_AMOUNT)上的花费。为了保持它的简单我包括最少列:SQL指向同一主键的多个外键
CREATE TABLE ITEM (
ITEM_ID NUMBER(7,0) NOT NULL,
ITEM_SALE_AMT NUMBER(7,2) NOT NULL,
PAYMENT_ID NUMBER(7,0) NOT NULL,
PRIMARY KEY (ITEM_ID),
FOREIGN KEY (PAYMENT_ID) REFERENCES PAYMENT(PAYMENT_ID)
);
CREATE TABLE PAYMENT (
PAYMENT_ID NUMBER(7,0) NOT NULL,
PAYMENT_AMOUNT NUMBER(7,2) NOT NULL,
ITEM_1 NUMBER(7,0) ,
ITEM_2 NUMBER(7,0) ,
PRIMARY KEY (PAYMENT_ID),
FOREIGN KEY (ITEM_1) REFERENCES ITEM(ITEM_ID),
FOREIGN KEY (ITEM_2) REFERENCES ITEM(ITEM_ID)
);
首先,每个项目都是独一无二的(所以你不能对同一项目两笔款项)。 显然,如果客户在一次交易中支付了很多物品,我的付款表中将会有很多列(但这在30年内通常不会发生,通常是1次,偶尔也会发生2次或3次)。
有没有我没有看到的主要缺陷,或者可以改进吗?
非常感谢!试图创建一个简单的程序。如果我能加入,你会投票给你:) – Viet
你应该仍然可以[接受答案](http://meta.stackoverflow.com/help/someone-answers) –
只是做了。不得不谷歌找出如何做到这一点(必须等待15分钟后嘿嘿) – Viet