在将关系数据库建模为库存管理系统时,我遇到了一些麻烦。目前,它只有3个简单的表:
产品
ID | Name | Price
收货
ID | Date | Quantity | Product_ID (FK)
销售量
ID | Date | Quantity | Product_ID (FK)
由于收货和销售是相同的,所以我正在考虑采用另一种方法:
产品
ID | Name | Price
Receivings_Sales(名称无关紧要)
ID | Date | Quantity | Type | Product_ID (FK)
列类型将标识它是收货还是销售。
谁能帮助我选择最佳选择,指出两种方法的优缺点?第一个似乎合理,因为我以ORM方式进行思考。
谢谢!
我个人比较喜欢第一个选择,那就是,对于单独的表Sales
和Receiving
。
选项2或将两个表合并为一个的两个最大缺点是:
1) Inflexibility
2) Unnecessary filtering when use
首先是僵化。如果您的需求扩大了(或者您只是简单地忽略了它),那么您将不得不破坏您的架构,否则您将得到未标准化的表。例如,假设您的销售现在包括执行销售交易的销售员/人员,因此显然与之无关'Receiving'
。而且,如果您进行零售或批发销售,该如何将其容纳在合并表中?折扣或促销怎么样?现在,我在这里识别明显的东西。现在,转到Receiving
。如果我们想把我们的收货与我们联系起来Purchase Order
怎么办?显然,采购订单详细信息(如PO编号,PO日期,供应商名称等)不会包含在以下内容中,Sales
但显然与更为相关Receiving
。
其次,在使用时进行不必要的过滤。如果已合并表,并且只想使用表的Sales
(或Receving
)部分,则必须通过后端程序或前端程序过滤掉接收部分。如果它是一个单独的表,则您一次只能处理一个表。
另外,您提到ORM
,第一种选择最适合该工作,因为显然,与此相关的对象或实体应该与其他实体/对象不同。
问题内容: 我有一个关于数据库体系结构的问题。 我们正在建立一个CMS。许多字段将具有预填充的选择。例如,客户的信用状态可以为“良好”,“不良”,“未知”或“存款”。该项目的规格是这些预先填充的选择是动态的,管理员可以通过后端添加新值。所以我需要将这些值存储在数据库中。 我正在努力在两种方法之间做出决定 1)为每种清单都有一张桌子。示例将是诸如list_CrediStatus,list_Branc
问题内容: 我需要将供体表中的数据合并到两个目标表中。结构如下。如果在跟踪表中找不到projid,则需要在组件表中创建新组件,并使用新的ID插入到跟踪表中。此外,对于供体表中不再存在的那些项目,跟踪表的“活动”列应标记为0。我可以在单个merge语句中实现此功能吗? 供体表 跟踪表 成分表 合并后的输出表: 成分表 跟踪表 问题答案: 从理论上讲,应该有一个解决方案可以在单个语句中执行此操作,但是
问题内容: 所有,我必须创建一个具有基本架构的数据库。该数据库将很大(超过100GB),并将用作数据仓库。现在,该数据库的创建当前正在通过C#代码“一次命中”执行。从许多不同的来源中提取数据。由于数据量巨大,这种创建引起了一些问题。已经决定,与其一口气创建一个数据库,不如一次创建一个数据库。到 创建几个包含核心数据表的较小数据库。 将较小的数据库合并为一个较大的数据库。 建立架构/添加相关约束。
问题内容: 我有 我想要 问题答案:
问题内容: 是否可以将两个表(具有相同的字段)中的数据捕获到一个视图中。基本上,因此视图将数据视为一个表。 问题答案: 是的,使用UNION- …要求列数相同,并且每个位置的数据类型都匹配。 ..优选地,使用JOIN: 但是我要警告不要依赖于视图-如果未实现,它们只是准备好的SQL语句。没有性能优势,如果您基于另一个视图构建视图,则会对性能产生负面影响。此外,视图是脆弱的- 它们可以更改,如果有问
问题内容: 我有两个SQLite数据库,两个数据库都有连接表来描述 一对多 关系。现在,需要使用某种导入/导出机制将这两个数据库合并到一个数据库中,并且仍然保持关系。 我尝试使用来转储 DB2 ,然后使用来将其重新加载到 DB1 中,但始终收到警告。 是否有最佳实践来处理这种情况? 最好不要使用以避免额外的复杂性。 DB1 Fruit 果汁 配方(连接表) DB2 Fruit Juice 配方(连