php - 根据需求设计mysql表
PHP中文网
PHP中文网 2017-04-10 18:01:04
[PHP讨论组]

大家好,首先感谢大家浏览该问题
说下需求:商城项目中商品的属性问题,举个例子来说:
衣服有颜色和尺码两个属性,我的想法是单独的来一张表记录不同属性的价格和库存
比如:
黑色 - M号 - 70元 - 35件
黑色 - L号 - 73元 - 32件
白色 - L号 - 73元 - 30件
这张表就这么设计,但是问题来了,比如手机有这么几个属性,颜色、内存、运营商(非合约、移动、联通、电信)
如果仍然按上面衣服的方法来,很明显要多出一列,也就是
白色 - 32G - 移动合约机 - 20元 - 10部
白色 - 32G - 联通合约机 - 30元 - 50部
金色 - 32G - 电信合约机 - 10元 - 40部

如果把这些属性信息都序列化之后存储也可以,but当我想搜索华为32G移动合约机的时候似乎就是个麻烦事了,请问大家有没有什么好的思路可以提供,谢谢诸位,不胜感激
PS:看了ecshop的设计,是有个商品基价,然后价格在基价上加减,但是不太倾向这种做法,添加商品的时候似乎有些麻烦

PHP中文网
PHP中文网

认证0级讲师

全部回复(2)
迷茫

个人觉得你这个问题应该是两个问题,第一如何设计一个好的商品表的数据结构,第二如何更好搜索商品。首先第一个问题:设计商品表。首先你得分析一下你的商城业务都有那些商品,商品主表跟商品属性表是一对多的关系,不同的商品可能需要设计不同的关系结构。简单思路有如ecshop那种,也有将属性单列一张表的,但是属性单列一张表会有数据冗余。
1.可以将属性表多设计几个字段。
1).设计一个商品表。存储商品的通用字段。
2).设计一个价格表,属性表字段包括,规格,颜色,但是由于有些字段不是通用的,所以可能会有冗余,可以放默认值。
2.如何更好搜索商品。
比如搜索:华为32G移动合约机,如果用户输入华为32G移动合约机,来进行商品搜索。如果华为32G移动合约机不是商品名称,系统应该先做分词,分词之后再进行搜索对比。如果华为32G移动合约机直接为商品名称,则可以直接搜索。

怪我咯

增加一个属性表
product_id key value
多个属性多几行记录就行了

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号