和很多人一样,我正在寻找Products /Product Properties
数据库模式。我正在使用 Ruby on Rails 和(Thinking)Sphinx 进行多面搜索。
要求:
- 添加新产品类型及其选项不需要更改数据库架构
- 支持使用 Sphinx 进行分面搜索。
我遇到的解决方案:(
见比尔卡尔文的回答)
选项 1:单表继承
真的不是一个选择。该表将包含许多列。
选项 2:类表继承
Ruby on Rails 在启动时缓存数据库模式,这意味着每当引入新类型的产品时都会重新启动。如果您有一个大小合适的产品目录,这可能意味着数百个表格。
选项 3:序列化 LOB
杀死能够在没有繁重的应用程序逻辑的情况下进行多面搜索。
选项 4:实体-属性-值
出于测试目的,EAV 工作正常。However it could quickly become a mess and a maintenance hell as you add more and more options (eg when an option increase the prices or delivery time).
我应该选择什么?还有哪些其他解决方案?有没有我忽略的灵丹妙药(哈)?