我的博客
2007年
posts - 3,  comments - 2,  trackbacks - 0
1 关系代数
合并数据集合的理论基础是关系代数,它是由E.F.Codd于1970年提出的。
在关系代数的形式化语言中:
          用表、或者数据集合表示关系或者实体。
          用行表示元组。
          用列表示属性。
关系代数包含以下8个关系运算符
          选取――返回满足指定条件的行。
          投影――从数据集合中返回指定的列。
          笛卡尔积――是关系的乘法,它将分别来自两个数据集合中的行以所有可能的方式进行组合。
          并――关系的加法和减法,它可以在行的方向上合并两个表中的数据,就像把一个表垒在另一个表之上一样。
          交――返回两个数据集合所共有的行。
          差――返回只属于一个数据集合的行。
          连接――在水平方向上合并两个表,其方法是:将两个表中在共同数据项上相互匹配的那些行合并起来。
          除――返回两个数据集之间的精确匹配。
此外,作为一种实现现代关系代数运算的方法,SQL还提供了:
          子查询――类似于连接,但更灵活;在外部查询中,方式可以使用表达式、列表或者数据集合的地方都可以使用子查询的结果。
本章将主要讲述多种类型的连接、简单的和相关的子查询、几种类型的并、关系除以及其他的内容。
2 使用连接
2.1 连接类型
在关系代数中,连接运算是由一个笛卡尔积运算和一个选取运算构成的。首先用笛卡尔积完成对两个数据集合的乘运算,然后对生成的结果集合进行选取运算,确保只把分别来自两个数据集合并且具有重叠部分的行合并在一起。连接的全部意义在于在水平方向上合并两个数据集合(通常是表),并产生一个新的结果集合,其方法是将一个数据源中的行于另一个数据源中和它匹配的行组合成一个新元组。
SQL提供了多种类型的连接方式,它们之间的区别在于:从相互交叠的不同数据集合中选择用于连接的行时所采用的方法不同。
连接类型          定义
内连接          只连接匹配的行
左外连接          包含左边表的全部行(不管右边的表中是否存在与它们匹配的行),以及右边表中全部匹配的行
右外连接          包含右边表的全部行(不管左边的表中是否存在与它们匹配的行),以及左边表中全部匹配的行
全外连接          包含左、右两个表的全部行,不管另外一边的表中是否存在与它们匹配的行。
(H)(theta)连接          使用等值以外的条件来匹配左、右两个表中的行
交叉连接          生成笛卡尔积-它不使用任何匹配或者选取条件,而是直接将一个数据源中的每个行与另一个数据源的每个行都一一匹配
在INFORMIX中连接表的查询
如果FROM子句指定了多于一个表引用,则查询会连接来自多个表的行。连接条件指定各列之间(每个表至少一列)进行连接的关系。因为正在比较连接条件中的列,所以它们必须具有一致的数据类型。
SELECT语句的FROM子句可以指定以下几种类型的连接
FROM子句关键字          相应的结果集
CROSS JOIN          笛卡尔乘积(所有可能的行对)
INNER JOIN          仅对满足连接条件的CROSS中的列
LEFT OUTER JOIN          一个表满足条件的行,和另一个表的所有行
RIGHT OUTER JOIN          与LEFT相同,但两个表的角色互换
FULL OUTER JOIN          LEFT OUTER 和 RIGHT OUTER中所有行的超集

2.2 内连接(Inner Join)
内连接是最常见的一种连接,它页被称为普通连接,而E.FCodd最早称之为自然连接。
下面是ANSI SQL-92标准
select *
from    t_institution i
inner join t_teller t
on i.inst_no = t.inst_no
where i.inst_no = "5801"
其中inner可以省略。
等价于早期的连接语法
select *
from t_institution i, t_teller t
where i.inst_no = t.inst_no
and i.inst_no = "5801"

