【问题标题】:MySql Prevent/track duplicate field across multiple fieldsMySql 防止/跟踪跨多个字段的重复字段
【发布时间】:2013-04-11 22:15:38
【问题描述】:

我正在寻找一种简单的方法来检查多个零件表,以确定给定零件号是否已经存在,然后再将其添加到给定表中。

目前我想出的最好的想法是一个辅助表,它简单地将所有表中的每个 PN 列出在一个具有唯一键的列中;但是我想知道是否有办法在不创建新表和索引的情况下做到这一点?

对于视觉学习者类型,我有四十几个表或多或少遵循这种模式:

表一

|编号 | PN |其他栏目 | ---------------------------------------------- | 1 |一些Pn | ... ... ... ... | ...

表2

|编号 | PN |其他栏目 | -------------------------------------------------- | 1 |其他Pn | ... ... ... ... ... | ...

还有大约 40 个以上,每个表最多 50 列和最多 800 万条记录。

目标是,无论是通过软件 (Java) 还是 MySql 拒绝记录,都可以防止重复的部件号在多个表中蔓延。主 PN 表是唯一可能或合理的解决方案吗?

我知道数据结构不是最佳设计,并且正在进行返工,但我想知道一些建议的最佳实践以及针对此问题的建议解决方案。

【问题讨论】:

    标签: mysql sql unique


    【解决方案1】:

    添加表格是您的最佳选择。

    表 1:

    |  t1_id   |    PN     |    Other Columns    |  
    ----------------------------------------------  
    |    1     |  pn_id    |   ... ... ... ...   |
        ...
    

    表 2:

    |  t2_id   |    PN     |    Other Columns    |  
    ----------------------------------------------  
    |    1     |  pn_id    |   ... ... ... ...   |
        ...
    

    表 3:

    |  pn_id   |  PN  |
    ------------------
    |    1     |  ##  |
        ...
    

    尽管在您的情况下这可能不是最容易实施的解决方案,但它是最佳的整体解决方案,因为您现在或将来都不会遇到扩展问题。如果您改为选择在更新/创建时检查所有表格是否有重复部件号的解决方案,那么随着表格变得越来越大,这将花费越来越长的时间。

    如果您可以保证它们永远不会变大或者您永远不会添加零件编号,那么您可能只需编写一个脚本来检查一次重复项,而完全不用担心另一个表。但是,从长远来看,您需要添加另一个表来跟踪零件编号。

    【讨论】:

    • 我就是这么想的,只是想知道是否还有其他可行的方法。数据表总是在扩展,因此该表绝对是最好的选择。感谢您的回复!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-13
    相关资源
    最近更新 更多