我有三个表:bill(订单) goods(物品) invoice(发票)
一个订单对应N个物品,一张发票对应N个物品,一个订单对应N个发票
先有订单,再有物品,其次在合适的时候选择订单中的物品生成发票
bill(ID int, billname varchar(50))
goods(ID int, billid int, invoice int, goodsname varchar(50))
invoice(ID int, billid int, invoicename varchar(50))
请问,我该如何设计表与表之间的关系?(以前没有建立表关系,全部通过程序来进行控制的,现在希望使用ORM,那么表与表之间的关系不能理清的话,ORM反而会加大工作量并使得程序复杂,目前也在犹豫中)

解决方案 »

  1.   


    goods(物品) 作为基表
    bill(订单)  invoice(发票) 作为从表订单又作为发票的基表发票又作为订单和物品的桥梁
    发票-->物品:1:N
    发票-->订单:1:1  (正常情况)
      

  2.   

    三个表
    goods(id:pk,name,billID,invoiceID,......)
    bill(id:pk,invoiceID,re,user,......)
    invoice(id:pk,occDate,.......)billID 与 bill表的id灌篮
    invoiceID 与 invoiceID表的id关联。订单-->发票——1:n
    发票-->物品——1:m
      

  3.   

    bill(ID int, billname varchar(50))
    goods(ID int, billid int, invoiceid int, goodsname varchar(50))
    invoice(ID int, billid int, invoicename varchar(50))
    当确立如下关系后:
    订单-->发票——1:n
    发票-->物品——1:m
    物品表在刚插入的时候,goods插入时,invoiceid是必须要填写值的,但实际上此时还不能出发票。
    难道要讲goods分成两个表:billgoods,invoicewoods?