关于数据库表设计的疑问?

骑牛上青山
  • 1.1k

最近本人在尝试做一个小的demo,是关于外设如耳机之类的,其中在设计数据的时候,我产生了一个问题,就是比如耳机会有iphone版,ipad版,pc版等等,也可能是都适用,或使用某些设备,这该如何用数据库存储。我一开始的设想是使用字段如:isIphone,isIpad等字段存储,但是可扩展性极差,请问各位有什么好方法?

回复
阅读 2.2k
5 个回答

用二进制方式,不同的型号对应的二进制为:

型号 二进制 十进制
iphone 00001 1
安卓 00010 2
windows 00100 4

如果一个耳机同时支持iphone和安卓,那么支持类型的十进制值为3(1 | 2 = 3),判断一个耳机是否支持某个平台,比如说当前耳机的支持类型为7,则7&1>0,代表支持iphone,同理可证他还支持安卓和windows。

主表里面里加一个字段记录Id 可以像这样 1,2,3

新建一个表,里面存储1-iphone版,2-ipad版,3-pc版。

如果是我的 我会考虑使用标签形式

新建一个标签库
字段:tag_id,tag_type,tag_name,tag_value

tid001(tag_id) fit(tag_type) IPhone(tag_name) iphone(tagvalue)
tid002(tag_id) fit(tag_type) IPad(tag_name) ipad(tagvalue)
tid003(tag_id) fit(tag_type) PC(tag_name) pc(tagvalue)

fit:一个标签的类名,可以自定义多种标签分类,比如:耳机颜色,等各种机型参数

再建一个耳机与标签的关系表,冗余tag_type字段,便于分类展示耳机的不同类型标签
字段:headset——id tag_id tag_type

后期可以基于标签库给耳机做很多不同的标签类型,接口及业务处理逻辑也很统一

忍不住奔跑
  • 5
新手上路,请多包涵

可不可以这样。建一个字段,用0,1,2,3分别对应不同的适应型号或者全适应,读取的时候根据这个值的不同,来表示不同的适应型号

根据你的描述,简单的“多对多”关系即可。
图片描述

Headset (Headset)
PhoneType (PhoneTypeId, Name)
HeadsetPhoneType(Headset, PhoneTypeId)

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
你知道吗?

宣传栏