Sql 将两个数据库表转换为一个?
在为库存管理系统建模关系数据库时,我遇到了一些麻烦。目前,它只有3个简单的表:Sql 将两个数据库表转换为一个?,sql,database,database-design,orm,Sql,Database,Database Design,Orm,在为库存管理系统建模关系数据库时,我遇到了一些麻烦。目前,它只有3个简单的表: 产品 ID | Name | Price ID | Name | Price 接收 ID | Date | Quantity | Product_ID (FK) 销售 ID | Date | Quantity | Product_ID (FK) 由于接收和销售是相同的,我考虑采用不同的方法: 产品 ID | Name | Price ID | Name | Price 接受销售(名称无关紧要)
ID | Name | Price
ID | Name | Price
ID | Date | Quantity | Product_ID (FK)
ID | Date | Quantity | Product_ID (FK)
ID | Name | Price
ID | Name | Price
谢谢 如果表确实是并且永远都是相同的(我对此表示怀疑),那么将统一表命名为更通用的名称,如“InventoryTransaction”,然后对其中一种交易类型使用负数:可能是sales,因为这将正确地标记您的库存,以跟踪库存。如果表确实是并且永远都是相同的(我对此表示怀疑),那么请将统一表命名为更通用的名称,如“InventoryTransaction”,然后对其中一种交易类型使用负数:可能是销售,因为这将正确地标记您的库存,以跟踪库存。我个人更喜欢第一种选择,即销售和收货的单独表格 选项2或将两个表合并为一个表的两个最大缺点是:
1) Inflexibility
2) Unnecessary filtering when use
首先是缺乏灵活性。如果您的需求扩展了(或者您只是简单地忽略了它),那么您将不得不分解您的模式,否则您将得到未规范化的表。例如,假设您的销售现在将包括进行销售交易的销售职员/人员,因此显然这与的“接收”无关。如果您进行零售或批发销售,您将如何在合并的表格中容纳这些内容?折扣或促销怎么样?现在,我在这里指出显而易见的问题。现在,让我们转到接收
。如果我们想将我们的收货与我们的采购订单关联起来怎么办?显然,采购订单的详细信息,如采购订单编号、采购订单日期、供应商名称等,将不在销售
项下,而明显与接收
相关
第二,关于使用时不必要的过滤。如果您合并了表,并且只想使用表的销售
(或接收
)部分,则必须通过后端或前端程序过滤掉接收部分。然而,如果它是一张单独的桌子,你一次只需要处理一张桌子
此外,您提到了ORM
,第一个选项最适合这项工作,因为显然,在这方面,一个对象或实体应该与其他实体/对象不同。我个人更喜欢第一个选项,即销售
和接收
的单独表格
选项2或将两个表合并为一个表的两个最大缺点是:
1) Inflexibility
2) Unnecessary filtering when use
首先是缺乏灵活性。如果您的需求扩展了(或者您只是简单地忽略了它),那么您将不得不分解您的模式,否则您将得到未规范化的表。例如,假设您的销售现在将包括进行销售交易的销售职员/人员,因此显然这与的“接收”无关。如果您进行零售或批发销售,您将如何在合并的表格中容纳这些内容?折扣或促销怎么样?现在,我在这里指出显而易见的问题。现在,让我们转到接收
。如果我们想将我们的收货与我们的采购订单关联起来怎么办?显然,采购订单的详细信息,如采购订单编号、采购订单日期、供应商名称等,将不在销售
项下,而明显与接收
相关
第二,关于使用时不必要的过滤。如果您合并了表,并且只想使用表的销售
(或接收
)部分,则必须通过后端或前端程序过滤掉接收部分。然而,如果它是一张单独的桌子,你一次只需要处理一张桌子
此外,您提到的ORM
,第一个选项最适合这项工作,因为显然,一个对象或实体应该与其他实体/对象不同。标题相同的事实是不相关的。由于标题相同而试图使用单个表是错误的
每个基表在描述应用程序情况的-[named-]blanks语句中都有一个对应的谓词aka fill。基表包含构成true语句的行
每个查询表达式通过JOIN、UNION、SELECT、EXCEPT、WHERE条件等组合基表名称,并具有一个相应的谓词,该谓词通过(分别)and、OR、EXISTS、NOT和condition等组合基表谓词。查询结果包含构成true语句的行
这样一组满足谓词的行是一种关系。没有其他理由将行放入表中
(这里的其他答案必须说明,你的一个表格可能具有的谓词的建议和后果。但是,如果你没有因为谓词而提出表格,为什么要提出它呢?答案是,因为不是谓词,没有充分的理由。)标题相同的事实是不相关的。由于标题相同而试图使用单个表是错误的
每个基表在描述应用程序情况的-[named-]blanks语句中都有一个对应的谓词aka fill。基表包含构成true语句的行
每个查询表达式都通过连接、并集和,