请问应该如何设计表结构

yaotomo 2014-09-17 04:52:51
现在数据库中有两个表
成本项目表tb_costitem,存放成本项目
基础数据表tb_basedata,存放许多产品成本项目的总成本和总消耗
比如,成本项目表中共有50条成本项目,基础数据表中的产品A对应50条数据,产品B对应50条数据。。。。每种产品都对应50条数据

tb_costitem和tb_basedata两个表靠索引列来关联,因为每种产品对应的50条数据,要和50条成本项目一一对应,哪个成本项目对应哪条数据,都根据这两个表中的索引值来确定。

成本项目表里存放的数据是一个树形结构,用户可以添加节点,删除节点,移动节点。每做这些操作时,系统会使用深度优先遍历算法重新计算树的索引。但是,基础数据表的索引并不会跟着变化,也就是说两个表的索引不同步。

用户上传新数据到基础数据表的时候,通过存储过程给他们分配索引。新插入的数据的索引都没有问题,问题是老数据索引是有问题的,报表展示时显示的成本项目和基础数据对不上号。

请问有什么好的解决方案能解决索引不同步的问题吗?需要在怎样设计数据库的表结构?

我现在的表结构
...全文
166 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
yaotomo 2014-09-18
  • 打赏
  • 举报
回复
引用 1 楼 Tiger_Zhao 的回复:
成本项目表加字段项目ID,两个表靠项目ID关联,索引字段仅供显示时排序用。 注意:如果成本项目允许删除,则基础数据表中相应的数据将不再被显示。
谢谢提供思路。删除成本项目的时候,必须更新基础数据表中相应的成本项目id。或者设置外键级联删除掉基础数据表中相应数据就可以了。我先试一下。
yaotomo 2014-09-18
  • 打赏
  • 举报
回复
引用 2 楼 jayzhihui 的回复:
外键关联,级联更新,基本就这些!再有就是根据查询条件添加索引之类~~
索引列在成本项目表不是主键,因为还有类型列,不同类型有自己的索引编号,所以也不能设置基础数据表的索引列为外键。
jayzhihui 2014-09-17
  • 打赏
  • 举报
回复
外键关联,级联更新,基本就这些!再有就是根据查询条件添加索引之类~~
Tiger_Zhao 2014-09-17
  • 打赏
  • 举报
回复
成本项目表加字段项目ID,两个表靠项目ID关联,索引字段仅供显示时排序用。
注意:如果成本项目允许删除,则基础数据表中相应的数据将不再被显示。

34,575

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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