2.3 外连接
2.3.1          左外连接(Left Outer Jion)
select *
from    t_institution i
left outer join t_teller t
on i.inst_no = t.inst_no
其中outer可以省略。
2.3.2          右外连接(Rigt Outer Jion)
select *
from    t_institution i
right outer join t_teller t
on i.inst_no = t.inst_no
2.3.3          全外连接(Full Outer)
全外连接返回参与连接的两个数据集合中的全部数据,无论它们是否具有与之相匹配的行。在功能上,它等价于对这两个数据集合分别进行左外连接和右外连接,然后再使用消去重复行的并操作将上述两个结果集合并为一个结果集。
在现实生活中,参照完整性约束可以减少对于全外连接的使用,一般情况下左外连接就足够了。在数据库中没有利用清晰、规范的约束来防范错误数据情况下,全外连接就变得非常有用了,你可以使用它来清理数据库中的数据。
select *
from    t_institution i
full outer join t_teller t
on i.inst_no = t.inst_no
2.3.4          外连接与条件配合使用
当在内连接查询中加入条件是,无论是将它加入到join子句,还是加入到where子句,其效果是完全一样的,但对于外连接情况就不同了。当把条件加入到join子句时,SQL Server、Informix会返回外连接表的全部行,然后使用指定的条件返回第二个表的行。如果将条件放到where子句中,SQL Server将会首先进行连接操作,然后使用where子句对连接后的行进行筛选。下面的两个查询展示了条件放置位子对执行结果的影响:
条件在join子句
select *
from    t_institution i
left outer join t_teller t
on i.inst_no = t.inst_no
and i.inst_no = “5801”
结果是:
inst_no      inst_name              inst_no      teller_no    teller_name
5801         天河区                 5801         0001         tom
5801         天河区                 5801         0002         david
5802         越秀区
5803         白云区
条件在where子句
select *
from    t_institution i
left outer join t_teller t
on i.inst_no = t.inst_no
where i.inst_no = “5801”
结果是:
inst_no      inst_name              inst_no      teller_no    teller_name
5801         天河区                 5801         0001         tom
5801         天河区                 5801         0002         david

2.4 自身连接
自身连接是指同一个表自己与自己进行连接。这种一元连接通常用于从自反关系(也称作递归关系)中抽取数据。例如人力资源数据库中雇员与老板的关系。
下面例子是在机构表中查找本机构和上级机构的信息。
select s.inst_no superior_inst, s.inst_name sup_inst_name, i.inst_no, i.inst_name
from t_institution i
join t_institution s
on i.superior_inst = s.inst_no

结果是:
superior_inst sup_inst_name          inst_no      inst_name
800             广州市                 5801         天河区
800             广州市                 5802         越秀区
800             广州市                 5803         白云区

2.5 交叉(无限制) 连接
交叉连接用于对两个源表进行纯关系代数的乘运算。它不使用连接条件来限制结果集合,而是将分别来自两个数据源中的行以所有可能的方式进行组合。数据集合中一的每个行都要与数据集合二中的每一个行分别组成一个新的行。例如,如果第一个数据源中有5个行,而第二个数据源中有4个行,那么在它们之间进行交叉连接就会产生20个行。人们将这种类型的结果集称为笛卡尔乘积。
大多数交叉连接都是由于错误操作而造成的;但是它们却非常适合向数据库中填充例子数据,或者预先创建一些空行以便为程序执行期间所要填充的数据保留空间。
select *
from    t_institution i
cross join t_teller t
在交叉连接中没有on条件子句
posted @ 2008-01-04 18:42 姚晶 阅读(41) 评论(0) 编辑
UI设计
UI即User Interface(用户界面)的简称。UI设计则是指对软件的人机交互、操作逻辑、界面美观的整体设计。好的UI设计不仅是让软件变得有个性有品味,还要让软件的操作变得舒适、简单、自由,充分体现软件的定位和特点。


非物质设计的兴起诞生UI设计

UI是什么

