zoukankan      html  css  js  c++  java
  • (转)商城系统商品属性的数据库设计思路

    http://www.360doc.com/content/12/0513/18/1542811_210764350.shtml

    最近看到一个题目,要求提出一套商品属性相关的数据库设计思路,要求是商品属性的类别(例如品牌,尺寸,颜色...)不确定,各个属性类别的属性值(例如品牌可能是HP,IBM...)不确定,同时需要实现针对不同属性类别的商品检索,例如检索出品牌为XX,尺寸为XX,颜色为XX的商品,各条件为AND操作,另外每个属性类别的条件可能为品牌=XX or 品牌 = YY这样的OR操作,最终实现出类似淘宝商品检索页面那样的功能如下(品牌,裤长等条件为AND关系,品牌中的可以选择多个品牌,为OR关系)

    经过一番思考,数据库设计如下:

    • 属性类别表spec

    spec_id —— 属性类别id

    spec_name —— 属性类别名称

    • 属性值表spec_info

    spec_info_id —— 属性值id

    spec_id —— 属性类别

    spec_info_name —— 属性值名称

    • 商品表goods

    goods_id —— 商品id

    goods_name —— 商品名称

    • 商品属性表goods_spec

    goods_spec_id —— 商品属性id

    goods_id —— 商品id

    spec_info_id —— 商品属性值id

    建立以上4个数据库后,spec表存放的是品牌,颜色,尺码等的属性名,spec_info表存放的是红色,蓝色,HP,IBM等的实际的属性值,再通过goods_spec表将一个商品跟它的属性进行关联,这样要实现类似淘宝的检索功能的SQL语句就可以编写如下:

    假设要检索品牌为IBM或HP(在spec_info表中的spec_info_id 分别为1和2),颜色为红色(在spec_info表中的spec_info_id 为6),尺码为15寸(在spec_info表中的spec_info_id 为5)的商品

    $sql = "select * from goods_spec where spec_info_id = 5 and goods_id in (select goods_id from goods_spec where spec_info_id = 6 and goods_id in (select goods_id from goods_spec where spec_info_id = 1 or spec_info_id = 2));

    PS: 这些商品的搜索都是基于数据库 SQL 的, 可以看出用户选择了几个条件,最终的 SQL 就会有连几张数据库表的 SELECT 查询。 我已经用红色粗体标出 !!

    如果用户选中了 10 个条件, 那么一次搜索将会 10 次 select join (或者子查询) !  

  • 相关阅读:
    pyspider 爬虫教程(一):HTML 和 CSS 选择器
    EF异常:对一个或多个实体的验证失败
    通过Excel生成PowerDesigner表结构设计
    C#几种常用的加密方式
    在powerdesigner中创建物理数据模型
    powerdesigner逆向工程,从数据库导出PDM
    PowerDesigner怎样才能在修改表的字段Name的时候Code不自动跟着变
    如何查看用pip命令安装的软件的安装路径
    ckeditor编辑的使用方法
    【转】[慢查优化]联表查询注意谁是驱动表 & 你搞不清楚谁join谁更好时请放手让mysql自行判定
  • 原文地址:https://www.cnblogs.com/telwanggs/p/7205362.html
Copyright © 2011-2022 走看看