目前要做一个手机版商城, 在设计数据库时遇到该问题..
比如一件衣服,这件衣服有红色、白色、蓝色,
红色又有X,XL,XLL尺码,
白色有S,M,X,XL
蓝色有M,X,XL
对于自己设计的数据库一直感到不太满意,望各路大神,赐教.
此问题的引申 一般商场不可能只出售衣服 , 还有会有电子产品等等乱七八糟的 后期扩展性 要怎么办呢?
回复内容:
目前要做一个手机版商城, 在设计数据库时遇到该问题..
比如一件衣服,这件衣服有红色、白色、蓝色,
红色又有X,XL,XLL尺码,
白色有S,M,X,XL
蓝色有M,X,XL
对于自己设计的数据库一直感到不太满意,望各路大神,赐教.
此问题的引申 一般商场不可能只出售衣服 , 还有会有电子产品等等乱七八糟的 后期扩展性 要怎么办呢?
尺码(chimas)表
id | mark ------------ 1 | X 2 | XL 3 | XLL 4 | M 5 | S
颜色(colors)表
id | color ------------ 1 | 蓝 2 | 白 3 | 红 4 | 紫 5 | 灰
衣服(yifus)表
id | name ------------ 1 | 大衣 2 | 毛裤 3 | 内衣 4 | 内裤
衣服与颜色关联(yifu_colors)表
id | color_id | yifu_id ---------------------------- 1 | 1 | 1 2 | 1 | 2 3 | 2 | 1 4 | 2 | 2
衣服与尺码关联(yifu_chimas)表
id | chima_id | yifu_id ---------------------------- 1 | 1 | 1 2 | 2 | 2 3 | 1 | 2 4 | 2 | 1
依你的需求里衣服包含款式、颜色、大小三个属性。 自然也就是对应四个逻辑数据表了。
你之前纠结的地方在于把颜色和大小附属于款式了。
前三个表引用二楼的
尺码(size)表
<code>id | mark ------------ 1 | X 2 | XL 3 | XLL 4 | M 5 | S </code>
颜色(colors)表
<code>id | color ------------ 1 | 蓝 2 | 白 3 | 红 4 | 紫 5 | 灰 </code>
衣服(clothes)表
<code>id | name ------------ 1 | 大衣 2 | 毛裤 3 | 内衣 4 | 内裤 </code>
第四个表可以是直接是衣服跟尺码和颜色的关联表
衣服样式表(clothes_spec)
<code>id | clothes_id | size_id | color_id ------------------------------------ 1 | 1 | 1 | 2 2 | 2 | 1 | 2 3 | 1 | 3 | 1 </code>
第四个表这样做的好处是更清晰,因为少了一个表,查起来速度也快一点。但是不足是扩展起来比较麻烦,每添加一个属性就要向表中添加一个列。但是如果是商品量,用户量很大的情况下,这种方式还是比较有优势的。
扩展性是个问题,给出我的想法吧,坐等大牛给出扩展性好的方案:
id(商品id) | name(商品名称) | color(颜色) | size(尺码) | count(数量) |
---|---|---|---|---|
1 | 某衣服 | red | M | 0 |
1 | 某衣服 | red | X | 100 |
1 | 某衣服 | red | XL | 200 |
1 | 某衣服 | red | XLL | 300 |
查询红色衣服有哪些尺码
<code>select size from table where id={id} and color='red' and count > 0 </code>
建议你去网上找关于库存SKU的文章和设计方法
商品表:
<code>good_id, title, cate_id </code>
类目属性表:
<code>cate_id, attr_id </code>
商品属性分类表:
<code>attr_id, attr_label, attr_key(做alias用), attr_sort 1, 颜色, COLOR, 0 2, 尺码, SIZE, 1 </code>
商品属性详情表:
<code>good_id, attr_value_id,attr_id, attr_value_title, attr_value_sort 1, 1, 1, 红色, 0 1, 2, 1, 蓝色, 1 1, 3, 2, 19, 0 1, 4, 2, 20, 1 </code>
如果你要考虑后期的扩展性,建议采用MySQL的EVA结构,不然上面的几种到扩展的时候,都比较麻烦。
这设计也太糟糕了。。SKU不能这么设计。

php把负数转为正整数的方法:1、使用abs()函数将负数转为正数,使用intval()函数对正数取整,转为正整数,语法“intval(abs($number))”;2、利用“~”位运算符将负数取反加一,语法“~$number + 1”。

实现方法:1、使用“sleep(延迟秒数)”语句,可延迟执行函数若干秒;2、使用“time_nanosleep(延迟秒数,延迟纳秒数)”语句,可延迟执行函数若干秒和纳秒;3、使用“time_sleep_until(time()+7)”语句。

php字符串有下标。在PHP中,下标不仅可以应用于数组和对象,还可应用于字符串,利用字符串的下标和中括号“[]”可以访问指定索引位置的字符,并对该字符进行读写,语法“字符串名[下标值]”;字符串的下标值(索引值)只能是整数类型,起始值为0。

php除以100保留两位小数的方法:1、利用“/”运算符进行除法运算,语法“数值 / 100”;2、使用“number_format(除法结果, 2)”或“sprintf("%.2f",除法结果)”语句进行四舍五入的处理值,并保留两位小数。

判断方法:1、使用“strtotime("年-月-日")”语句将给定的年月日转换为时间戳格式;2、用“date("z",时间戳)+1”语句计算指定时间戳是一年的第几天。date()返回的天数是从0开始计算的,因此真实天数需要在此基础上加1。

在php中,可以使用substr()函数来读取字符串后几个字符,只需要将该函数的第二个参数设置为负值,第三个参数省略即可;语法为“substr(字符串,-n)”,表示读取从字符串结尾处向前数第n个字符开始,直到字符串结尾的全部字符。

方法:1、用“str_replace(" ","其他字符",$str)”语句,可将nbsp符替换为其他字符;2、用“preg_replace("/(\s|\ \;||\xc2\xa0)/","其他字符",$str)”语句。

查找方法:1、用strpos(),语法“strpos("字符串值","查找子串")+1”;2、用stripos(),语法“strpos("字符串值","查找子串")+1”。因为字符串是从0开始计数的,因此两个函数获取的位置需要进行加1处理。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

Atom编辑器mac版下载
最流行的的开源编辑器

Dreamweaver Mac版
视觉化网页开发工具

安全考试浏览器
Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。

DVWA
Damn Vulnerable Web App (DVWA) 是一个PHP/MySQL的Web应用程序,非常容易受到攻击。它的主要目标是成为安全专业人员在合法环境中测试自己的技能和工具的辅助工具,帮助Web开发人员更好地理解保护Web应用程序的过程,并帮助教师/学生在课堂环境中教授/学习Web应用程序安全。DVWA的目标是通过简单直接的界面练习一些最常见的Web漏洞,难度各不相同。请注意,该软件中

mPDF
mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),