我正在寻找一种简单的方法来检查多个零件表,以确定在将它添加到给定表之前是否已存在给定的零件号。
我提出的当前最好的想法是一个辅助表,它只用一个唯一的密钥列出一列中所有表的每个PN;但是我想知道是否有办法在不创建新表和索引的情况下完成它?
对于视觉学习者类型,我有四十个表或多或少遵循这种模式的表:
表1
| id | PN | Other Columns | ---------------------------------------------- | 1 | SomePn | ... ... ... ... | ...
表2
| id | PN | Still Other Columns | -------------------------------------------------- | 1 | OtherPn | ... ... ... ... ... | ...
如上所述,大约有40多个列,每个表最多有50列和最多800万条记录。
目标是,通过软件(Java)或MySql拒绝记录,以防止重复的部件号跨越多个表。主PN表是唯一可行或合理的解决方案吗?
我知道数据结构不是最好的设计,并且正在进行返工,但我想知道一些建议的最佳实践以及针对此问题的建议解决方案。
答案 0 :(得分:1)
添加表格是您的最佳选择。
表1:
| t1_id | PN | Other Columns |
----------------------------------------------
| 1 | pn_id | ... ... ... ... |
...
表2:
| t2_id | PN | Other Columns |
----------------------------------------------
| 1 | pn_id | ... ... ... ... |
...
表3:
| pn_id | PN |
------------------
| 1 | ## |
...
虽然在您的情况下这可能不是最容易实施的解决方案,但它是最好的整体解决方案,因为您现在或将来都不会出现扩展问题。如果您选择了一个解决方案,在更新/创建时检查所有表中的重复部件号,那么随着您的表变大,这将花费更长时间。
如果您可以保证它们永远不会变大或者您永远不会添加部件号,那么您可能只需编写一个脚本来检查重复项,而不必担心另一个表。但是,从长远来看,您只需要添加另一个表来跟踪零件编号。