考虑具有多个商店的电子商务应用程序.每个商店所有者都可以编辑他商店的商品目录.
我当前的数据库架构如下:
item_names: id | name | description | picture | common(BOOL)
items: id | item_name_id | picture | price | description | picture
item_synonyms: id | item_name_id | name | error(BOOL)
Run Code Online (Sandbox Code Playgroud)
注意:error表示拼写错误(例如"Ericson").description并且picture该item_names表是"全局",可以选择性地被"本地" description和表的picture字段覆盖items(如果商店所有者想要为项目提供不同的图片).common帮助分离独特的项目名称("吉米乔的奶酪披萨"与"芝士披萨")
我认为这个架构的好处是:
优化搜索和处理同义词:我可以查询item_names&item_synonymstables使用name LIKE %QUERY%并获取item_name_id需要与items表连接的s 列表.(同义词的例子:"Sony Ericsson","Sony Ericson","X10","X 10")
自动完成:再次,对item_names表的简单查询.我可以避免使用DISTINCT它并最大限度地减少变化的数量("索尼爱立信Xperia™X10","索尼爱立信Xperia X10","Xperia X10,索尼爱立信")
不利方面是: …