2015-04-05 21 views

回答

0

由于票据可以包含多于一种材料,票据与材料之间的关系是1→N,一对多。话虽如此,你应该创建一个表格,在这张表格中你将存储这种关系,在材料和帐单之间。很明显,这不能存储在账单中。所以,你必须创建一个表格来存储每个账单的材料。

例如,让我们将id = 1023的帐单以及id为178,456和678的材料与此帐单关联。那么你应该在这个表格中插入三条记录。

------------------------------ 
Id | BillId | MaterialId 
------------------------------ 
.. | ...... | .......... 
123 | 1023 | 178 
124 | 1023 | 456 
125 | 1023 | 678 

表的定义是这样的(在TSQL):

CREATE TABLE BillMaterial 
(
    Id INT NOT NULL IDENTITY(1,1) PRIMARY KEY, 
    BillId INT NOT NULL, 
    MaterialId INT NOT NULL, 
); 

此外,我们必须声明两个约束。首先,我们应该宣布条例草案将成为指向条例草案的外围关键。然后,我们应该声明MaterialId是一个指向Material的键的外键。

我怎么可以存储材料的基质中的票据表格中 数据库

就个人而言,我会有所回升MERGE的选项,以使多个插入在一个事务中。为此,我们应该创建一个存储过程,该过程需要一个参数。这个参数是一个数据表。该数据表应该已经存储了所有账单资料对。这个实现需要做更多的工作,但我认为它比其他替代方案更优化,这将使每对账单和材料往返数据库并执行插入语句。后者可能可以避免使用ORM像实体框架,但我不知道这是否可能。你必须搜索它。

+0

ok我明白了谢谢你的帮助 最后一个想到在这种情况下,我会在我的数据库bill_material表,他会为每个帐单举行一些行,例如,如果我有一个帐单5 ID和1 ,2,3,4,5,它将以5行存储在bill_material表中的材质ID对于数据库来说可以,或者它可能超载或类似这样的事情再次感谢您的有用答案 – user3341464 2015-04-05 12:23:58

相关问题