我有几个不同的Web应用程序和他们自己的独立数据库。所有这些不同的Web应用程序还使用通用数据库进行身份验证,其中包含我所有用户和用户名的列表。为了简单起见,让我的应用程序数据库像一个论坛,他们跟踪用户帖子;在表格中他们将存储用户ID和一些帖子文本。在Web应用程序设计模式之间共享数据库
现在我遇到的问题是,我的一些团队成员觉得我们正在做的是混乱和摩擦,因为它有点痛苦如何让我的应用程序显示在他们的职位旁边的用户名是一个非常普遍的任务。首先,我必须进入应用程序数据库并执行诸如SELECT userID, postText FROM tblPosts
之类的操作,然后我必须执行userID
并转到用户数据库并使用SELECT name FROM tblUsers WHERE userID = X
获取实际名称。然后将这两个查询中的数据合并在一起,以便在页面上显示出来。
我个人不介意我们这样做的方式,因为我认为使用一个单独的用户数据库来保存数据常量很重要,但是我的一些团队成员想要将所有用户名复制到本地应用程序数据库,并在记录帖子时将用户名存储在用户ID旁边,以便它可以非常简单地将该信息返回。如果用户想更改他们的名字(这是一个非常罕见的事件,我们只有大约100个用户),我们应该在公共数据库以及所有应用程序数据库中运行更新。
这似乎是人们可能遇到的常见问题。有人可以考虑处理问题的常用方法以及我们可能想要做的事情。
你的方法并非不合理。 “代码很难”不是使规范非规范化的有效理由。听起来好像你会从对象或库中抽象出这些细节那样受益匪浅,所以你可以将这些数据放到任何地方,其余的同事/代码不必关心。 – 2013-05-10 16:57:28
我同意Dave S.让所有人都编写代码一次,从公用表中选择用户名,并从各个表中选择用户标识。然后他们只是调用他们的例程来从公共表中获取用户名。 – 2013-05-10 17:06:31