第 14 章 · 第四节
供应商表:五位编号够不够
前两位是省,后三位是序号,一个省最多一千家。

试一试这几位能编多少个号
看哪一个
按纯数字编号算,这几位能编出多少个
| 位数 | 能编到 | 够用吗 |
|---|
重 点
位数是估出来的,估小了将来加不上,估大了天天浪费。
上机做
想一想
第一千零一家供应商来了怎么办?
前两位是省,后三位是序号,一个省最多一千家。

| 位数 | 能编到 | 够用吗 |
|---|
位数是估出来的,估小了将来加不上,估大了天天浪费。
第一千零一家供应商来了怎么办?
编号定长,名字变长,时间到秒,缩略图存路径。

| 字段名 | 字段描述 | 数据类型 | 完整性约束 |
|---|
图片本身放磁盘上,表里只留一行路径,不然备份和查询都被拖垮。
概述给到 500 字,比商品名的 40 字宽得多,变长类型不会因此浪费。
两个编号合起来做主码,单价用 DECIMAL(9,2)。

课件写着这个类型能存到 9999999.99,多一分就存不进去。
前一个是总位数,后一个是小数位,整数位就是两数相减,所以最大 9999999.99。
分类编号两位,订单编号十七位,差着十五个数量级。

订单号通常是年月日加流水,十七位一天开一亿单也够。
订单表名叫 Order,ORDER 是保留字,建表时必须加反引号。
物流五列,地址十列,两处位数值得再想想。

地址表最后一列是用户编号,它把地址挂到人身上。
物流编号 char(3) 最多一千条,同表的订单编号却有 17 位。
联系人 char(4) 只装得下四个字,名字长一点的人就录不进去。
这两处你会改成几位?
用户编号自增,权限用 TINYINT 存 1 和 2。

自增主码交给数据库发号,不用自己想编码规则。
登录密码那一行写的是 char(),括号里漏了数字,照抄报 1064。
权限用 TINYINT 存数字,比存中文好在哪?
两张都是联合主码,两列各自又指向别的表。
