【发布时间】:2010-02-28 21:29:21
【问题描述】:
我有两张桌子:members 和 members_data。
它们都共享相同的唯一自动增量id 键和唯一username 字段。
我想将这两个表合并为一个 members 表,但是我有大约 50 个使用 members 和 members_data 引用的脚本。我还需要某种别名设置,以使我的 members_data 查询指向新的 members 表。
这可能吗?
【问题讨论】:
我有两张桌子:members 和 members_data。
它们都共享相同的唯一自动增量id 键和唯一username 字段。
我想将这两个表合并为一个 members 表,但是我有大约 50 个使用 members 和 members_data 引用的脚本。我还需要某种别名设置,以使我的 members_data 查询指向新的 members 表。
这可能吗?
【问题讨论】:
您可以通过创建一个仅从另一个表执行 SELECT * 的视图来有效地将一个表别名为另一个表。然而,这不是一件好事:
但是,取决于测试这“50 个脚本”的难易程度和它们的重要性(提示:难以测试的非常关键的代码可能会真正阻碍有效的开发),创建视图可能是短期内要做的务实的事情(在实际应用中,短期解决方案通常会保留数年或永远存在)。
如果可行,我敦促您更改“50 个脚本”并进行所有必要的测试以发布此类更改。在我们的团队中,我们进行了更改(在一个版本中),修改了“50 多个脚本”,但测试当然证明具有挑战性(或至少很耗时)。
随着应用程序变得越来越大、越来越复杂,回归测试变得越来越困难。尽可能多地考虑这一点至关重要,因为重构将变得必要(假设应用程序得到了开发或维护),而且回归是不好的。
** 当然,您所有的表、视图等都已编写脚本并在您的源代码管理系统中!
【讨论】:
它们都共享相同的唯一自动增量 ID 键和唯一的用户名字段。
这句话是毫无意义的gobbledy-gook。在 MySQL(或大多数 rDBMS 中两个表可以共享列)中没有办法。
我怀疑您的问题可能有几个可能的答案,但如果没有看到实际的架构,很难说清楚。
假设您的意思是这两个表都有一个唯一的用户名字段,并且两个表中的大小相同,并且两个表都有一个名为 id 的自动增量列,那么事情就更清楚了 - 在这种情况下创建实现两个基础表中的列的复合表,将数据迁移到其中并用视图替换 2 个原始表。
C.
【讨论】: