问题是双重的,两者都在您身边。当您知道如何处理时,请将代码编写到程序中(使用Java或SQL会很容易)。我先给它们命名,然后确定解决方案。
由于某些未知的原因,您已假设从多个站点收集产品描述不会收集相同的产品。
您已经习惯了普通的和无意义的
Id
专栏,在使用电子表格原型开发功能时,这很好。但是它离数据库或开发级功能的需求还很近。您的用户(或老板)自然具有数据库的数据库功能,而您未提供任何功能。(并且不,它不需要模糊字符串逻辑或任何形式的魔术。)
解
这是用于建模关系数据库的 IDEF1X 标准的精简版本。该部分是标识符。
您需要考虑数据库术语,并考虑执行功能所需的数据库表,这意味着您不允许使用自动增量
Id
列。该列为电子表格提供了RowId
,但并不表示表格或标识产品的列的内容。而且,您不能简单地从其他网站上窃取数据,您需要考虑您的网站对产品的要求。贵公司对产品的理解是什么,如何识别产品?
标识所有列和列的数据类型。
确定哪些列是必需的,哪些列是可选的。
确定哪些是强 标识符 。例如。
Manufacturer
和Model
; shortProduct Name
,而不是longDescription
(或者对于您的公司而言,long描述 是 标识符)。与您的用户一起工作,并努力解决。你会发现你确实有表的一小簇周围
Product
,比如Manufacturer
,ProductType
也许Vendor
等。组织这些表,并对它们进行规范化,这样就不会复制数据。
确保您对这些标识符有一点尊重。选择哪个将是唯一的。这些是 候选键 。每张表至少需要一个,并且中将有多个
Product
。将要搜索的所有标识符都需要编制索引(是否唯一)。请注意,唯一索引不能为空,因此您不能选择可选列。使单个唯一标识符为其的原因
Product
可能不是单个列。没关系,我们可以为数据库中的键评估多个列;它们被称为 复合键 。取得最佳,最稳定(不会改变的唯一标识符),候选键之一,并使其成为 主键 。
如果,且仅当,唯一的标识符,主键,这可能是一个复合键,是很长,因此不适用于主键,这是迁移到子表,然后 添加 一个 代理键 。那将是
Id
专栏。请注意,这是附加列和附加索引。它不能替代Product
候选关键字;它们无法删除。
到目前为止,我们在网络上的贵公司都拥有一个Product数据库,这对它很有意义。现在,我们可以从网络的另一端评估产品了;然后,当我们这样做时,我们就拥有了一个强大的框架,可以用来衡量我们从网络另一侧获得的垃圾。
提要
您需要一个
WebSite
表来管理提要。届时将有关联表(很多到多)之间
Product
和WebSite
。叫它ProductSite
。它只包含我们的ProductId
和WebSiteCode. It may contain
价格。内容对单个进给周期有效。将每个提要加载到暂存数据库或架构,传入
ProductIn
表中,或者每个源网站一个。这只是来自外部源的平面文件。添加一列IsValid
并将“默认值”设置为true。然后编写一些SQL,将该
ProductIn
表及其松散和松散的内容Product
与具有强大标识符的表进行比较。我这样做的方式是,进行几波单独的检查,每一次检查都将失败的行标记
IsValid
为false。最后,将IsValid
行插入ProductSite
。您可能很幸运,并且乐于接受乐观的态度。也就是说,只要在几个重要的列上找到匹配项,该匹配项就有效。(反转默认值并更新
IsValid
布尔值)。此过程将需要一些来回的工作,直到解决为止。这就是为什么您需要与用户一起使用标识符。目标是不排除任何外部产品,但是您的出发点将排除许多外部产品。这将包括返回到我们的
Product
表,并改进标识符以及用于标识匹配行的其他相关列的内容(行中的值)。
对每个网站重复上述步骤。
现在
Product
,使用我们有信心的信息从表格中填充我们的网站,并显示哪些网站销售产品ProductSite
。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)