请问这样设计有问题吗?有没有更好的设计方法?(继)

bolome 2008-08-28 08:35:22
原贴:http://topic.csdn.net/u/20080806/11/302cf870-070d-445e-af27-f67de536c7a5.html


产品表
产品ID 始发地 目的地 票价
a 武汉 长沙 80
b 武汉 长沙 120
C 武汉 长沙 100
d 武汉 合肥 60
产品时间表
产品ID 出发日期A 出发日期B 周一 周二 周三 周四 周五 周六 周日
a 2008-9-10 2008-9-30 1 1 1 1 1 0 0
a 2008-10-10 2008-10-25 1 1 1 1 1 0 0
b 2008-10-1 2008-10-9 1 1 1 1 1 1 1
c 2008-9-10 2008-9-30 0 0 0 0 0 1 1
d 2008-8-25 2008-12-31 1 1 1 1 1 1 1
班车表
产品ID 班车号
a YWK102
a YWK103
a YWK126
b YWK888

发现原来的表还不够完整.因为产品随时间的变化会过期,新旧产品的ID会同时出现在一张表中,像这样子:
产品表
产品ID 始发地 目的地 票价
a 武汉 长沙 80
b 武汉 长沙 120
C 武汉 长沙 100
d 武汉 合肥 60
a 武汉 长沙 85
b 武汉 长沙 125
c 武汉 长沙 105
d 武汉 合肥 65
产品时间表
产品ID 出发日期A 出发日期B 周一 周二 周三 周四 周五 周六 周日
a 2008-9-10 2008-9-30 1 1 1 1 1 0 0
a 2008-10-10 2008-10-25 1 1 1 1 1 0 0
b 2008-10-1 2008-10-9 1 1 1 1 1 1 1
c 2008-9-10 2008-9-30 0 0 0 0 0 1 1
d 2008-8-25 2008-12-31 1 1 1 1 1 1 1
a 2009-1-1 2009-1-30 1 1 1 1 1 1 1
a 2009-1-31 2009-2-16 1 1 1 1 1 0 0
b 2009-1-1 2009-1-25 1 1 1 1 0 0 0
c 2009-1-1 2009-1-20 1 1 1 1 1 1 1
d 2009-1-1 2009-2-2 1 1 1 1 1 0 0
班车表
产品ID 班车号
a YWK102
a YWK103
a YWK126
b YWK888
a YWK202
a YWK218
b YWK888
d YWK326

请问大家用什么做标志字段判断过期呢?是在表中添加一个bit类型的字段吗??
...全文
158 15 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
CodeShow 2008-08-30
  • 打赏
  • 举报
回复
进来看看
zoujp_xyz 2008-08-29
  • 打赏
  • 举报
回复
帮顶
-晴天 2008-08-29
  • 打赏
  • 举报
回复
建议:
如果数据量不大,增加一个标记列,bit类型,当数据失效时将标记列置1,在对有效数据检索时,设置条件为标记列=0.如果万一要检索到失效数据,则用where flag=1就行了.
liuke100 2008-08-29
  • 打赏
  • 举报
回复
你是怎么来判断一个表中的数据是否过期的,
能不能给每个表增加一个相同结构的历史表;
如:goods(产品表) 给它增加一个goodslog(产品历史表)用来存放过期的数据;

每当你增加新的数据时,就把相应的过期数据转移到历史表中,这里也可以写个存储过程来进行操作;
不知道这样可否?
一品梅 2008-08-29
  • 打赏
  • 举报
回复
学习科学文化知识
bolome 2008-08-29
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 szx1999 的回复:]
引用 3 楼 bolome 的回复:
引用 1 楼 libin_ftsafe 的回复:
过期的数据放到一张历史表里,当前表没有必要保留历史数据。

产品每三四个月就要更新一次的.如果历史表中也不做标志,会不会也变乱了呢?

既然更新的频率这么低,那么可以放在同一张表中,在ID上建立聚集索引,检索效率应该很高的。
加个bit型字段标志是否过期即可。如果有查看每一阶段的产品的需求,再加个过期时间也很不错。
[/Quote]
有三张表是不是每表上都要加个bit型字段?
sick00001 2008-08-29
  • 打赏
  • 举报
回复
就是啊,看不懂
bolome 2008-08-29
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 liuke100 的回复:]
你是怎么来判断一个表中的数据是否过期的,
能不能给每个表增加一个相同结构的历史表;
如:goods(产品表) 给它增加一个goodslog(产品历史表)用来存放过期的数据;

每当你增加新的数据时,就把相应的过期数据转移到历史表中,这里也可以写个存储过程来进行操作;
不知道这样可否?
[/Quote]
这个不错.
等不到来世 2008-08-28
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 bolome 的回复:]
引用 1 楼 libin_ftsafe 的回复:
过期的数据放到一张历史表里,当前表没有必要保留历史数据。

产品每三四个月就要更新一次的.如果历史表中也不做标志,会不会也变乱了呢?
[/Quote]
既然更新的频率这么低,那么可以放在同一张表中,在ID上建立聚集索引,检索效率应该很高的。
加个bit型字段标志是否过期即可。如果有查看每一阶段的产品的需求,再加个过期时间也很不错。
alzw2022 2008-08-28
  • 打赏
  • 举报
回复
随便看看
bolome 2008-08-28
  • 打赏
  • 举报
回复
但是我的新旧产品总会有几天共存才行啊?
bolome 2008-08-28
  • 打赏
  • 举报
回复
将每个产品ID设一个失效日期字段,到了日期后就放到历史表中,原表删除,是吗?
bolome 2008-08-28
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 libin_ftsafe 的回复:]
过期的数据放到一张历史表里,当前表没有必要保留历史数据。
[/Quote]
产品每三四个月就要更新一次的.如果历史表中也不做标志,会不会也变乱了呢?
comszsoft 2008-08-28
  • 打赏
  • 举报
回复
没看懂,只能顶
子陌红尘 2008-08-28
  • 打赏
  • 举报
回复
过期的数据放到一张历史表里,当前表没有必要保留历史数据。

27,582

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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