我已经制作了两个名为Material类的类有13个变量 和bill类有这样的材料矩阵
class Bill
{
int id;
int company_id;
int bringer_id;
string date;
List<Material> items;
}
现在如何将数据的矩阵存储在数据库的账单表中
答案 0 :(得分:0)
由于票据可以包含多于一种材料,因此票据和材料之间的关系是1 - > N,一对多。话虽这么说,你应该在材料和账单之间创建一个表格来存储这种关系。很明显,这不能存储在账单表中。因此,您必须创建一个表格,以便为每个账单存储它的材料。
例如,假设我们拥有id = 1023的账单以及具有ID为17,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,
);
此外,我们必须声明两个约束。首先,我们应该声明BillId是指向Bill表的外键。然后,我们应该声明MaterialId将是指向Material的键的外键。
如何将物料的矩阵存储在票据表中 数据库
就个人而言,我会选择MERGE选项,以便在事务中进行多次插入。为此,我们应该创建一个存储过程,该过程将采用一个参数。此参数将是数据表。该数据表将存储所有账单材料对。这种实现需要做更多的工作,但我认为与其他替代方案相比,它更加优化,即对每对账单和材料进行数据库往返并执行插入语句。后者可以使用像实体框架这样的ORM来避免,但我不确定这是否可行。你必须搜索它。