作者kattte (诚实面对自己吧!)
看板Database
标题[SQL ] 设计资料表的栏位
时间Sat Nov 28 12:23:48 2015
资料库名称: MySQL
内容/问题描述:
最近在做一个收发包裹的系统
在设计资料表的时候遇到了一点问题
在一笔订单中需要记录使用者放在包裹里的东西是什麽
主要有几个分类:
1. 金钱: 需要记录里面放了多少钱
2. 物品: 一本书 一箱苹果 之类的
3. 衣物: 上衣一件 裤子一件
4. 其他:
但是使用者给的东西未必只有 1-4 中的单一项
可能会有一笔订单中包含:
a. 金钱1000元(都是10元硬币)
b. 一箱香蕉
原本我的想法是把内容物都分开存
a 项 是一笔记录 流水号 20151128001
b 项 是一笔记录 流水号 20151128002
把两个东西分开存
但对方要求这笔订单不应该被拆成两个资料
因此我想了另一个方法
我用4个 bit 来记录订单内容的资料
bit 类别
1 金钱
2 物品
4 衣物
8 其他
因此 0001 -> 1 就是 只有 金钱
0101 -> 5 就是 有 金钱+衣物
只是资料库搜寻时 不知道有没有办法来搜寻这个记录呢?
比如说我要查 金钱 那就把订单类别取 2 的余数 如果 > 0
那就把 > 0 的通通列出来
如果要查 衣物 那就取8的余数 如果 > 3 那就把合乎条件的都列出来
如果要查 有物品又有衣物 那就比较麻烦 要先取8的余数再检查
是不是 = 5 或 =7
不知道这样做法如何
这样不知道可不可行
现在是改成用三个栏位来存
一个栏位存金钱
一个栏位存物品
一个栏位存衣物
一个栏位存其他需求
如果订单内容没有金钱 金钱那栏就保持 NULL
有资料就存金钱资料 XX元
搜寻时就检查此栏位是不是 NULL
--
--
▄ ▆ ● ◤ ●
◢ ˙ ˙ ◣ ● ▼◥ ▲●
◆◣ ◤◆ 上吧,蓝胖!!
● ▲●
◥ \◤' (OwQ )
◣ ◣ ◤ ) ) ﹀ \ \
◣
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 115.43.55.22
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Database/M.1448684632.A.78F.html
1F:→ konkonchou: master detail 分开存 11/28 14:15
2F:→ kattte: 我原本也是打算这样 11/28 16:17
3F:推 rockchangnew: 不利搜寻,每笔计录都要算,索引用不上 11/28 20:06
※ 编辑: kattte (115.43.55.22), 12/01/2015 21:36:11