关于表结构的设计问题

ydfqing 2007-05-10 04:39:49
三张表:

工程表 论文表 获奖表

工程和论文都可以分别获奖

我想在工程表和论文表都设一个是否获奖的字段,当未获奖时填0,若获奖了就对应获奖表里的ID,不知道这样做合理不?

或者,在获奖表里加两个工程ID和论文ID,分别对应工程表里的ID和论文表里的ID,这两种方法哪个好,或者有更好的办法,谢谢大家了先~~~~~

...全文
739 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
Plentiful 2007-05-11
  • 打赏
  • 举报
回复
第二种方法可行,不过字段设计得改一下,用一个字段存工程表、论文表各自对应的ID,再设计一个标记字段用来区分是工程还是论文获得奖,这样以后查询也比较好处理。
hertcloud 2007-05-10
  • 打赏
  • 举报
回复
如果你的 工程 和 论文 都可能是 获取
多种奖励
那么
数据库 的设计 应该是 工程和论文 对于 获奖表 是 1 对 多 关系

合理的 数据库 设计不要光想到在一个表 查询就快
还要考虑 扩展 和实际使用中的 关系
117hn 2007-05-10
  • 打赏
  • 举报
回复
我觉得第一种和第二种都可以的
但是按说在查询起来第一种要比第二种速度快一些
我事倾向于第一种方法
mdl821120 2007-05-10
  • 打赏
  • 举报
回复
帮顶,学习
ydfqing 2007-05-10
  • 打赏
  • 举报
回复
谢谢SP1234指点~~~~
  • 打赏
  • 举报
回复
当未获奖时填0
——————————————————————————————————————————
当未获奖时保持为null。不要随便混淆数据类型,如果没有或者未知(注意,包括未知),不要用一个自认为可以区分的值,应该用系统专门用来表达这种情况的值。
vbman2003 2007-05-10
  • 打赏
  • 举报
回复
事务是为了保证数据的一致性和完整性,就你现在的情况,用的没错
触发器是数据库的功能,就你现在的情况,在数据库中建立一个触发器,当完成向获奖表插入一条信息后,触发对应表的数据更改事件。这样可以不用事务程序代码量少点。
ydfqing 2007-05-10
  • 打赏
  • 举报
回复
人呢?

是不是都下班啦?

记得明天过来帮我看啊~~~~~~~~~~~
ydfqing 2007-05-10
  • 打赏
  • 举报
回复
必须得用事务做的,否则数据很有可能对不上的~~~~

我就用第一种方法了,添加工程表的记录时候,

我是否可以先全部把获奖的字段默认为0,

如果获奖了,再用事务添加获奖表的同时修改这个字段?
oliverkahn 2007-05-10
  • 打赏
  • 举报
回复
用第一种方法蛮好的啊,到时直接用sql把相关的两张表连起来不就行了吗?如果想方便就建一个存储过程,没有必要用事务,又不存在锁的问题,更没有必要用触发器,触发器尽量不用为好。
confei 2007-05-10
  • 打赏
  • 举报
回复
再建个表 用来管理文章和获奖的关系
ydfqing 2007-05-10
  • 打赏
  • 举报
回复
触发器不行的,我是在ASP.NET里面用程序写的事务啊
vbman2003 2007-05-10
  • 打赏
  • 举报
回复
是啊,第一种方法操作起来就是两张表,得用事务做的,有没有更好更简单的办法呢?
-----------
用触发器也可以啊
ydfqing 2007-05-10
  • 打赏
  • 举报
回复
fangbuge(窗外的雨) ( ) 信誉:101 Blog 加为好友 2007-05-10 16:52:28 得分: 0


第一种方法,如果操作得奖信息,你就需要操作两张表(一张得奖表,还要改状态),这样数据库就容易让数据库产生数据不一致的问题。

//...................................................

是啊,第一种方法操作起来就是两张表,得用事务做的,有没有更好更简单的办法呢?
trainli 2007-05-10
  • 打赏
  • 举报
回复
获奖表--------IDKye,type,ID
IDKey为主键﹐类型可以设置别的表也可以定列一个规则(如工程表—gbhz, 论文表—lwhz)以后还有别的状可以再加入﹐ID为对应的表的ID了。
查询的时候主要查询对应的类型就可以知道那个什么的呀
vbman2003 2007-05-10
  • 打赏
  • 举报
回复
获奖表不一定是多余的,比如要术保存获奖的具体信息时,就很有必要了,不可能将这些信息直接保存到其它二个表中去吧?
fangbuge 2007-05-10
  • 打赏
  • 举报
回复
第一种方法,如果操作得奖信息,你就需要操作两张表(一张得奖表,还要改状态),这样数据库就容易让数据库产生数据不一致的问题。
oliverkahn 2007-05-10
  • 打赏
  • 举报
回复
第一个不错啊!偶觉得可行!
ydfqing 2007-05-10
  • 打赏
  • 举报
回复
forgot(忘记forgot2000)
............................

大哥,繁体字看不大懂啊
dddd218 2007-05-10
  • 打赏
  • 举报
回复
这样设计比较合理:
在工程表和论文表中添加获奖ID字段,也就是工程表和论文表引用获奖表
加载更多回复(3)

62,025

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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