[SQL ] 设计资料表的字段

楼主: kattte (诚实面对自己吧!)   2015-11-28 12:23:48
数据库名称: 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
作者: konkonchou (卡卡猫)   2015-11-28 14:15:00
master detail 分开存
楼主: kattte (诚实面对自己吧!)   2015-11-28 16:17:00
我原本也是打算这样
作者: rockchangnew (rock)   2015-11-28 20:06:00
不利搜寻,每笔计录都要算,索引用不上

Links booklink

Contact Us: admin [ a t ] ucptt.com