2013-04-15 212 views
0

我有四个表与外键约束

交易(pay_id,pay_date,CUST_NAME,cust_phone,cust_adrs,PROD_NAME,AMT,数量) 及其3个规范化版本

1. customer(cust_id, cust_name, cust_phone, cust_add) 
2. product(prod_id,prod_name) 

(*传输数据*的cust_id和PROD_ID是主键和我已经传送的数据从交易到CUTOMER和产物。主键是通过使用序列填充。**)

3. payment(pay_id,pay_date,amt,qty,prod_id,cust_id) 

现在,我想将交易数据从付款传输到付款,但cust_id,prod_id是付款表中的外键。如何在不损害约束的情况下将数据从交易转移到付款?

+1

因为CUST_NAME和PROD_NAME可能不是唯一的,你会得到一个问题... – bummi

+0

我建议你再学习数据库规范化的基本概念,然后想想你的问题......你会得到答案...... –

+0

你正在使用哪些DBMS? Oracle或SQL Server?你想将数据从一个DBMS传输到另一个? –

回答

0

加入交易与客户和产品,并插入到支付

INSERT payment(pay_date,amt,qty,prod_id,cust_id) 
SELECT T.pay_date,T.amt,T.qty,P.prod_id,C.cust_id 
FROM Transaction T 
    JOIN customer C 
     ON T.cust_name = C.cust_name 
      AND T.cust_phone = C.cust_phone 
      AND T.cust_adrs = C.cust_adrs 
    JOIN product P 
     ON C.prod_name = P.prod_name