首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将多个产品的数据标准化为一个ID?

将多个产品的数据标准化为一个ID?
EN

Database Administration用户
提问于 2016-10-12 04:46:12
回答 1查看 300关注 0票数 0

如何规范这些数据以删除salesorderline数据库中的冗余元组?我已经标准化了第一个,但似乎找不出第二个。另外,我的数据库是否已经处于第三种正常状态?不过,我相信他们希望得到大多数知识渊博的人的额外证实。

EN

回答 1

Database Administration用户

发布于 2016-10-13 06:26:38

没有多余的东西。您有FK回到销售订单,多少项目被订购,每个项目的费用和总额的路线。然而,你错过了一些相当重要的东西。订了什么货?上线显示10件左右的顺序,下一行显示5件物品的顺序。

您可能希望添加的另一个功能是唯一标识每个订单细节的方法。前三项是1111订单的详细信息。除此之外,没有办法区分一条线和另一条线。也就是说,没有自然的钥匙。

这样的明细表从几个方面创建了一个微分器。一种方法是在每一行上增加一个增量值。这也可以通过几种方式来完成。

  1. 给每个订单插入的第一行赋值1,并将每增加一行增加1。这样做的缺点是,当以后必须添加另一行时,必须读取到到目前为止的最高值,以查看在何处重新启动增量。
  2. 实现全局增量值。这具有这样的优点,通常可以在插入新记录时由系统自动生成。当然,第1111号命令的第1行可以给出价值1,第1112号命令的第1行可以给出第1111号命令的值2、第2行、第1113号命令的值3、第1行、第4号命令的值等等。从本质上说,线值是半随机值.这是很好的,因为这些只是作为微分器。它们只需要是不同的,而不是以任何逻辑的方式分组。在使用这种方法时,使用复合(SO_ID,Increment)作为关键,即使增量本身是唯一的。索引将改进查询。

另一种方法是使用缺失字段、项目部件编号或SKU等。与生成的值相比,它的优点是

  1. 不需要创建额外的增量字段。
  2. 您不能不小心不止一次地输入相同的部件号。缺点是你不能故意不止一次地输入相同的零件号--或者例如,如果客户后来订购了更多相同的产品。您必须用新的数量更新该项目的现有行。然而,这可能正是您想要的行为。
票数 1
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/152049

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档