我最近的任务是为我们所有的产品制作一个帐户系统,就像微软产品中的 Windows 帐户一样。但是,其中一项要求是我们能够轻松地检查具有相同信息的账户,以便我们能够检测到交易账户、信息的突然和可能的欺诈性变化等。
在考虑解决这个问题的方法时,我认为我们可以在处理数据时减少数据的冗余。我认为它可能会帮助我们节省一些存储空间和处理时间,因为最终我们将只是将数据集处理成我在下面解释的内容。
关于现在如何设置的一些背景知识:
- 一个帐户表只包含一个 id 和一个用户名
- 个人资料表包含对帐户的引用和对不同个人资料数据的引用:姓名、邮寄地址、电子邮件地址
- 姓名表包含个人的 id 和名字、姓氏和中间名
- 地址表包含有关地址的数据
- 电子邮件地址表包含电子邮件地址的 id 以及邮箱和域
个人资料记录是将独特的个人资料数据(在许多帐户之间共享)与特定帐户相关联。如果有五十个人名为“John Smith”,那么在姓名表中只有一条“John Smith”记录。如果用户更改了他们的任何信息,则配置文件记录将被软删除并创建一个新记录。这是为了便于更改跟踪。
在分析之后,我注意到UNIQUE(FirstName, MiddleName, LastName)
在记录插入方面创建类似的约束是非常痛苦的。这仅仅是我们必须付出的代价还是有更好的方法?