数据库的问题`~

我要做一个课程表查询系统~数据库里放几张表合适?最好详细一些~~谢谢啦`~~谢谢大家的回答`~~我是用ASP.NET做这个东西~~怪我没说清楚啦~~... 我要做一个课程表查询系统~
数据库里放几张表合适?
最好详细一些~~谢谢啦`~~
谢谢大家的回答`~~
我是用ASP.NET做这个东西~~ 怪我没说清楚啦~~
展开
 我来答
Yingjie2020
2006-05-02
知道答主
回答量:32
采纳率:0%
帮助的人:26万
展开全部
利用ASP和VBScript技术开发Web数据库查询系统- -

一、ASP的工作机制
(1)可以完全同HTML集成。
(2)易于创建,不需要手动编译和连接。
(3)面向对象和易于用ActiveX组件扩展。
(4) 对客户端没有特别的要求,只要有一个浏览器就行。
(5)安全性和保密性较好

二、定位常用的几种开发基于ASP模型的Web数据库应用程序的方法

ASP应用程序是包含了ASP网页的Web应用程序。由于ASP模型具有很多的优点,基于ASP架构的数据库应用程序也是一种功能强大的Web数据库解决方案。

常用的开发ASP应用程序的方法有以下几种:利用Visual InterDev集成环境开发ASP应用程序;利用VB6开发ASP的IIS应用程序;借助FrontPage98开发界面,直接编辑ASP文本文件等三种方法。

对于一般的开发人员,微软的VISUAL INTERDEV以其强大的功能和优秀的集成编辑环境成为开发ASP应用程序的首选工具。

三、设计一个具体的Web数据库查询系统

一个基本的Web数据库查询系统可以是如下结构的:

在Web数据库查询中,后台数据库的连接是至关重要的。ASP对数据库的访问主要是通过内置对象ADO(Active Data Object)来实现的。ADO是Microsoft针对网络数据库应用和Visual系列开发工具所开发的数据对象,在微软的系列产品中得到了很好的支持。在ASP中它可以被认为是一种数据库服务组件。与很多程序员熟悉的RDO、DAO不同,ADO是在OLE DB规范下开发的,它具有面向对象的特性.操作方法和DAO类似。

通过ADO访问Web数据库已经成为开发Web数据库查询系统的一般模式。在Web上访问数据库一般可分为以下步骤:

(1) 创建数据库源名。数据库源名,即Data Source Name是连接ODBC和数据库的桥梁,ODBC通过DSN来找到要访问的数据库。在Windows的控制面板中提供了一个名为“32位ODBC”的工具对其进行管理。在单机环境中开发Web应用时,这种通过首先创建数据库源的方法来访问数据库具有较好的可调试性,否则必须连接到一个Web上的服务器来寻找一个可供访问的数据库源。

(2) 创建数据库连接。在ASP中要访问数据,必须还要创建与数据库的连接。

具体语法如下: Set Conn1=Server.CreateObject(“ADODB.Connection”),这样就创建了链接对象Conn1。具体编程中,Conn1是直接访问数据库的一个很关键的对象名。创建数据库连接后,就要打开这个连接以供访问。

具体语法如下:Conn1.Open “DSN1”,“username”,“password” 。最后两个参数是可选参数。

(3) 创建数据对象。RecordSet是ADO中保存数据库命令结果集的对象。通过它可以直接访问数据库中的每个记录和各个字段的属性。具体语法如下:

Set RecordSet=Conn1.Execute(sqlStr) 这条语句创建并打开了一个Recordset对象,sqlStr是一条SQL的查询语句,执行这条SQL语句后返回具体的查询结果给Recordset对象。

(4) 操作数据库。 Execute方法的参数是一个标准的SQL语句串,可以用它来实现数据插入、修改、删除等操作。

(5) 关闭数据对象和链接。打开了一个ADO对象后,必须在使用完后关闭它。以释放在服务器上的资源。

在开发Web数据库应用程序时,由于ASP模型主要是基于服务器端的,只有当用户单击了一个ASP调用(如〈form method="POST" action="complex_result.asp"〉)的超链接或表单的提交按钮后才能工作,无法对客户的输入作出实时响应。如一个检查各字段是否为空的操作,就必须数据传送到服务器端后,才能作出判断。表现在具体编程中,就是判断的代码必须放在下一个页面中。由于VBScript是基于客户端的脚本语言,所以这种检查可以通过在ASP中内嵌VBScript脚本来完成。实际上,一个成功的ASP应用程序经常是ASP模型与VBScript或JavaScript脚本紧密结合的产物。

与一般源代码编写不同的是,ASP应用程序的重点不在一般HTML代码的编写上,IIS只对〈%〉标志对内的代码进行解释和运行。〈%〉标志对内的代码具有相对完整性,可以认为它与一般HTML语言是完全互不影响的。

ASP应用程序的实际实现过程中,界面设计和代码的编写实现一种紧密结合能极大地提高效率。尤其在FrontPage98中,良好的界面设计可以极大地优化程序的结构,也具有较好的可读性。

四、实现技巧及具体实例

以下就笔者的一点经验谈谈在编制ASP应用程序中的一些技巧。

(1)Response对象中的Write方法在直接输出一个由变量表达的字符串时具有重要的作用。甚至它可以作为一种ASP向客户端返回HTML页面的一种主要方式。这也是VB6中创建动态HTML的一种重要方法。

可以参考以下代码:

〈% if rs.fields("有无幻灯").value=true then

response.write "〈td width='13%'〉〈p align='center'〉有〈/td〉"

else

response.write "〈td width='13%'〉〈p align='center'〉无〈/td〉"

end if%〉

(2)对同一表单内的元素可以用Request.Form( parameter)方法获得当前表单内的元素的值,这在实际编程中具有极大的便利。甚至在两个相邻的页面间也能顺利传值。

(3)ASP应用程序中如何解决页面间的传值一直是个关键的问题。一般可以有以下六种方法:

A. 利用Application对象在应用程序的所有用户中共享信息,它可以在服务器运行期间持久地保存数据。

B. 可以用Session对象中的对象为应用程序的单个用户持久保存数据。但保存时间受到Session对象的另一个属性Timeout控制。

C. 相邻页面之间同一表单内的元素可以使用Request.form(parameter)的方法来实现传值。

D. 在ASP应用程序目录中的Global.asa文件中定义一些全局变量及过程。在Global.asa文件中创建的全局变量和过程在整个Web应用程序中都是可见的。

E. 对于在多个页面之间的传值,最适合的方法是利用Request.querystring属性。即在表单的Action或页面元素的超链接中,可以添加关于Request.querystring的引用。具体如下:

〈form method="POST" action="complex_query.asp"?query1=rs.fields(0).value〉

则在complex_query.asp中,可以通过Request.querystring(“query1”)来取得query1的值,并可以采用同样的方法把这个值再传送下去。

F. 还可以利用HTML中隐含域的特性传递。

以下是一段关于Web数据库查询的程序实例。

下面一段程序实现复合查询条件的生成,ASP文件名为Complex_query.asp。

〈html〉

〈%@ Language="VBScript"%〉

〈head〉

〈meta http-equiv="Content-Type" content="text/html; charset=gb2312"〉

〈meta name="GENERATOR" content="Microsoft FrontPage 3.0"〉

〈title〉复合查询页面〈/title〉

〈meta name="Microsoft Theme" content="none"〉

〈meta name="Microsoft Border" content="tl, default"〉

〈/head〉

〈%

set conn1=server.createobject("adodb.connection")

conn1.open "kc_mdb","",""

set rs1= conn1.execute("select * from teacher")%〉

〈body background="bg005.gif"〉

〈hr size="6" color="#FF00FF"〉

〈p〉〈font face="楷体_GB2312" color="#0000FF"〉〈strong〉〈big〉〈big〉请选择查询方式〈/big〉〈/big〉〈/strong〉〈/font〉〈/p〉

〈form method="POST" action="--WEBBOT-SELF--"

onSubmit="location.href='_derived/nortbots.htm';return false;"〉

〈input TYPE="hidden" NAME="VTI-GROUP" VALUE="0"〉〈p〉〈input

TYPE="checkbox" VALUE="1" CHECKED NAME="check1"〉 复合查询方式 〈input

TYPE="checkbox" VALUE="2" NAME="check2"〉 按教师查询 〈input

TYPE="checkbox" VALUE="3" NAME="check3"〉 按教室查询 〈input

TYPE="checkbox" VALUE="4" NAME="check4"〉 按课表查询 〈input

TYPE="checkbox" VALUE="5" NAME="check5"〉 按课程情况查询 〈/p〉

〈/form〉

〈p〉〈font face="楷体_GB2312" color="#0000FF"〉〈strong〉〈big〉1.复合查询表单〈/big〉〈/strong〉〈/font〉〈/p〉

〈p〉〈font face="楷体_GB2312" color="#FF0000"〉〈strong〉〈big〉查询条件是: 〈/big〉

〈/strong〉〈/font〉〈/p〉

〈form method="POST" action="complex_result.asp"〉

〈p〉〈font color="#000000" face="宋体"〉教师为〈big〉:〈/big〉〈/font〉〈select SIZE="1"

NAME="list1"〉

〈option〉无〈/option〉

〈%

rs1.movefirst

do while not rs1.eof%〉 〈option value="〈%=rs1.fields(0).value%〉"〉 〈%=rs1.fields(0).value%〉 〈/option〉

〈%rs1.movenext

loop

rs1.close

conn1.close%〉 〈/select〉 〈%

set conn2=server.createobject("adodb.connection")

conn2.open "kc_mdb","",""

set rs2=conn2.execute("select * from classroom")%〉〈select name="operator1" size="1"〉

〈option selected value="or"〉or〈/option〉

〈option value="and"〉and〈/option〉

〈/select〉〈font face="宋体"〉 教室为:〈/font〉〈select SIZE="1" NAME="list2"〉

〈option〉无〈/option〉

〈%rs2.movefirst

do while not rs2.eof%〉 〈option value="〈%=rs2.fields(0).value%〉"〉 〈%=rs2.fields(0).value%〉 〈/option〉

〈%rs2.movenext

loop

rs2.close

conn2.close%〉〈%

set conn3=server.createobject("adodb.connection")

conn3.open "kc_mdb","",""

set rs3=conn3.execute("select * from course")%〉 〈/select〉 〈select name="operator2" size="1"〉

〈option selected value="or"〉or〈/option〉

〈option value="and"〉and〈/option〉

〈/select〉 〈font face="宋体"〉课程为:〈/font〉〈select SIZE="1" NAME="list3"〉

〈option〉无〈/option〉

〈%rs3.movefirst

do while not rs3.eof%〉 〈option value="〈%=rs3.fields(0).value%〉"〉 〈%=rs3.fields(0).value%〉 〈/option〉

〈%rs3.movenext

loop

rs3.close

conn3.close%〉〈%

set conn4=server.createobject("adodb.connection")

conn4.open "kc_mdb","",""

set rs4=conn4.execute("select * from kb")%〉 〈/select〉〈/p〉

〈p〉〈select name="operator3" size="1"〉

〈option selected value="or"〉or〈/option〉

〈option value="and"〉and〈/option〉

〈/select〉日期为:〈input type="text" name="T1" size="10"〉 〈select name="operator4"

size="1"〉

〈option selected value="or"〉or〈/option〉

〈option value="and"〉and〈/option〉

〈/select〉周次为:〈input type="text" name="T2" size="10"〉 〈select name="operator5"

size="1"〉

〈option selected value="or"〉or〈/option〉

〈option value="and"〉and〈/option〉

〈/select〉节次为:〈input type="text" name="T3" size="10"〉〈/p〉

〈p〉〈input TYPE="submit" VALUE="开始查询" NAME="B1"〉〈/p〉

〈/form〉

〈/body〉

〈/html〉

下面一段程序按查询条件返回查询结果。

〈html〉

〈%@ Language="VBScript"%〉

〈head〉

〈meta http-equiv="Content-Type" content="text/html; charset=gb2312"〉

〈title〉复合查询结果〈/title〉

〈meta name="GENERATOR" content="Microsoft FrontPage 3.0"〉

〈meta name="Microsoft Theme" content="none"〉

〈meta name="Microsoft Border" content="tl, default"〉

〈/head〉

〈body background="bg005.gif"〉

〈hr size="6" color="#FF00FF"〉

〈p align="center"〉〈font face="楷体_GB2312" color="#0000FF"〉〈strong〉〈big〉〈big〉〈big〉复合查询结果〈/big〉〈/big〉〈/big〉〈/strong〉〈/font〉

〈/p〉

〈p align="center"〉〈%query1=request.form("list1")

query2=request.form("list2")

query3=request.form("list3")

query4=request.form("T1")

query5=request.form("T2")

query6=request.form("T3")%〉 〈%if query1="" and query2="" and query3="" and query4="" and query5="" and query6="" then

response.write ("请输入至少一个查询条件!")

response.end

else

if query1〈〉"" then

set conn1=server.createobject("adodb.connection")

conn1.open "kc_mdb","",""

set rs1= conn4.execute("select * from teacher where teacher.教师='"&query1&"' ")%〉 〈/p〉

〈p align="left"〉〈font face="楷体_GB2312" color="#0000FF"〉〈big〉〈strong〉教师情况一览表(按照教师关键字查询的结果)〈/strong〉〈/big〉〈/p〉

〈table border="1" width="100%"〉

〈tr〉

〈td width="10%"〉〈p align="center"〉姓名〈/td〉

〈td width="7%"〉〈p align="center"〉性别〈/td〉

〈td width="8%"〉〈p align="center"〉年龄〈/td〉

〈td width="36%"〉〈p align="center"〉单位〈/td〉

〈td width="12%"〉〈p align="center"〉职称〈/td〉

〈td width="7%"〉〈p align="center"〉电话〈/td〉

〈td width="20%"〉〈p align="center"〉备注〈/td〉

〈/tr〉

〈tr〉

〈td width="10%"〉〈p align="center"〉〈%=rs1.fields("教师").value%〉〈/td〉

〈td width="7%"〉〈p align="center"〉〈%=rs1.fields("性别").value%〉〈/td〉

〈td width="8%"〉〈p align="center"〉〈%=rs1.fields("年龄").value%〉〈/td〉

〈td width="36%"〉〈p align="center"〉〈%=rs1.fields("系别").value%〉〈/td〉

〈td width="12%"〉〈p align="center"〉〈%=rs1.fields("职称").value%〉〈/td〉

〈td width="7%"〉〈p align="center"〉〈%=rs1.fields("电话").value%〉〈/td〉

〈td width="20%"〉〈p align="center"〉〈%=rs1.fields("备注").value%〉〈/td〉

〈/tr〉

〈/table〉

〈%set rs1=conn4.execute("select * from course where course.教师='"&query1&"' ")%〉

〈p align="left"〉〈font face="楷体_GB2312" color="#0000FF"〉〈big〉〈strong〉相关课程情况一览表(按照教师关键字查询的结果)〈/strong〉〈/big〉〈/p〉

〈table border="1" width="100%"〉

〈tr〉

〈td width="16%"〉〈p align="center"〉课程〈/td〉

〈td width="24%"〉〈p align="center"〉系别〈/td〉

〈td width="8%"〉〈p align="center"〉学时〈/td〉

〈td width="12%"〉〈p align="center"〉教师〈/td〉

〈td width="16%"〉〈p align="center"〉地点〈/td〉

〈td width="11%"〉〈p align="center"〉联系电话〈/td〉

〈td width="13%"〉〈p align="center"〉备注〈/td〉

〈/tr〉

〈tr〉

〈td width="16%"〉〈p align="center"〉〈%=trim(rs1.fields("课程").value)%〉〈/td〉

〈td width="24%"〉〈p align="center"〉〈%=trim(rs1.fields("系别").value)%〉〈/td〉

〈td width="8%"〉〈p align="center"〉〈%=trim(rs1.fields("学时").value)%〉〈/td〉

〈td width="12%"〉〈p align="center"〉〈%=trim(rs1.fields("教师").value)%〉〈/td〉

〈td width="16%"〉〈p align="center"〉〈%=trim(rs1.fields("地点").value)%〉〈/td〉

〈td width="11%"〉〈p align="center"〉〈%=trim(rs1.fields("联系电话").value)%〉〈/td〉

〈td width="13%"〉〈p align="center"〉〈%=trim(rs1.fields("备注").value)%〉〈/td〉

〈/tr〉

〈/table〉

〈%

rs1.close

conn1.close%〉

〈%end if%〉

〈%end if%〉

〈/body〉

〈/html〉

VBScript是在客户端运行的脚本,利用它可以很方便的与客户交互,如显示一个对话框,而这是ASP模型不具备的。两者的紧密结合使得客户端脚本的灵活性和服务器端脚本的安全性、可靠性都得到了充分的体现。

以下是一段ASP和VBScript混合编程的实例,对添加记录时记录是否重复进行了判断。

Sub Window_onload( )

〈%if Flag_Repeat=1 then%〉

ret = msgbox ("数据库中已经有相同记录!",64)

〈%else%〉

ret = msgbox ("已成功添加记录!",64)

〈%end if%〉

end sub

在未联网的单机环境中调试ASP应用程序时,Internet Explorer 无法调试包含ASP主页的Web应用程序。因此必须安装Microsoft Personal Web Server。以Win98为例,单碟的中文Win98安装盘在Win98\add-ons\pws子目录下已带了Microsoft Personal Web Server的安装程序,这是单机版的个人Web管理器。安装个人Web管理器后,在屏幕右下角的系统托盘(Systray)中可以看见一个Personal Web Server的小图标,双击此图标,呼出个人Web管理器的主界面。在个人Web管理器上的“高级”窗口中,把“高级选项”的虚拟目录定在正在开发的ASP应用程序的目录上。把“默认文档”指定为你想调试的ASP主页。这时,切换至个人Web管理器上的“主屏”窗口中,点击“发布”框中的“你的主页在:”后的“http://----”, 个人Web管理器会打开一个新的IE窗口来显示指定的ASP页面。
万山数据
2024-11-14 广告
数据仓库处理是北京万山数据科技有限公司的核心业务之一。我们专注于高效、安全地处理大规模数据,通过先进的数据仓库技术,实现数据的集成、存储、管理和分析。我们的数据仓库解决方案能够支持复杂的数据查询和分析需求,提供实时的数据洞察,助力企业做出更... 点击进入详情页
本回答由万山数据提供
百度网友0d22868eb
2006-05-02 · TA获得超过480个赞
知道小有建树答主
回答量:1052
采纳率:0%
帮助的人:284万
展开全部
在一般的教务管理系统中
有如下面的几张表
student(stu_id,stu_name,stu_major,stu_sex)
teacher(te_name,te_sex)
class(cl_id,name,cl_place,cl_teacher)/其中的cl_teacher参照teacher中的name
selectclass(se_id,stu_id)
数据库这样建好以后就可以了哈。想怎么查都可以了哈。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
kevinmouse
2006-05-02 · 超过26用户采纳过TA的回答
知道答主
回答量:58
采纳率:0%
帮助的人:70万
展开全部
如果你只看课程,一张表就够了。
------------------
时间 课目 上课教师
------------------
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2006-05-02
展开全部
上面的,!!!你牛!!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式