一个java开发数据库设计问题

zq910515 2019-07-17 10:52:42
请教一个问题:
1.设备机(device) 由多个子设备(ChildDev)组成,
2.子设备(ChildDev)包含多个通道(chn);
3.系统的外接设备(ExternalDev)
4.通道(chn)可绑定一个外接设备(ExternalDev)。


现在我的数据库表:
子设备表: ID 、通道数
tb_child_dev : id chnCount ....
说明:对应数据模型 ChildeDev ;id是主键

通道表: 子设备ID 、通道标号(子设备的第几个通道)
tb_chn : devId index ....
说明:对应数据模型 DevChn ;devId 、index组成联合主键

外接设备表:外接设备ID 、子设备ID 、 通道标号(子设备的第几个通道)
tb_external_dev :id devId chnIndex ...
说明:对应数据模型 ExternalDev;id是主键,devId、chnIndex外键


查找外接设备与通道的对应关系(即外接设备绑定在哪个通道)这个很容易。直接查询tb_external_dev;
但是,如果查找通道与外接设备对应关系(即通道绑定了哪个外接设备)却不太实用,出现如下现象
1.查询单个通道时,简单,根据 “子设备ID 、 通道标号”;(这个我觉得没问题,不挑毛病)
2.查询某个子设备的所有通道,也简单根据 “子设备ID ”;(这个我觉得没问题,不挑毛病)
3.查询所有通道绑定的外接设备,查询时也容易,直接查询tb_external_dev。但是用起来却费劲。
针对第3条详细说明:
为什么用起来费劲?
UI如下图:

每一行表示一个子设备,每个子设备2各通道,
我是要把已经绑定了外接设备的通道变个背景色(方便一眼看出,哪个通道绑定了外接设备)。

现在有个问题:
如果像第三条中所说,直接查询tb_external_dev得到的结果在这里基本不是实用,
因为,查询设备通道时查的是通道表(tb_chn),而查绑定关系是tb_external_dev表,
查询出来的结果没有一对一去对应。
在设置UI的背景色,不容易知道tb_external_dev查询出来的结果集中是否有当前通道的绑定关系数据。

那么,如果换你们,这里需要根据通道是否绑定外接设备而显示不同背景。
你们的数据模型、数据表会是怎么样的???

我自己打算建个视图DevChnEx,但是我想听听大佬们的做法。只是学习作用




...全文
141 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
guishuanglin 2019-07-17
  • 打赏
  • 举报
回复
说白了, 你这个通道 就是一个接线端子: 一头连接子设备, 一头连接外部设备, 因此采用方案2 是合理的.
guishuanglin 2019-07-17
  • 打赏
  • 举报
回复
如果每一个通道都可以绑定一个外接设备, 也可以同时绑定子设备, 那就是这样设计. 子设备ID, 通道标号, 绑定外接设备ID, 1 , 0 , 10 2 , 1 , 11 3 , 2 , 12 4 , 3 , null 子设备ID + 通道标号 是PK
guishuanglin 2019-07-17
  • 打赏
  • 举报
回复
既然 [子设备], [外接设备] 都有用通道, 从设计上来说都是设备, 只要加类型区分. 在通道表里加一个设备类型 , 设备类型 可以是 [子设备], [外接设备] : 设备ID, 设备类型, 通道标号 1 , 子设备 , 0 2 , 子设备 , 1 3 , 子设备 , 2 4 , 外接设备 , 3 一查这个表, 全部显示了通道使用情况.

67,515

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