读书人

关于表结构的设计有关问题

发布时间: 2012-03-09 21:42:52 作者: rapoo

关于表结构的设计问题
三张表:

工程表 论文表 获奖表

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

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

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



[解决办法]
第一种方法可以,但不太好
第二种方法不对,不能那样设计,应该有个标记字段,标记是哪种类型得的奖就可以了,这样方便扩充,也方便查询.此为上策
[解决办法]
方法都不好。
第一:获奖表根本就是多余,你可以用生成
第二:表需要一字段即可,前以分是哪。比如 "0 "代表工程表,“1”代表文表, "0001 "代表工程表中001ID的
[解决办法]
这样设计比较合理:
在工程表和论文表中添加获奖ID字段,也就是工程表和论文表引用获奖表

[解决办法]
第一个不错啊!偶觉得可行!

[解决办法]
获奖表--------IDKye,type,ID
IDKey为主键类型可以设置别的表也可以定列一个规则(如工程表—gbhz, 论文表—lwhz)以后还有别的状可以再加入ID为对应的表的ID了。
查询的时候主要查询对应的类型就可以知道那个什么的呀

[解决办法]
是啊,第一种方法操作起来就是两张表,得用事务做的,有没有更好更简单的办法呢?
-----------
用触发器也可以啊
[解决办法]
再建个表 用来管理文章和获奖的关系
[解决办法]
事务是为了保证数据的一致性和完整性,就你现在的情况,用的没错
触发器是数据库的功能,就你现在的情况,在数据库中建立一个触发器,当完成向获奖表插入一条信息后,触发对应表的数据更改事件。这样可以不用事务程序代码量少点。
[解决办法]
当未获奖时填0
——————————————————————————————————————————
当未获奖时保持为null。不要随便混淆数据类型,如果没有或者未知(注意,包括未知),不要用一个自认为可以区分的值,应该用系统专门用来表达这种情况的值。
[解决办法]
帮顶,学习
[解决办法]
我觉得第一种和第二种都可以的
但是按说在查询起来第一种要比第二种速度快一些
我事倾向于第一种方法
[解决办法]
如果你的 工程 和 论文 都可能是 获取
多种奖励
那么
数据库 的设计 应该是 工程和论文 对于 获奖表 是 1 对 多 关系

合理的 数据库 设计不要光想到在一个表 查询就快
还要考虑 扩展 和实际使用中的 关系
[解决办法]
第二种方法可行,不过字段设计得改一下,用一个字段存工程表、论文表各自对应的ID,再设计一个标记字段用来区分是工程还是论文获得奖,这样以后查询也比较好处理。

读书人网 >asp.net

热点推荐