微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

数据库的最可扩展设计

如何解决数据库的最可扩展设计

| 我正在从头开始设计一个程序及其数据库。对于以下情况(sql 2008 R2,C#),最佳的数据库设计是什么: 该程序将出售给具有不同需求的各种客户。这就是为什么我试图使其尽可能地可扩展。在Code-Side中,我将DI用于基于插件的体系结构。 但是对于数据库端: 每个客户可能会或可能不想向用户/实体添加其他信息。具有不同的数据类型。我应该如何设计数据库,以便能够以最少的接触轻松添加其他数据? 在必填表中创建一个附加列,以XML或CSV格式存储有关实体的任何其他信息,并以隐藏代码的形式进行解析。 创建一个新表,其中包含一个实体的ID,并具有一个键/值对列以及一个DataType列(例如
Key=\"IsPremiumMember\",DataType=\"boolean\",value=\"true\"
),并在代码背后进行解析。 您会建议哪种方法,为什么? 我应该考虑其他解决方法吗? 谢谢。     

解决方法

  我应该如何设计数据库,以便能够以最少的接触轻松添加其他数据? 如果可能的列的范围是可枚举的,则可以使用标准列来构建表,并允许客户从可能的列列表中添加其他列。这将很灵活,而又不会太难用SQL编写代码。 如果可能的列的范围未知,则可以使用“键/类型/值”模式。正如marc_s所说的那样,它很灵活,但是更难编写SQL。 最后,您可以允许客户使用他们希望的任何列来定义表。您的软件将必须读取数据库系统列和数据库系统索引表,以确定列名称和索引路径是什么。由于SQL是由数据库系统表的结果生成的,因此这种软件的编写难度至少要高一个数量级。     ,您可能会在这里得到其他有用的想法... 使用哪一个?数据库中的EAV或Blob? 就个人而言,我更喜欢使用已经提供了可以正常运行的基于EAV的架构的开发平台,或者使用基于RavenDB或Mongo的解决方案。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。