2013-12-14
展开全部
在Access数据库中,不同表中的数据之间都存在一种关系,这种关系将数据库里各张表中的每条数据记录都和数据库中唯一的主题相联系,使得对一个数据的操作都成为数据库的整体操作,正所谓“牵一发而动全身”。
就拿上几课建立的表来说吧,“客户信息表”中的“公司名称”和“订单信息表”中的“订货单位”所包含的值有很多是相同的。因为签了订单的“订货单位”肯定已经是公司的客户了,这些客户的名称也被记载在“客户信息表”的“公司名称”字段中。当我们已知一个客户的名称时,既可以通过“客户信息表”知道它的“客户信息”,也可以通过“订单信息表”了解它所签订的“订单信息”,所以说“公司名称”作为纽带将“客户资料表”和“订单信息表”中的相应字段信息连接在了一起,为了把数据库中表之间的这种数据关系体现出来,Access提供一种建立表与表之间“关系”的方法。用这种方法建立了关系的数据只需要通过一个主题就可以调出来使用,非常方便。
当我们在“客户信息表”和“订单信息表”中建立这样的关系以后,只需要看看“客户信息表”,在不增加表内容的情况下,就可以看到所有客户的信息及其所有“订单”的情况,使这些数据一目了然。
access数据库是一种关系型数据库,各个表的数据之间有一对一,一对多,多对多,三种关系,决定于数据之间的关系,具体在建立表或查询时
1. 如果表之间的数据关系是一对一
姓名与员工编号,一个员工只有一个编号,一个编号对应一个员工
2. 一对多
客户对订单号,一个客户可能有多个订单,但一个订单只对应一个客户
3. 多对多
订单号与产品,一个订单可能对应多种产品,一种产品也可能存在于多个订单里
总之:关系类型取决于你在设计数据模型时,各个表之间的关系.
就拿上几课建立的表来说吧,“客户信息表”中的“公司名称”和“订单信息表”中的“订货单位”所包含的值有很多是相同的。因为签了订单的“订货单位”肯定已经是公司的客户了,这些客户的名称也被记载在“客户信息表”的“公司名称”字段中。当我们已知一个客户的名称时,既可以通过“客户信息表”知道它的“客户信息”,也可以通过“订单信息表”了解它所签订的“订单信息”,所以说“公司名称”作为纽带将“客户资料表”和“订单信息表”中的相应字段信息连接在了一起,为了把数据库中表之间的这种数据关系体现出来,Access提供一种建立表与表之间“关系”的方法。用这种方法建立了关系的数据只需要通过一个主题就可以调出来使用,非常方便。
当我们在“客户信息表”和“订单信息表”中建立这样的关系以后,只需要看看“客户信息表”,在不增加表内容的情况下,就可以看到所有客户的信息及其所有“订单”的情况,使这些数据一目了然。
access数据库是一种关系型数据库,各个表的数据之间有一对一,一对多,多对多,三种关系,决定于数据之间的关系,具体在建立表或查询时
1. 如果表之间的数据关系是一对一
姓名与员工编号,一个员工只有一个编号,一个编号对应一个员工
2. 一对多
客户对订单号,一个客户可能有多个订单,但一个订单只对应一个客户
3. 多对多
订单号与产品,一个订单可能对应多种产品,一种产品也可能存在于多个订单里
总之:关系类型取决于你在设计数据模型时,各个表之间的关系.
2013-12-14
展开全部
你的这个数据库本身就是一个错误的设计。
你需要两个表——
表1:人员编号、姓名、单位;
表2:人员编号、年份、培训。
查询:
select * from 表2 left join 表1 on 表2.人员编号 = 表1.人员编号 where 年份 in (2001, 2002, 2007) and 培训 = 0
=======================================================
补充(举个例子):
表1数据
编号 姓名 单位
0001 张三 人事局
0002 李四 海事局
表2数据
编号 年份 培训
0001 2006 YES
0002 2006 YES
0001 2007 YES
0002 2007 NO
0001号员工张三,在2006和2007都有参加培训。
0002号员工李四,只在2006年有参加培训。
表1中的编号为主关键字,表2中编号和年份为复合关键字。
建议你去学一下《数据库系统原理》,设计出好的数据库,才能保证你以后的工作能够正确有效的开展。
====================================================
那需要三个表,把培训信息单独拿出来。
表1:[人员编号]、姓名、单位;
表2:[人员编号]、[培训编号]、参加;
表3:[培训编号]、年份、培训内容。
表1数据
人员编号 姓名 单位
0001 张三 人事局
0002 李四 海事局
表2数据
人员编号 培训编号 参加
0001 0001 YES
0002 0001 YES
0001 0002 YES
0002 0002 NO
表3数据
培训编号 年份 培训内容
0001 2006 扫地
0002 2007 擦桌子
查询:
select 表2.*, 表1.姓名, 表1.单位, 表3.年份, 表3.培训内容 from 表2 inner join 表1 on 表2.人员编号 = 表1.人员编号 inner join 表3 on 表3.培训编号 = 表2.培训编号
你需要两个表——
表1:人员编号、姓名、单位;
表2:人员编号、年份、培训。
查询:
select * from 表2 left join 表1 on 表2.人员编号 = 表1.人员编号 where 年份 in (2001, 2002, 2007) and 培训 = 0
=======================================================
补充(举个例子):
表1数据
编号 姓名 单位
0001 张三 人事局
0002 李四 海事局
表2数据
编号 年份 培训
0001 2006 YES
0002 2006 YES
0001 2007 YES
0002 2007 NO
0001号员工张三,在2006和2007都有参加培训。
0002号员工李四,只在2006年有参加培训。
表1中的编号为主关键字,表2中编号和年份为复合关键字。
建议你去学一下《数据库系统原理》,设计出好的数据库,才能保证你以后的工作能够正确有效的开展。
====================================================
那需要三个表,把培训信息单独拿出来。
表1:[人员编号]、姓名、单位;
表2:[人员编号]、[培训编号]、参加;
表3:[培训编号]、年份、培训内容。
表1数据
人员编号 姓名 单位
0001 张三 人事局
0002 李四 海事局
表2数据
人员编号 培训编号 参加
0001 0001 YES
0002 0001 YES
0001 0002 YES
0002 0002 NO
表3数据
培训编号 年份 培训内容
0001 2006 扫地
0002 2007 擦桌子
查询:
select 表2.*, 表1.姓名, 表1.单位, 表3.年份, 表3.培训内容 from 表2 inner join 表1 on 表2.人员编号 = 表1.人员编号 inner join 表3 on 表3.培训编号 = 表2.培训编号
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-12-14
展开全部
在定义了主键,和相应的表后,就可以制定各表部的关系。
只有在数据库ACCESS建立起一个关系数据库。即ACCESS的应用与管理关系数据库,才能正确的使用ACCESS。而要建立关系数据库,首先就是要建立好各相关表,然后创建关系。不创建关系,那么就意味着所有的数据表都是独立的表,互不联系,又有什么用呢?
只有有关系,才能组成一个整体的表。
只有在数据库ACCESS建立起一个关系数据库。即ACCESS的应用与管理关系数据库,才能正确的使用ACCESS。而要建立关系数据库,首先就是要建立好各相关表,然后创建关系。不创建关系,那么就意味着所有的数据表都是独立的表,互不联系,又有什么用呢?
只有有关系,才能组成一个整体的表。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-12-14
展开全部
其实建立表之间的关系是为了将多张表通过关键字和外部关键字联系起来,从而使数据的检索速度增快.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-12-14
展开全部
按关系啊!哈`我刚会考完~~
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询