我正在从头开始设计一个程序及其数据库。对于以下情况(SQL 2008 R2,C#),最佳数据库设计是什么:数据库的最大可扩展设计
该程序将销售给具有不同需求的各种客户。这就是为什么我试图尽可能扩展它。在Code-Side中,我使用DI作为基于插件的体系结构。
但是对于数据库端:
每个客户可能想也可能不想向用户/实体添加额外的信息。使用不同的数据类型。我应该如何设计我的数据库,以便能够以最少的触摸轻松添加其他数据?
- 在所需表格中创建一个附加列,其中存储有关XML或CSV格式实体的任何其他信息,并在代码隐藏中解析。
- 创建一个新表,其中包含一个实体的ID,并具有一个键/值对列和一个DataType列(例如
Key="IsPremiumMember", DataType="boolean", value="true"
)并将其解析为代码隐藏。
您会建议哪种方法?为什么?
我应该考虑的其他解决方法?
谢谢。
谁将托管数据库?它会在您的服务器上还是在客户的服务器上? – 2011-05-25 13:25:47
这是对他们的。 – Kamyar 2011-05-25 13:27:06
我会尽量避免** EAV **模式(键/类型/值) - 它非常灵活*,但是从SQL性能/可编程性角度来看,这是一个完全的噩梦。请参阅[Joe Celko关于避免销毁EAV](http://www.simple-talk.com/sql/t-sql-programming/avoiding-the-eav-of-destruction/)或[第5点中的第3点避免简单的数据库设计错误](http://www.simple-talk.com/sql/database-administration/five-simple--database-design-errors-you-should-avoid/) – 2011-05-25 13:56:54