我有三个表:动作,消息,喜欢。它定义了继承,消息和喜欢是动作的孩子(专业化)。SQL泛化/专业化,数据冗余
消息和Like都有列userId和createdAt。这些应该当然移动到parrent表Action并从Message和Likes中移除。但只有一种情况是我需要从数据库中选择消息和喜好,而在其他情况下,我只选择其中的一种消息或喜好。
可以在child和parrent表中复制userId和createdAt吗?它花费磁盘空间,但保存一个连接 - 我将不得不加入消息,每次需要userId和createdAt时都要使用动作。还有什么我需要改变我现在的代码...
你会建议什么?
谢谢,伟大的职位。 Basicaly,我应该摆脱重复并重写遗留代码? :-) – PetrB 2010-10-08 11:48:04
@PetrB:谢谢。如果涉及遗留代码,则显然是不同的情况,并且您可能无法(由于时间限制或组织限制)重写所有内容。我的意见是针对新的数据库和代码。 – 2010-10-08 11:53:04
这是我的个人项目,所以时间或其他任何东西都不重要,相关的遗留代码也不是一个大问题。从你的帖子中可以明显看出,即使我只需要一个孩子,最好在所有情况下都通过加入父表来获取数据。 – PetrB 2010-10-08 11:59:09