gpt4 book ai didi

schema - 地址簿数据库架构

转载 作者:行者123 更新时间:2023-12-01 07:17:06 26 4
gpt4 key购买 nike

我需要存储用户的联系信息。我想在页面上将此数据显示为 hCard并可下载为 vCard .我还希望能够通过电话号码、电子邮件等搜索数据库。

您认为存储这些数据的最佳方式是什么?由于用户可能有多个地址等,完全规范化将是一团糟。我正在考虑使用 XML,但我不熟悉查询 XML db 字段。我还能通过联系信息搜索用户吗?

如果这很重要,我正在使用 SQL Server 2005。

最佳答案

考虑人员及其地址的两个表:

People (pid, prefix, firstName, lastName, suffix, DOB, ... primaryAddressTag )

AddressBook (pid, tag, address1, address2, city, stateProv, postalCode, ... )

People 的主键(唯一标识每一行)是 pid . AddressBook的PK是pid和tag的组合 (pid, tag) .

一些示例数据:

人们
1, Kirk

2, Spock

地址簿
1, home, '123 Main Street', Iowa

1, work, 'USS Enterprise NCC-1701'

2, other, 'Mt. Selaya, Vulcan'

在此示例中,Kirk 有两个地址:一个“家”和一个“工作”。这两者之一可以(并且应该)在 People 中被标记为外键(如交叉引用)。在 primaryAddressTag 列中。

Spock 有一个带有“other”标签的地址。因为那是 Spock 的唯一地址,值 'other' 应该放在 primaryAddressTag 中。 pid=2 的列。

这种模式具有很好的效果,可以防止同一个人因意外重用标签而复制他们自己的任何地址,同时允许所有其他人使用他们喜欢的任何地址标签。

此外,在 primaryAddressTag 中使用 FK 引用,数据库系统本身将强制执行主地址标签的有效性(通过我们数据库极客称之为参照完整性的东西),这样您的——或任何——应用程序就不必担心它。

关于schema - 地址簿数据库架构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38352/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com