Database design 在数据库中存储个人联系人的格式
我正在考虑在商业应用程序的数据库中存储个人联系人的最佳方法。传统且简单的方法是创建一个表,其中包含每个元素的列,即姓名、电话号码、职务、地址等。。。然而,对于这类数据有一些已知的行业标准,例如,or,甚至XML模式。使用标准格式会带来一些好处,比如与其他系统的互操作性。但我如何决定使用哪种方法呢 需求主要是存储数据。搜索和排序查询不太可能,但可能。数据量最多为100000条记录 我的数据库引擎支持原生XML列。我一直在考虑使用一些基于XML的格式来存储个人联系人。然后,如果需要搜索和排序,就可以对这些数据使用XML索引。这是一个好方法吗?对此,您建议使用哪种联系人格式和模式 在第一次回答后编辑 这就是为什么我认为直截了当的方法是不好的。这是由于这类数据的性质——并不是那么简单Database design 在数据库中存储个人联系人的格式,database-design,contacts,Database Design,Contacts,我正在考虑在商业应用程序的数据库中存储个人联系人的最佳方法。传统且简单的方法是创建一个表,其中包含每个元素的列,即姓名、电话号码、职务、地址等。。。然而,对于这类数据有一些已知的行业标准,例如,or,甚至XML模式。使用标准格式会带来一些好处,比如与其他系统的互操作性。但我如何决定使用哪种方法呢 需求主要是存储数据。搜索和排序查询不太可能,但可能。数据量最多为100000条记录 我的数据库引擎支持原生XML列。我一直在考虑使用一些基于XML的格式来存储个人联系人。然后,如果需要搜索和排序,就可以
看起来您没有任何实际的性能或空间问题。因此,尽可能少地使用代码和维护
您可能希望允许将数据导出为vCard/hCard等格式,但不要将其用作应用程序的存储后端,除非您认为这样会减少总体编码/维护。正常数据库方法有什么问题。就像你提到的——有几种不同的格式,如果你实现了一种,那么你就破坏了与其他系统的兼容性。
使用数据库方法,您以后可以为链接外部应用程序所需的每种格式编写插件—VCard或其他格式。您提到的格式是系统间交换数据的好方法,但不适合存储在数据库中。不要让数据交换标准支配数据库设计。无论使用何种数据库设计,您都可以创建一个服务或程序,以XML格式公开数据供外部使用。我可能会为“正常”数据位(姓名、地址、电话等)设置一个“正常”表结构,然后与一个单独的表“自定义字段”建立一个“一->多”关系其中包含三列: 用户id(外部ey)、字段类型(字符串)、数据(字符串/blob) 或者,您可以在主联系人表中添加一个blob或文本字段,其中包含自定义字段/值映射的格式化列表(您可以使用BSON、JSON或YAML来简化操作)。然后,当用户打开联系人时,只需解压缩数据即可 如果您需要更快的性能和按自定义字段轻松排序联系人的能力,您可能希望查看以文档为中心的数据库后端,如MongoDB,或者甚至搜索引擎本身(SOLR或Google..idk..)可能有些过分,但也可能是一个有趣的项目
有很多很多种方法可以将自定义字段和值与“普通”数据库中的条目相关联。只要选一个你能理解并且能写得很快的就可以了。我从未见过一家公司/雇主关心后端数据存储系统的“标准遵从性”。。只要您编写某种导出脚本,或(如前所述)编写插件以支持无缝VCARD/XML导入/导出,您就可以声称您的应用程序“符合标准”。但我的数据库设计应该由什么决定呢?我想避免这种情况complexity@Gart对于关系数据库设计,Boyce Codd/5th范式通常是一个很好的起点。如果您正在寻找模板示例,那么请看一看:当然,正常表单是关系数据库设计的关键——但是很抱歉,我不能接受您的解决方案。您给出的示例是2002年的,当时没有合适的技术和标准。这种做法可能是错误的