| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1917 人关注过本帖
标题:挑战Delphi数据库
只看楼主 加入收藏
weijing_007
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2008-6-13
收藏
 问题点数:0 回复次数:5 
挑战Delphi数据库
本人要开发一个简单的“图书管理系统”的项目,SQL数据库如下 :
create database 图书管理系统
use 图书管理系统

create table 图书表(
图书编号 char(10) not null primary key,
书名 char(10)not null,
图书类别 char(8) not null,
本图书数目 int not null,
图书价格 money ,
)
create table 学生(
学生编号 char(10) not null primary key,
姓名 char(10) not null,
班级 char(15) not null,
)

create table 借阅表(
学生编号 char(10) not null primary key,
图书编号 char(10) not null,
借出天数 int ,
借出时间 datetime,
姓名     char(10) not null,
)
想在借阅表理插入数据,代码如下,请问如下代码错在哪里,望指教:
doquery3.Close;
       adoquery3.SQL.Clear;
       adoquery3.SQL.Add('insert into 借阅表 values(
                          'select 学生编号 from 学生表 where 学生编号='+''''+Edit2.Text+'''' ,
                          'select 姓名     from 学生表 where 学生编号='+''''+Edit2.Text+'''',
                          'select 图书编号 from 图书表 where 图书编号='+''''+Edit1.Text+'''',
                          'select 书名     from 图书表 where 图书编号='+''''+Edit1.Text+'''',
                          'select getdate()',1)
                          ');
       adoquery3.Open;
在Delphi界面里面的两个Edit框中输入学生编号和图书编号,如何把这两个编号更新至数据库
搜索更多相关主题的帖子: Delphi 数据库 挑战 
2008-06-13 12:24
makebest
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:3
帖 子:658
专家分:962
注 册:2005-3-17
收藏
得分:0 
借阅表的五个字段与insert的values不对应啊,另外用子查询取数据要在子查询加括号,是否支持在values部分使用子查询也不太确定。
2008-06-14 19:20
provoke
Rank: 2
来 自:广州
等 级:新手上路
威 望:5
帖 子:175
专家分:0
注 册:2007-6-14
收藏
得分:0 
'select 学生编号 from 学生表 where 学生编号='+''''+Edit2.Text+''''

这句不是废的吗!直接用''''+Edit2.Text+'''' 就是了……

同样下面这句也是废的:

'select 图书编号 from 图书表 where 图书编号='+''''+Edit1.Text+''''

直接用''''+Edit1.Text+''''就是了。

还有:

    1、借阅表里不需要记录学生姓名这一字段,因为学生编号是学生表里的主键,通过这个编号可以唯一确定学生的名字;

    2、图书名也是不必记录到借阅表里,原因同上。

    学生和图书之间是“借阅”关系,这个关系是多对多的;多对多关系的应该由各实体的主码组成复合主码,而多对多关系中除了主码,只保存属于该关系特有的属性。

    也就是:借阅表的主码应该包括学生编号,图书编号;书名和学生姓名均不属性“借阅”这一关系的,因此不能作为借阅的属性。

    同一个学生能够借阅多本书;同一本书在不同时间可以由不同的学生借阅;同一学生也可以在不同的时间借阅同一本书。所以,借阅表的主码不能只包含图书编号号和学生编号,还应包括另一个属性,例如可以是借阅时间,或者新增一个借阅记录编号,等等。

    照你现在的表结构,每个人只能借阅一次,很明显不合理。

    关系数据库是要实现最小冗余的,看来你并未真正领会到这一点。

    数据库原理没学好就做系统,你会越做越辛苦的,而且系统功能越多越强大,你就会越痛苦。

爱我至爱,至死不渝!
2008-06-14 20:06
weijing_007
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2008-6-13
收藏
得分:0 
谢谢你的点评
关于前面的两个废的 已经在做时候已经 想到了

我们是要做一个小的模拟图书管理系统 数据冗余和性能就不做考虑了
我们没做开发 现在是几个同学在一起 模拟团队开发
在数据库原理上我们确实有不足的
我们就是要在团队的合作开发中去寻找自己的不足的
2008-06-14 23:17
lisatisfy
Rank: 1
等 级:新手上路
帖 子:44
专家分:0
注 册:2008-7-25
收藏
得分:0 
虽说是模拟的.但数据冗余和性能最好能考虑下...对以后帮助多多.
我在做系统时就有考虑这东东了(也是模拟)
2008-07-26 00:11
快速回复:挑战Delphi数据库
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018273 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved