database - 动态联系人数据库

标签 database database-design

我正在尝试为联系人创建数据库 我需要每个联系人都有很多类别 像家 办公室 电子邮件 手机 并且在每个类别中都可以增加更多的值(value) 类别也可以是动态的 这在数据库中如何设计

最佳答案

在我看来,您需要关注两种分类。首先你有联系的目的,即家庭或办公室(可能还有其他的,如总部、紧急联系人、度假屋……),另一个是联系的媒介,即电子邮件、电话(这里也可能有其他信息,例如黑莓 PIN、传真、邮寄地址、送货地址……)

在第一种情况下,您想要描述如何或为何使用接触,在第二种情况下,您想要描述使用什么媒介进行接触。

这些应该单独考虑,因为它们将驱动不同的应用程序功能。例如,您可能有一些 GUI 代码显示不同的字段并强制执行不同的编辑,具体取决于您是捕获邮寄地址还是邮政地址还是电话号码等。同样,您可能有业务规则说 Office 联系人是必需的家庭联系方式是可选的。

这是一个快速的架构草图,可以让您进行这些分类:

enter image description here

CUSTOMER 表(为了便于说明)包含您希望能够联系的人。 CONTACT 表包含联系客户所需的实际信息。您可以根据需要使用通用设计或类似 XML 数据的结构来构建它。两种类型的分类是表驱动的,如下所示:

CONTACT_PURPOSE 告诉您为什么要使用联系人。这是您的家庭/办公室/...分类。这主要是一个查找表,但它可能有一些规则,比如联系人是否是强制性的。

CONTACT_FORMAT 告诉您联系人的结构。这是您的电子邮件/电话/地址/...分类。这将有一个查找表元素,但它也可以包含有关联系人数据结构的规则,比如有多少字段?每个字段有多大?用于验证联系人内容等的正则表达式模式是什么。

关于database - 动态联系人数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7206170/

相关文章:

sql - PSQL 在同一行上按多个条件分组

java - 如何为 Web 应用程序实现缓存

database - 自动禁用 MS Access From 文本框

ruby-on-rails - Rails 中的每日轮换产品

sql-server - 为电子商务应用程序的数据库设计设计

sql - 如何使用 blob 的 substr 更新表?

mysql - 插入行时如何更新触发器?

php - 层次结构/树数据 - 寻找起源

mysql - Webapp : Mysql: Row level security. 优点/缺点?更好的方法吗?

mysql - 数据库依赖关系 - 数据库设计