根据前台设计数据库--首页篇
首先先分析我现在的状况,只会 mysql 和 mongodb,而 thinkphp 框架与这两者的连接我也是成功的,只能进行简单的CUED操作,难一点的数据库操作我就不会了
先从首页开始进行分析:
现在单纯考虑数据库的情况的话,要满足首页的话我需要三张表,一张当然是产品表,现在需要的列有:产品id,产品名称,产品分类id,一张销售表,但是这个销售表存在问题,例如后台管理者想了解某一商品的销量当然容易,但是想要了解这款产品的不同型号的情况的话就不能只记录这款产品的销量了,拿衣服举例,想统计这款产品的各个颜色销量如何,还有各个尺码的销售情况,这个情况当然是从销售表中读了,那么销售表要怎么设计才能满足这个要求?
拿 mysql 来存可以吗?以产品id为外键,以产品的属性为单独一列,例如如下:
ProductID | AttributeName | Vallue |
1 | red | 100 |
1 | blue | 90 |
1 | XL | 80 |
1 | L | 70 |
1 | M | 60 |
可能觉得应该把 red 和 XL 分开两个字段进行存储,但是不能确定产品的到底有几个属性,例如还有面料这一属性,难道再增加一个字段?所以还不如存储在一个字段中,但是这样会有一个大麻烦,超级大的麻烦!我想要知道 red 下 XL 有多少件?瞬间傻掉了,而且这样对于后台进行产品录入的时候也是一个难题,所以这个方案不行,这个时候貌似使用 mysql 搞不定,因为表的字段的限制,导致存储数据不太灵活,这个时候就想到了 mongodb 了,mongodb 采用 json 形式存储数据
例如,插入数据形式如下:
db.admin1.insert({
"ProductID":[{
"red":[{
"xl":100},{ //表示红色下 XL 的存货有100件
"l":90},{
"m":80}
]
}
]
}
...其他颜色的数据,格式如上...
)
采取 json 的数组形式存储数据,就很好的解决了我们上面的问题,而且 json 的格式内容不受约束,可以满足不同类型的产品需求,但是就是不知道读写速度比起 mysql 怎么样。
其实如果一定要采用 mysql 进行存储也不是不行,借用无限分类表的设计理念,可以这样设计表:
AttributeID | attribute_name | value | parent_AttributeID | ProductID |
1 | red | 100 | 0 | 1 |
2 | XL | 60 | 1 | 1 |
3 | L | 40 | 1 | 1 |
4 | blue | 200 | 0 | 1 |
5 | XL | 100 | 4 | 1 |
6 | L | 100 | 4 | 1 |
使用这样的形式就可以存储这样的数据
ProductID 1
red: 100 其中 XL:60 L:40
blue:200 XL:100 L:100
至于如何实现的,具体看 parent_AttributeID ,这样做就是这张表的记录条数会超级多,比如商品有1000件,每件有3个属性,那么每件商品在这张表中拥有的记录数是:3*3*3=27,这张表上的记录就会有1000*27=27,000条。
至于如何抉择那就看个人了,我的话选择 mongodb 进行存储
上面说了两张表,现在说第三张表,分类表,分类表采用无限分类的表设计
CatagoryID | category_name | parent_Category |
1 | 服装 | 0 |
2 | 男装 | 1 |
3 | 女装 | 1 |
4 | 西装 | 2 |
5 | 休闲装 | 2 |
6 | 运动服 | 2 |
只要添加 parent_Category,就可以一直无限分类下去,而且这张表也是搜索框的灵魂,我个人的搜索习惯是不会直接打品牌名称进行搜索,而是按照分类和功能来打,例如想找男士秋装,那么我会输入:
男士 秋装
之后就会出现一些提示,这些提示一般是热搜的词语,但是我想要直接一点,在用户输入关键字之后,搜索这个分类表,之后把他的父级分类加一个字分类和他本身一起,组成提示关键字,例如淘宝上这样:
总结以下,现在需要的三张表的情况如下:
product:ProductID product_name CategoryID
category:CategoryID category_name parent_CategoryID
salerecord:采用 mongodb 存储
这三张表在后面还需要改的,特别是 product
根据前台设计数据库--首页篇相关推荐
- 基于html的珠宝展示网站前台设计与开发(含源文件)
欢迎添加微信互相交流学习哦! 项目源码:https://gitee.com/oklongmm/biye 摘 要 新的世纪,互联网进入一个崭新的阶段,信息化的发展带动其它产业的发展,各行业都将与进行更 ...
- db2查看表结构_作为后端开发如何设计数据库系列文章(一)设计传统系统表结构(Java开发)...
本篇为第一篇.讲解传统系统的表结构设计(Java开发). 讲讲如何避免数据库设计的一些坑,方便后期的开发与维护. 以前经常能够看到,数据库范式,现在说数据库三大范式的少了. 三大范式我以前也很严格的弄 ...
- 作为后端开发如何设计数据库系列文章(一)设计传统系统表结构
本篇为第一篇.讲解传统系统的表结构设计(Java开发). 讲讲如何避免数据库设计的一些坑,方便后期的开发与维护. 以前经常能够看到,数据库范式,现在说数据库三大范式的少了. 三大范式我以前也很严格的弄 ...
- 后端开发如何设计数据库系列文章(一)设计传统系统表结构(Java开发)
本篇为第一篇.讲解传统系统的表结构设计(Java开发). 讲讲如何避免数据库设计的一些坑,方便后期的开发与维护. 以前经常能够看到,数据库范式,现在说数据库三大范式的少了. 三大范式我以前也很严格的弄 ...
- 用真实业务场景告诉你,高并发下如何设计数据库架构?
目录: 用一个创业公司的发展作为背景引入 用多台服务器来分库支撑高并发读写 大量分表来保证海量数据下查询性能 读写分离来支撑按需扩容及性能提升 高并发下的数据库架构设计总结 这篇文章,我们来聊一下对于 ...
- axure交互页面设计【学习篇01】
axure学习记录一.2020.0305 未来会在这个专题下不定期更一些关于axure学习日常,小白入手,希望大家能够一起学习进步吧~ 今天这期教程是跟着b站 up主av40374556 学习的,附上 ...
- JQuery Smart UI 简介(六) — 框架设计【后篇】(数据接口、后台框架)[简介系列完结]...
上篇介绍了Smart UI的前台架构,本篇继续后面的内容 - Data Interface.Business Layout.DataAccess. Data Interface 数据接口,Smart ...
- 300个涵盖IT各方面的免费资源(中)——设计与编码篇
A. 免费的设计资源 Freebbble:来自于Dribbble的免费的高质量作品. Dribbble:Dribbble上"免费"的搜索结果--这是巨大的宝藏. Graphic B ...
- 设计数据库的表时应该考虑的因素
5.2 设计表时应该考虑的因素 小天:按照你的说法,我理解为,设计数据库其实就是设计数据库中的表.如果真是这么重要的话,到底要注意些什么才能够设计好一个数据库呢? 老田:一个宗旨"尽量少的表 ...
最新文章
- MATLAB寻址访问按什么优先,matlab笔记
- Linux Server - NAT
- 史上最轻量K8s发行版,赋能边缘计算
- Pro*C 中嵌入pl/sql块
- 3dmax天光渲染设置_【扮家家云渲染效果图】3dmax测试全局照明效果|干货教程...
- Intellij IDEA IDE 运行Sphinx-4 DEMO helloworld出现空...
- win7 64 php5ts.dll,windows7 64位 php5.3安装php_mongo.dll方法
- the JAR file spring-beans-4.0.0.RELEASE.jar has no source attachment
- ISL22346WFRT20Z-TK 数字电位器 4路 I²C
- Fuzzy analytic hierarchy process(模糊层次分析法)论文学习
- 新手入门 哪个视频剪辑软件好用
- 【JS】JavaScrpt快速去除数组array中的空字符和undifined字符---使用es6的filter()函数
- 阿里巴巴矢量图标引用问题
- Docker 常用命令收录 -- 持续更新
- 超级干货 :一文总览数据科学全景:定律、算法、问题类型...
- python+tkinter仿制win10标准型计算器(中文版)完美教学
- 动态生成表格案例(HTML+CSS+JS)
- 2021年全球及中国小麦产量、消费及库存情况分析[图]
- 【每日英文】2021.8.17
- Eclipse搭建C++\C开发环境