软件设计可分为两个部分:编码设计与UI设计。编码设计大家都很熟悉,但是 UI设计还是一个很陌生的词,即使一些专门从事网站与多媒体设计的人也不完全理解UI的意思。UI的本意是用户界面,是英文User和 interface的缩写。从字面上看是用户与界面2个组成部分,但实际上还包括用户与界面之间的交互关系。
界面设计。在漫长的软件发展中,界面设计工作一直没有被重视起来。做界面设计的人也被贬义的称为“美工”。其实软件界面设计就像工业产品中的工业造型设计一样,是产品的重要买点。一个友好美观的界面会给人带来舒适的视觉享受,拉近人与电脑的距离,为商家创造卖点。界面设计不是单纯的美术绘画,他需要定位使用者、使用环境、使用方式并且为最终用户而设计,是纯粹的科学性的艺术设计。检验一个界面的标准即不是某个项目开发组领导的意见也不是项目成员投票的结果,而是最终用户的感受。所以界面设计要和用户研究紧密结合,是一个不断为最终用户设计满意视觉效果的过程。
UI设计在中国的现状
目前在国内UI还是一个相对陌生的词,即便是一些设计人员也对这个词不太了解。我们经常看到一些招聘广告写着:招聘界面美工、界面美术设计师等等。这表明在国内对UI的理解还停留在美术设计方面,认为UI的工作只是描边画线,缺乏对用户交互的重要性的理解;另一方面在软件开发过程中还存在重技术而不重应用的现象。许多商家认为软件产品的核心是技术,而UI仅仅是次要的辅助,这点在人员的比例与待遇上可以表现出来。
但这不是UI设计真正的价值体现,只是UI设计发展的一个必经过程。我们以物质产品手机行业为例,当手机刚刚进入市场的时候不但价格贵的惊人,而且除了通话以外没有什么其他功能。由于当时的主导是技术,所以大家都把精力放在信号、待机时间、寿命等方面,对于产品的造型,使用的合理性很少关心。事过境迁,如今技术已经完全的达到用户的需求,于是商家为了创造卖点,提高争力,非常重视产品的外观设计,除此之外还频频推出短信,彩屏,和铉,彩信,摄像头等等。这样一来产品的美观、个性、易用、易学、人性化等等都成了产品的卖点。软件产品与物质产品的发展是相同的。过去由于计算机硬件的限制,编码设计成为软件开发的代名词,美观亲和的图形化界面与合理易用的交互方式都没有得到充分的重视,实际上这个时期的软件叫作软件程序,而不是软件产品。
现今随着计算机硬件的飞速发展,过去的软件程序已经不能适应用户的要求。软件产品在激烈的市场竞争中,仅仅有强大的功能是远远不够的,不足以战胜强劲的对手。幸运的是在国内一些高瞻远瞩的民族企业已经开始意识到UI给软件产品带来的巨大卖点了,例如金山公司的影霸、词霸、毒霸、网标,由于重视UI的开发与地位,才使得金山产品在同类软件产品中首屈一指。联想软件的UI部门积极开展用户研究与使用性测试,将易用与美观相结合,推出的双模式电脑、幸福系列等成功UI范例,为联想赢得全球消费 PC第三的称号等等、等等.实践证明,各商家只要在产品美观和易用设计方面很小投入,将会有很大产出。其投入产出比,要比在功能领先性开发上的投入大得多。
中国UI路向何方——CHINA UI的诞生
我们不得不承认现阶段中国在很多领域都与西方发达国家有相当大的差距,如何赶上并超过他们是我们这代人肩负的历史使命。软件产品领域不象物质产品那样存在工艺、材料上的限制,软件产品核心问题就是人。提高软件UI设计师个人能力减小人员上的差距是中国UI发展首要关键的问题。
目前国内各院校还没有设立相对健全的UI设计专业,所以提高UI设计师能力关键在于提供一个良好的学习与交流的资源环境。国内已经有很多交流设计网站,介绍工业设计、平面设计、服装设计、绘画艺术、多媒体flash等,但是UI设计一直没有受到应有的关注,仅仅被放在数码设计或者平面网页设计的一个栏目里,这仅有的资源对培养优秀的设计师是不够的,必须有一个信息快捷、资源丰富、设计水平一流、专业权威的UI设计学习与交流的地方才能适应日益发展的UI设计师们的需求。
posted @ 2007-12-21 13:51 姚晶 阅读(82) 评论(0) 编辑
提高学习效率是一个很重要的问题。许多学生学习成绩不佳,往往起因于学习效率不高。学习效率不高往往由多因素造成。较低的学习兴趣、不良的学习习惯、身体的疾病等都能影响学习效率。下面,我们对此进行综合考察。

 一、学习问题自我评价

 每一个学习不良者并不一定真的了解自己的问题之所在,要想对症下药,解决问题,对学习问题进行自我评价便尤其显得重要了。对学习问题可主要从如下几方面进行自我评价:

 l.时间安排问题

 学习不良者应该反省下列几个问题: (1)是否很少在学习前确定明确的目标,比如要在多少时间里完成多少内容。(2)学习是否常常没有固定的时间安排。(3)是否常拖延时间以至于作业都无法按时完成。(4)学习计划是否是从来都只能在开头的几天有效。(5)一周学习时间是否不满10小时。(6)是否把所有的时问都花在学习上了。

 2.注意力问题

 (1)注意力完全集中的状态是否只能保持10至15分钟。(2)学习时,身旁是否常有小说、杂志等使我分心的东西。(3)学习时是否常有想入非非的体验。(4)是否常与人边聊天边学习。

 3.学习兴趣问题

 (1)是否一见书本头就发胀。(2)是否只喜欢文科,而不喜欢理科。(3)是否常需要强迫自己学习。(4)是否从未有意识地强化自己的学习行为。

 4.学习方法问题

 (1)是否经常采用题海战来提高解题能力。(2)是否经常采用机械记忆法。(3)是否从未向学习好的同学讨教过学习方法。(4)是否从不向老师请教问题。(5)是否很少主动钻研课外辅助读物。

 一般而言,回答上述问题,肯定的答案 (回答“是”)越多,学习的效率越低。每个有学习问题的学生都应从上述四类问题中列出自己主要毛病,然后有针对性地进行治疗。例如一个学生毛病是这样的:在时间安排上,他总喜欢把任务拖到第二夫去做;在注意力问题上,他总喜欢在寝室里边与人聊天边读书;在学习兴趣上,他对专业课不感兴趣,对旁系的某些课却很感兴趣;在学习方法上主要采用机械记忆法。这位学生的病一列出来,我们就能够采取有效的治疗措施了。

 二、自我改进法

 1.SQ3R法

 罗宾生(Robinson)提出的SQ3R法是提高学习效率的一种好方法。SQ3R是由Survey,Question,Read,Recite,Review几个单词的第一个字母缩写成的。

 (1)概览(Survey):即概要性地阅读。当你要读一本书或一段文章时,你必须借助标题和副标题知道大概内容,还要抓住开头,结尾及段落问承上启下的句子。这样一来,你就有了一个比较明确的目标有利于进一步学习。

 (2)问题(Question):即在学习时,要把注意力集中到人物、事件、时间、地点、原因等基本问题上,同时找一找自己有哪些不懂的地力。如果是学习课文,预习中的提问可增加你在课堂上的参与意识。要是研究一个课题时你能带着问题去读有关资料,就能更有的放矢。

 (3)阅读(Read):阅读的目的是要找到问题的答案,不必咬文嚼字,应注重对意思的理解。有些书应采用快速阅读,这有助于提高你的知识量,有些书则应采用精该法,反复琢磨其中的含义。

 (4)背诵(Recite):读了几段后,合上书想想究竟前面讲了些什么,可以用自己的语言做一些简单的读书摘要,从中找出关键的表达词语,采用精炼的语言把思想归纳成几点,这样做既有助于记忆、背诵或复述,又有助于提高表达能力,且使思维更有逻辑性。这种尝试背诵的方法比单纯重复多遍的阅读方法效果更好。

 (5)复习(Review):在阅读了全部内容之后,回顾一遍是必要的。复习时,可参考笔记摘要,分清段落间每一层次的不同含义。复习的最主要作用是避免遗忘。一般来说,及时复习是最有效的,随着时间的推移,复习可逐渐减少,但经常性地复习有助于使学习效果更巩固,所谓“拳不离手,曲不离口”,即是此意。

 2.自我塑造法

 上面介绍的SQ3R法是一种学习方法,仅可解决因方法缺乏而引起的学习上的问题。对于因其他原因而引起的学习问题,则还需综合考虑运用其他方法,自我塑造法即是一种综合法。

 (1)选择一个目标。经过对学习效率低的原因分析,你已经找出自己的症结所在,但对改变它你不可性急,而应该首先选择其中较为可行的一项进行重点突破。我们常观到某些学生在接受长辈一顿训斥后,立即制定一个宏大的学习计划,其实这种计划十有八九是执行不下去的。我在学英语时,有一天忽然下决心要从阅读原版小说入手,结果我借了一世界名著《马丁.伊登》,并且向朋友宣布,我要花一个月时间啃下此书。结果呢,我连第一页都没能读完,因为里面的生词查不胜查。后来我选择了比较适中的学习目标,先从世界名著简写本入手,结果越读兴趣越浓,不再视英语为畏途了。

 ( 2)实行新的学习程序,如果你的症结是行为拖拉,为克服这个缺点你就应该给自己订一个规则,每天不完成预订的任务不睡觉。如果你的赞美是注意力不集中,那么你应分析不集中的原因。在寝室读书不集中,则应责令自己到教室里去读。如果读半小时后不集中,则应略为休息一下,或改变一下学习内容。如果原因是对读书不感兴趣,则首先努力去读自己有兴趣的书或改变单调枯燥的读书方法,将读书与工作、娱乐、陶冶性情结合起来,或给自己的学习以一定的奖励。坚持一段时间后,随着良好习惯的形成,学习兴趣就会逐渐浓厚。
posted @ 2007-11-30 09:03 姚晶 阅读(95) 评论(1) 编辑
昵称:姚晶
园龄:4年2个月
粉丝:0
关注:0

<2012年2月>
2930311234
567891011
12131415161718
19202122232425
26272829123
45678910

搜索

 
 

常用链接

随笔档案

最新评论