表1:一切,包括厨房水槽。 在错误的日期格式(前年所以你不能对列进行排序),存储为VARCHAR号,在“街道”列完整的地址,名字和姓氏的名字列,城市的名字列,不完整的地址,行即更新由移动数据从一个领域到另一个基于某些设定的已改变多年来的规则,重复的记录,记录不全,垃圾记录......你的名字......哦,当然不是一个TIMESTAMP或PRIMARY前述行在望键列。
表2:标准化的希望在开裂这个宝贝开出去的窗口。 我们在表中的行的每个条目和更新的行。 所以重复像没有明天(800MB价值)和列像电话1电话2电话3 PHONE4 ... Phone15(他们不叫手机。我用这个图示)的foriegn关键是..好拿的猜测。 有三个候选取决于什么样的数据是在表1的行
表3:它可以变得更糟。 哦,是的。 在“外键是虚线,点,数字和字母的VARCHAR列的组合!如果不提供匹配(这通常不会),那么类似的产品代码,第二列是有承担的名称应。列NO相关性在其中的数据,以及强制性电话1电话2电话3 PHONE4 ...... Phone15。还有,并在视线时间戳或PRIMARY KEY列从表1重复的列没有。
表4:被描述为陆侃和议题的工作在任何时刻改变。 这是essentailly simlar别人。
在近1点的行,这是一个很大的混乱。 幸运的是,这不是我的大混乱。 不幸我不得不退出它的组合大记录每个“客户”。
起初我设计的表1添加主键和所有的日期转换成可排序格式的四步翻译。 然后,直到我有表1的地方,我可以用它来从其他表拉来形成组合大传回过滤数据查询的几个步骤。 工作周后,我得到这个下来使用一些技巧一步。 所以,现在我可以在乱点我的应用程序,并拉出合成数据的一个干净的桌子。 幸运的是,我只需要在电话号码中的一个,我的目的所以我正常化表是不是一个问题。
然而,这是真正的任务开始的地方,在方式,因为每天都有数百名员工的添加/更新/删除这个数据库,你不想想象每天晚上我必须检索新行。
因为在任何表中现有的行可以被改变,因为没有TIMESTAMP ON UPDATE专栏中,我将不得不诉诸日志就知道发生了什么事。 当然,这个假设有一个二进制日志,其中有没有!
提出这一概念去了像灌了铅的气球。 我不妨告诉他们,他们的孩子将不得不接受手术治疗实验。 他们是不完全高科技......如果你还没有收集到...
这种情况有点微妙,因为他们有我的公司要严重一些有价值的信息。 我已经发下来的大型企业(你知道他们是如何)的高级管理人员,以“做到这一点。”
我想不出任何其他方式来处理夜间更新,比另一个应用程序解析的bin日志文件,以找出他们白天做相应到数据库,然后复合我的表。 我真的只需要看看他们的表1弄清楚怎么做我的桌前。 其它表只是提供栏刷新了纪录。 (使用主从不会帮助,因为我将有乱七八糟的副本。)
另一种方法是创建一个独特的哈希表1的的每一行,并建立一个哈希表。 然后,我会每天晚上都要经过整个数据库检查,看是否hashs匹配。 如果他们不这样做,那么我会阅读记录,并检查它是否存在在我的数据库,如果它不那么我会在我的数据库更新它,如果它不那么它的一个新的记录,我会插入。 这是丑陋的,而不是快,而是解析二进制日志文件是不漂亮无论是。
我写了这个,以帮助明确的问题。 往往告诉别人帮助澄清制作解决方案更明显的问题。 在这种情况下,我只是有一个更大的头痛!
您的想法将不胜感激。