注册 登录
编程论坛 ASP.NET技术论坛

关于数据库的设计问题

fyz520 发布于 2010-07-23 09:56, 871 次点击
做一个学生信息管理系统 ,有如下字段:

1、基本信息:
学籍号    姓名    性别    出生日期    现住址    班级   身份证号码    家长姓名……
2、各学科成绩
语文   数学    英语   政治……

是把1和2所有的字段放在一张表里面好还是分别放在两张表里面好呢?如果设计成两张表的话,怎么样才能对应哪个学生的成绩是多少呢?这是不是要用到传说中表和表的关联哦?怎么做关联呢?谢谢!
13 回复
#2
misswang2010-07-23 10:17
分开好啊...这个是经验
要用的联表查询就可以了
select [表1字段名],[表2字段名] from [表1],[表2] where [表1某个字段]=[表2的某个字段]

[ 本帖最后由 misswang 于 2010-7-23 10:20 编辑 ]
#3
fyz5202010-07-23 10:29
哦,谢谢哈,那表和表的关联是咋回事呢?
#4
fyz5202010-07-23 11:39
如果两个表分开的话,,,表1存放的是学生的基本信息,表2存放的是学生的成绩,
如果表1有“李四”这个学生,那怎么知道表2中的哪些成绩是“李四”这个学生的啊?
如果在表1删除了“李四”,那表2中“李四”的成绩还在啊,怎么解决这个问题呢?谢谢
#5
yms1232010-07-23 13:57
可以在成绩表加一个学籍号的字段,这个字段与基本信息表的学籍号相对应,然后查询就可以查到对应学生的成绩了。
删除如果是SQL Server的话可以使用触发器来做,基本信息表做一个触发器,删除基本信息表的数据同时删除成绩表。
Access的话只能在程序里做。
#6
bygg2010-07-23 14:31
从你的帖子信息得知,你最少得弄三张表。
1、基本信息表
2、学科表
3、成绩表。

1与3,用学生的编号进行关联,2与3用学生编号及学科关联
#7
fyz5202010-07-23 15:16
以下是引用yms123在2010-7-23 13:57:48的发言:

可以在成绩表加一个学籍号的字段,这个字段与基本信息表的学籍号相对应,然后查询就可以查到对应学生的成绩了。
删除如果是SQL Server的话可以使用触发器来做,基本信息表做一个触发器,删除基本信息表的数据同时删除成绩表。
Access的话只能在程序里做。
谢谢,意思我已经明白了,可是表1和表2的学籍号字段是如何进行关联的呢?怎么操作?还有关联了之后,是不是当我在基本信息表添加一条学籍号为“01”的记录的同时也在成绩表自动添加了一条学籍号为“01”的记录,还有这个触发器是怎么做的啊
#8
yms1232010-07-23 15:28
以下是引用fyz520在2010-7-23 15:16:00的发言:

谢谢,意思我已经明白了,可是表1和表2的学籍号字段是如何进行关联的呢?怎么操作?还有关联了之后,是不是当我在基本信息表添加一条学籍号为“01”的记录的同时也在成绩表自动添加了一条学籍号为“01”的记录,还有这个触发器是怎么做的啊
不一定同时添加,可以在这个学生有成绩时再添加数据到成绩表,比如那个01先添加基本信息表数据,当01有成绩时添加成绩数据到成绩表。
触发器一般需要像SQL Server2000的数据库才能使用,触发器其实就是当对某个表进行某项操作时会触发执行一段代码。
这里就是在对基本信息表进行删除记录操作时设置其触发一段删除成绩表对应记录的代码,这样设置后程序会在删除基本信息表时自动删除与其关联的成绩表。
关联是指ID关联
比如
基本信息表里一个学生的学籍号是01
成绩表这个学生的学籍号还是01
成绩表的学籍号必须在基本信息表存在,并且一个学生的学籍号是唯一不重复的

[ 本帖最后由 yms123 于 2010-7-23 15:33 编辑 ]
#9
fyz5202010-07-23 15:31
我用的是SQL Server 2008哦,具体操作方法能说说吗?谢谢了,或者提供个教程我自己去看看
#10
yms1232010-07-23 15:42
触发器用代码在数据库里就可以创建,不过一两句话说不清楚
百度教程
http://wenku.baidu.com/view/1234933383c4bb4cf7ecd19e.html
SQL 2008目前还没使用呢,只有SQL2005-2000触发器的创建应该都差不多,都是可以使用代码在数据库查询分析器里来创建
#11
fyz5202010-07-23 15:47
以下是引用yms123在2010-7-23 15:28:40的发言:


关联是指ID关联
比如
基本信息表里一个学生的学籍号是01
成绩表这个学生的学籍号还是01
成绩表的学籍号必须在基本信息表存在,并且一个学生的学籍号是唯一不重复的
就是说我两张表里面都有“学籍号”这个字段,而且是唯一不重复的,这就是所谓的表和表之间的关联了吗?
#12
fyz5202010-07-23 15:49
谢谢楼上的,。表1和表2都有同一字段“学籍号”,并且唯一不重复,这就是关联了吗?
#13
yms1232010-07-23 16:36
以下是引用fyz520在2010-7-23 15:49:41的发言:

谢谢楼上的,。表1和表2都有同一字段“学籍号”,并且唯一不重复,这就是关联了吗?
嗯,SQL的关系型数据库都是这样关联的,当然可以多个字段关联,不过那样就过于复杂了,一般情况下不需要多字段关联
#14
fyz5202010-07-23 19:42
哦,谢了,我还以为要在两个表之间做相关设置呢,学习了
1