暑假ASP.NET学习笔记——7月17号

来源:互联网 发布:王牌对王牌网络直播 编辑:程序博客网 时间:2024/04/30 15:06

第二范式造成的逻辑错误可能在修改表时,会修改多行,进而造成数据的破坏。比如说:BookAuthor(ManID,BookNum, Royalty,BookName,FirstName,LastName),表的主键是ManIDBookNumRoyalty表示书的版税。这个设计表违反了2NF。其中造成的一个错误可以是:假如你想修改一本指定书的书名,理论只需执行:UpdateBookAuthor set BookName = ‘ModifyName’ where BookNum=’指定书的书号,但是这样操作的结果是造成很多行被更新(BookNum=’指定书的书号的所有行),还有如果我想删除作者保留其所著的书,这时或造成很大的空间浪费。一个比较合理的设计:Book(BookNum,BookName)Author(ManID,FirstName,LastName)BookAuthor(BookNum,ManID,Royalty),而且这个设计在某种程度上也解决了多个作者著一本书的情况

规范化过程其实相当直接:挑出复杂的实体,从中抽取出简单的实体。这个过程一直持续下去,直到数据库中每个表都只代表一件事物,并且表中每个列描述的都是这件事物为止。

第三范式,所有属性描述的都必须是关于键,并且是关于整个键的事实,除此之外别无其他,就是说非主属性的描述不能是非主属性,而应该是整个主属性组。

第四范式处理的是1对多的关系

索引,视图上的聚集索引必须是 UNIQUE索引,必须先为视图创建唯一聚集索引,然后才能为该视图定义其它索引。

--替换字符串中的子串

SELECT REPLACE('11:20:30',':','_')

--练习CharIndex,该函数类似Like'%字符'

USE pubs

GO

--匹配

SELECT CHARINDEX('wonderful', notes)

FROM titles

WHERE title_id = 'TC3218'

GO

--设置满足查询要求的行

USE pubs

GO

--使 Microsoft SQL Server在返回指定的行数之后停止处理查询。

set rowcount 1

SELECT *

FROM titles

WHERE advance >= 5000

GO

--测试分页原理

--所有数据

USE PhoneBook

go

set rowcount 14

select * From LinkMan

go

--按分页原理获取的数据

USE PhoneBook

go

select top 2 * from LinkMan where not exists (select *from (select top 2 userName from LinkMan) t1 wheret1.userName=LinkMan.userName)

go

 

交叉连接,就是笛卡尔连接,对所有的行进行连接,不分具体关系

对于Check约束,需要加括号,如CHECK(布尔值),外键约束的属性需要加括号,如foreign key (列名) references 表名(列名)

原创粉丝点击