0

我最近的任务是为我们所有的产品制作一个帐户系统,就像微软产品中的 Windows 帐户一样。但是,其中一项要求是我们能够轻松地检查具有相同信息的账户,以便我们能够检测到交易账户、信息的突然和可能的欺诈性变化等。

在考虑解决这个问题的方法时,我认为我们可以在处理数据时减少数据的冗余。我认为它可能会帮助我们节省一些存储空间和处理时间,因为最终我们将只是将数据集处理成我在下面解释的内容。

关于现在如何设置的一些背景知识:

  • 一个帐户表只包含一个 id 和一个用户名
  • 个人资料表包含对帐户的引用和对不同个人资料数据的引用:姓名、邮寄地址、电子邮件地址
  • 姓名表包含个人的 id 和名字、姓氏和中间名
  • 地址表包含有关地址的数据
  • 电子邮件地址表包含电子邮件地址的 id 以及邮箱和域

个人资料记录是将独特的个人资料数据(在许多帐户之间共享)与特定帐户相关联。如果有五十个人名为“John Smith”,那么在姓名表中只有一条“John Smith”记录。如果用户更改了他们的任何信息,则配置文件记录将被软删除并创建一个新记录。这是为了便于更改跟踪。

在分析之后,我注意到UNIQUE(FirstName, MiddleName, LastName)在记录插入方面创建类似的约束是非常痛苦的。这仅仅是我们必须付出的代价还是有更好的方法?

4

2 回答 2

1

我已经完成了我的研究,并决定如果插入性能不重要,这种方法就很好。在关键的情况下,在合理范围内增加数据冗余是可以接受的权衡。

我的问题中描述的解决方案足以满足我的性能需求。在我们的模型中,存储被认为比插入时间更昂贵。

于 2012-12-20T18:15:08.160 回答
1

拥有关于 2 个名叫 John Smith 的人的记录不是多余的,而是必要的。

您建议的方法远非最佳。“配置文件记录被软删除并创建一个新记录。这是为了便于跟踪更改。” 删除并重新插入会导致其他表中的依赖记录出现问题。有更简单的方法来跟踪更改 - 搜索一些 3rd 方工具

至于创建的表,没有必要将数据拆分到这么多表中。为什么不合并 Name 和 Account 表。地址和电子邮件地址表都需要吗?

于 2012-12-14T12:29:01.547 回答