机房重构——视图

上次总结的泛型中举得小例子用到了视图,视图的应用可以大大的降低我们的代码量,提高我们的工作效率。当我们的数据库设计满足第三范式,甚至满足更高范式的时候,那么必然会有很多表,当我们需要好几个表出现在一起的时候,视图帮你轻松解决,下边就总结一下吧~


视图定义


计算机数据库中的视图是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。但是,视图并不在数据库中以存储的数据值集形式存在。行和列数据来自由定义视图的查询所引用的表,并且在引用视图时动态生成。


作用

  • 简单性:所见即所得。说的通俗一点,我们需要的信息可能分布到很多个表中,而每一个表中,我们只需要部分字段,所以我们要把这些字段从表中抽出来,重新放到一个表中,这就是视图,我们需要什么信息就拿什么信息,不需要的或者没有权限访问的一概不要,所以看到的就是我们所要的字段。在查询中,会简化用户的操作,直接对视图进行查询,就会省去很多条件的编写
  • 安全性:当用户查询的时候,我们可以通过视图来筛选出那些信息是用户可以访问的,哪些是没有权限访问的,他们这对部分信息进行操作,保证了信息的安全性
  • 逻辑数据独立性:视图可以帮助用户屏蔽真实表结构带来的影响

优点


  • 视点集中
  • 简化操作
  • 定制数据
  • 合并分割数据
  • 安全性


实例(查询学生上机记录——视图制作)


当初在建表的时候把学生信息从卡表分离出来了,所以就多出来了学生表,查询上机记录需要用到三个表:学生表、卡表和上机记录表

1.右击视图,点击新建视图


机房重构——视图_第1张图片



2.选出需要用到的表

机房重构——视图_第2张图片


3.选出所需字段


机房重构——视图_第3张图片



4.测试


机房重构——视图_第4张图片


5.在D层代码


 Public Function inquireLineRecord(cardInfo As Entity.CardEntity) As List(Of Entity.LineRecordEntity) Implements IDAL.ILineRecordDAL.inquireLineRecord  
        Dim cmdText As String  
        Dim paras As SqlParameter() = {New SqlParameter("@cardno", cardInfo.CardNO)}  
  
        cmdText = "select * from LineRecordview  where cardNo=@cardno and consumeMoney<>''"  '搜索正在上机的卡号  
  
        Dim dt As DataTable  
  
        dt = sqlhelper.ExecDataTable(cmdText, CommandType.Text, paras)  
  
        Dim myList As List(Of Entity.LineRecordEntity)  
  
        If dt.Rows.Count > 0 Then  
            '将dt转换为泛型集合  
            myList = DataToList.convertToList(Of Entity.LineRecordEntity)(dt)  
            Return myList  
        Else  
            Return Nothing  
        End If  
  
    End Function  


总结


越来越觉得数据库是个强大的开发软件,用的越多越体会的出他的好,简单的一行语句就能快速的查找出来你需要的信息,米老师总说好的软件拿过来,傻瓜都会用,我觉得SQL Sever就是这样一种软件。

原来学习数据库,总有不理解的地方,都是中文,都认得那些字,但是读完了没有感觉,读很多遍才会有一点点体会,这次重构加上之前的考试维护,让我有机会好好的研究一下数据库的应用,再返回到书本上的时候,原来不理解的知识,就在应用的过程中全部明白了,就像是功夫大师突然打通一个经脉的感觉。当然啦,了解的越多就会知道需要了解的更多,这就是学习的过程吧:路漫漫其修远兮,吾将上下而求索


你可能感兴趣的:(机房重构——视图)