Jef*_*ley 6 sql database sql-server database-design data-modeling
我想创建一个产品目录,其中包含目录中每种产品类型的复杂细节.产品类型与它们有很多不同的数据; 一些只包含通用数据,一些包含一些额外的数据字段,一些包含许多特定于该产品类型的字段.我需要轻松地向系统添加新的产品类型并尊重它们的配置,我喜欢有关如何为这些产品设计数据模型以及如何处理持久性和检索的技巧.
有些产品非常通用,我打算使用通用的UI来编辑这些产品.具有与之关联的可扩展配置的产品将获得为其编辑而创建的新视图(和控制器).我希望所有自定义产品都定义了自己的模型,但是要共享一个共同的基类.基类将表示没有自定义字段的通用产品.
需要处理的示例产品:
我希望使用MEF来发现系统中可用的产品类型.我计划创建包含产品类型模型,视图和控制器的程序集,将这些程序集放入bin中,让应用程序发现新的产品类型,并在导航中显示它们.
使用SQL Server 2008,存储这些不同类型的产品的最佳方法是什么,允许在不增加数据库模式的情况下添加新类型?
从数据库中检索数据时,将这些多态实体转换为正确的域模型的最佳方法是什么?
为了避免内部平台效应,如果每个产品类型都有一个数据库表(用于存储该类型的产品),那么我仍然需要一种方法来检索跨越产品类型的所有产品.如何实现?
我与Nikhilk更详细地讨论了他的SharePoint参考.具体来说,他正在谈论这个:http://msdn.microsoft.com/en-us/library/ms998711.aspx.它看起来很有吸引力.无需解析XML; 并且可以进行一些索引,允许对数据进行简单快速的查询.例如,我可以说"找到所有75瓦灯泡",因为当行代表灯泡时,行中的第一个int列是瓦数.应用层中的某些东西(NHibernate?)将定义从产品类型到用户数据模式的映射.
投下具有属性表的架构,因为这可能导致每个产品有很多行.这可能会导致索引困难,而且所有查询都必须基本上转移数据.
使用 Sharepoint 样式的 UserData 表,该表具有一组字符串列、一组 int 列等以及一个类型列。
然后,您将获得一个类型表列表,该表指定每种类型的架构 - 其属性以及它们在 UserData 表中映射到的特定列。
使用 Azure 和其他实用计算存储之类的东西,您甚至不需要定义表。每个存储对象基本上都是一本字典。