Wednesday, February 9, 2011

1/3学期小结222 EECS484

484 数据库

database:a set of relations
instance:一个有行有列的table,行是tuple,数量为cardinality;列是attribute,数量为degree/arity
schema:relation名字
经典semantics中,一个table里的row是unique的;modern如SQL(structural query language),就允许重复。

schema分为
logical(如relational tables)
physical(存储形式如in files)
external(如views)

data independence:
physical:防止改logical schema时改动physical schema
logical:对logical schema的改动的保护

Entity Relationship Model
数据库学的就是relation,所以一开始从图像开始形象地表示关系。ER可以用箭头、粗线、框、以及各种形状来表示唯一、至少等constraint。

把ER转化成SQL的搭建table的statement时,需要用到一些关键词如primary key、foreign key、references from、on delete cascade/no actoin/set null等来表示constraint。
SQL语言的导入数据的关键词,比如insert into、select...from、delete...from、where、union、intersect等
还有drop table、drop view、alter table、add column等语句
project 1就是画ER图,CREATE TABLE,SELECT INSERT导入facebook数据(sql中运行用@
指令)

之后学习了如何写query。
先从relational algebra开始(sigma是selection,pi是projection,还有cross product,set difference,union,intersection,join的符号等等)
然后是relational calculus,我们学的是tuple RC即TRC,用{T|p(T)}来表示满足关系p的table T。就像写语句”存在/对任意某attribute属于某表,满足...条件“来定义T。
最后是过渡到SQL语言, 增加了更多关键词如with、in、not、exist、count(*)、max、min、avg、sum、order by (asc/desc)、group by、having等等。还有trigger来计数,check来assertion。
project 2就是描述了9个query,要求用SQL写出来,并用java的ResultSet来保存结果并输出。

至此去过助教(和我一起上493)OH一次。
--

No comments:

Post a Comment