2012-03-14 60 views
3

基本上我有与每个发票相关联的小“发票”型系统,其中我有一个MySQL表设置为个人发票,发票行,和物品,有点像这样:是一个单独的查询是否足够好,还是有某种连接我可以做?

表发票:

fields: invoice_id | type | fees | comments | company 

-

表invoice_lines:

fields: id | invoice_id | name | description | quantity 

-

表invoice_affected_items

fields: id | invoice_id | item_id 

我可以有很多的发票行,许多受影响的项目一个发票号。在这种情况下,联合是最好的,还是应该将发票行加入表中并使用单独的查询检索受影响的项目?

谢谢。

回答

1

您可以加入,但这会导致大量额外的数据。例如,如果您加入发票的行,例如,您会多次拉发票 - 每行一次...

所以要回答你的问题。我会分开查询。

+0

很好的解释。谢谢! – 2012-03-14 17:48:10

0

如果invoice_lines和invoice_affected_items之间没有关系,我会做2个单独的查询。

+0

感谢您的输入! – 2012-03-14 17:48:28

2

恕我直言,如果受影响的商品与发票行一对一的关系(通过invoice_lines.id = invoice_affected_items.item_id),你可以做两件事

要么让你目前的设计,并做单独的查询一个

或重新设计如下

  • 掉落的invoice_affected_items表完全
  • 添加invoice_affected_items标志提供给invoice_lines吨能够
  • 指数invoice_lines由(invoice_affected_items,INVOICE_ID)知道什么发票都受到(invoice_affected_items,ID)项目
  • 指数invoice_lines知道什么发票行是受影响的项目
相关问题