-
2021-02-03 22:17:56
数据库的三级模式两级映射:
存储文件------>基本表----->视图
内模式 ------->模式 ------>外模式
一、视图
1、什么是视图:
视图是从一个或多个表中导出来的表,是一种虚拟存在的表。
视图就像一个窗口,通过这个窗口可以看到系统专门提供的数据。
这样,用户可以不用看到整个数据库中的数据,而之关心对自己有用的数据。
数据库中只存放了视图的定义,而没有存放视图中的数据,这些数据存放在原来的表中。
使用视图查询数据时,数据库系统会从原来的表中取出对应的数据。
视图中的数据依赖于原来表中的数据,一旦表中数据发生改变,显示在视图中的数据也会发生改变。
2、视图的作用:
(1)、使操作简单化,可以对经常使用的查询定义一个视图,使用户不必为同样的查询操作指定条件
(2)、增加数据的安全性,通过视图,用户只能查询和修改指定的数据。
(3)、提高表的逻辑独立性,视图可以屏蔽原有表结构变化带来的影响。
3、视图操作sql:
创建视图:
create view viewName(参数列表/可以不写这样就是默认和下面的select一样)
as select * from 表名;
例1:
(1)、create table viewdemo(id int primary key , name char(10),score float);
(2)、create view view1
as select* from viewd
更多相关内容 -
【MySQL数据库设计与应用(四)】视图
2020-12-14 10:44:50文章目录1 视图概述、创建视图1.1 基本概念1.2 创建视图(1)在单表中创建视图(2)在多表中创建视图(3)在视图中创建新视图2 查看视图、修改视图2.1 查看视图2.2 修改视图3 视图数据更新、删除3.1 视图数据更新3.2... -
5.3 使用查询设计视图
2021-07-16 16:04:56但是对于创建指定条件的查询、创建参数查询和创建复杂的查询,查询向导就不能完全胜任了,这种情况下,可以使用查询设计视图直接创建查询,或者使用查询向导创建查询后,在设计视图中根据需要进行修改。 1.查询...目录
a·下面是对英文罗斯文数据库“订单”表中,"发货国家’’字段设置的查询条件。
查询设计视图是创建、编辑和修改查询的基本工具。
使用查询向导虽然可以快速地创建查询,但是对于创建指定条件的查询、创建参数查询和创建复杂的查询,查询向导就不能完全胜任了,这种情况下,可以使用查询设计视图直接创建查询,或者使用查询向导创建查询后,在设计视图中根据需要进行修改。1.查询设计视图的基本结构
查询设计视图主要由两部分构成,上半部为”对象”窗格,下半部为查询设计网格。
“对象“窗格中,放置查询所需要的数据源表和查询。查询设计网格由若干行组成。其中有“字段”、 “表“、 “排序”、 ‘‘显示”、 “条件“、“或”以及若干空行。
(1)字段行:放置查询需要的字段和用户自定义的计算字段。
(2)表行:放置字段行的字段来源的表或查询。
(3)排序行:对查询进行排序,有“降序"、 “升序"和“不排序”三种选择。在记录很多的情况下,对某一列数据进行排序将方便数据的查询。如果不选择排序,则查询运行时按照表中记录的顺序显示。
(4)显示行:决定字段是否在查询结果中显示。在各个列中,有已经“勾选”了的复选框.默认情况所有字段都将显示出来。如果不想显示某个字段,但又需要它参与运算,则可取消勾选复选框
(5)条件行:放置所指定的查询条件。
(6)或行:放置逻辑上存在或关系的查询条件。
(7)空行:放置更多的查询条件。2.使用“设计视图针创建查询
创建——查询设计
选择表“采购订单”、“采购订单状态”、“供应商”,
在查询设计网格中,先选表,再选字段
点击“运行”
在多表查询时,表与表之间,必须保证建立连接关系。若没有建立关系,则多表查询将会造成出现多条重复纪录的混乱。表与表间的连接如果已经在创建表完成后设置好了,那么这些关系将被自动带到查询设计视图中,如果表之间不存在关系,则必须在查询设计视图中指定,这个临时指定的关系只是在本查询中有效。
3.查询条件
如果希望根据字段中的值来限制查询结果,可以使用查询条件。查询条件是一个表达式,Access将它与查询字段值进行比较以显示满足条件的字段值的所有记录。
(1)单个查询条件的表示
对于表达单个表示式,条件两端的引号不必输入,根据需要系统会自动添加。如果人工输入引号,必须使用英文双引号。
(2)查询表达式示例
a·下面是对英文罗斯文数据库“订单”表中,"发货国家’’字段设置的查询条件。
文本、备注和超链接字段的查询条件示例
要包含满足以下的记录 使用此条件 查询结果 完全匹配一个值 “China” 返回“国家”字段设置为“China”的记录 不匹配某个值 Not "USA" 返回“国家”字段设置为“USA”以外的国家地区的记录 以指定的字符串开头,如U Like U* 返回名称以“U”开头的所有国家(如UK、USA等)的记录 不以指定字符串开头 Not Like U* 包含指定字符串 Like “*Korea*” 不包含指定字符串 Not Like “*Korea*” 以指定字符串结尾 Like “*ina” 不以指定字符串结尾 Not Like “*ina” 包含Null值(即缺少值) Is Null 返回该字段中没有值的记录 不含Null值 Is Not Null 包含零长度字符串 “”(一对双引号) 不包含零长度字符串 Not “” 包含Null值或零长度字符串 “” OR Is Null 按字母顺序排在某个值(如Mexico)后面 >=“Mexico” 在指定范围内,如A到D Like “[A-D*]” 包含值列表中的任一值 In(“France”,“China”,“Germany”,“Japan”) 匹配特定模式 Like “Chi??” b.数字、货币和自动编号字段的条件
示例针对罗斯文数据库“产品”表的“单价”字段,设置的查询条件。
包含满足以下条件 使用此条件 查询结果 完全匹配一个值 =100 不匹配某个值 Not 1000 包含小于某个值的值 <100,或<=100 包含大于某个值的值 >99.99,>=99.99 包含两个值中的任一值 20 Or 25 包含某个值范围之内的值 >49.9 and <99.9或Between 49.9 and 99.9 包含某个范围之外的值 <50 Or >100 包含多个特定值之一 In(20.25,30) 包含以指定数字结尾的值 Like “*4.99” 包含Null值(即缺少值) Is Null 包含非Null值 Is Not Null c.日期/时间字段的条件
示例罗斯文数据库“订单”表中的“订购日期∞字段,所设置的查询条件。
满足条件 使用些条件 查询结果 完全匹配 #2/2/2006# 不匹配 Not #2/2/2006# 不含某个特定日期之前的值 <#2/2/2006#,<=#2/2/2006# 不含某个特定日期之后的值 >#2/2/2006#,>=#2/2/2006# 包含某两个日期之内的值 >#2/2/2006# and <#2/4/2006#
Between #2/2/2006# and #2/4/2006#
返回2006年2用2日和2006年2月4日之间的记录 包含某两个日期之外的值 <#2/2/2006# Or >#2/4/2006# 包含两个值中的任一值 #2/2/2006# or #2/4/2006# 包含多个值之一 In(#2/1/2006#,#3/1/2006#,#4/1/2006#) 包含特定月分内的日期 DatePart(“m”,[销售日期])=12 返回发生在任何一年的12月的记录 包含特定季度内的日期 DatePart(“1“,[销售日期])=1 返回发生在任何一年的第一季度的记录 包含今天 date() 包含昨天 date()-1 包含明天 date()+1 包含当前星期内的日期 datePart("ww",[销售日期])=
DatePart("ww",date()) and
Year([销售日期])=year(date())
包含上一星期内的日期 Year([销售日期])+datePart("ww",[销售日期])=
year(date())+datePart("ww",date())-1
包含下个星期内的日期 Year([销售日期])+datePart("ww",[销售日期])=
year(date())+datePart("ww",date())+1
包含最近7天内的日期 between date() and date()-6 包含属于当前月的日期 year([销售日期])=Year(now()) and
Month([销售日期])=month(now())
包含属于上个月的日期 Year([销售日期])+DatePart(”m“,[销售日期])=
Year(Date())+DatePart("m",date())-1
包含属于下个月的日期 Year([销售日期])+DatePart(”m“,[销售日期])=
Year(Date())+DatePart("m",date())+1
包含前30天或31天内的日期 between date() and dateAdd("M",-1,date()) 包含属于当前季度的日期 Year([销售日期])=Year(now()) and
datePart("q",date())=datePart("q",now())
包含属于上个季度的日期 Year([销售日期])+DatePart("q",[销售日期])=
Year(date())+DatePart("q',date())-1
包含属于下个季度的日期 Year([销售日期])+DatePart("q",[销售日期])=
Year(date())+DatePart("q',date())+1
包含当前内的日期 Year([销售日期])=Yera(date()) 包含属于去年的日期 Year([销售日期])=Yera(date())-1 包含属于明年的日期 Year([销售日期])=Yera(date())+1 包含介于1月1日和今天之间的日期(当年到今天为止的记录) Year([销售日期])=Year(Date()) and
Month([销售日期])<=Month(Date()) and
Day([销售日期])<=Day(Date())
包含发生在过去的日期 <Date() 包含发生在将来的日期 >date() 筛选Null值 Is Null 筛选非Null值 Is Not Null (3)查询表达式中逻辑关系
在查询中若有多个查询条件表达式,假如它们放在查询设计网格的同一行中,不同字段列中所添加的表达式之间是一种“与”关系,即必须同时满足所有条件;若它们放在不同行
中,同一字段列或不同字段列中所添加的表达式之间则是“或”关系,即不要求同时满足所有条件。这种用行的位置所表示的逻辑关系也可以在一个单元格中,用逻辑表达式来表达。
-
IBM系统分析——架构设计五视图+数据设计
2022-03-17 16:12:23一、架构设计五视图 1. 逻辑架构 2. 开发架构 3. 运行架构 4. 物理架构 5. 数据架构 二、数据设计 1. 数据库的逻辑模型 2. 数据库的常用模型 3. 实现从面对对象模型到表的转换 4. 数据库的物理模型 一...目 录
一、架构设计五视图
1. 逻辑架构
逻辑架构关注的是功能,包含用户直接可见的功能,还有系统中隐含的功能。或者更加通俗来描述,逻辑架构更偏向我们日常所理解的“分层”,把一个项目分为“表示层、业务逻辑层、数据访问层”这样经典的“三层架构”。
2. 开发架构
开发架构则更关注程序包,不仅仅是我们自己写的程序,还包括应用程序依赖的SDK、第三方类库、中间价等。尤其是像目前主流的Java、.NET等依靠虚拟机的语言和平台,以及主流的基于数据库的应用,都会比较关注。和逻辑架构有紧密的关联。
3. 运行架构
顾名思义,更关注的是应用程序运行中可能出现的一些问题。例如并发带来的问题,比较常见的“线程同步”问题、死锁问题、对象创建和销毁(生命周期管理)问题等等。开发架构,更关注的是飞机起飞之前的一些准备工作,在静止状态下就能规划好做好的,而运行架构,更多考虑的是飞机起飞之后可能发生的一些问题。
4. 物理架构
物理架构,更关注的系统、网络、服务器等基础设施。例如:如何通过服务器部署和配置网络环境,来实现应用程序的“可伸缩性、高可用性”。例子,如何通过设计基础设施的架构,来保障网站能支持同时10W人在线、7*24小时提供服务,当超过10W人或者低于10W人在线时,可以很方便的调整部署架构来支撑。
5. 数据架构
数据架构,更关注的是数据持久化和存储层面的问题,也可能会包括数据的分布、复制、同步等问题。更贴切来讲,如何选择需要的关系型数据库、流行的NOSQL,如何保障数据存储层面的性能、高可用性、灾备等等。很多时候,和物理架构是有紧密联系的,但它更关注数据存储层面的,物理架构更关注整个基础设施部署层面。
二、数据设计
1. 数据库的逻辑模型
逻辑模型就是要将概念模型具体化,就是要实现概念模型所描述的东西,需要哪些具体的功能,处理哪些具体的信息,是对概念模型的进一步细化。
简单概括,就是——“做什么”。
以销售业务为例:“客户”信息基本上要包括:单位名称,联系人,联系电话,地址等属性;“商品”信息基本上要包括:名称,类型,规格,单价等属性;“定单”信息基本上要包括:日期和时间属性。并且“定单”要与“客户”,“业务员”和“商品”明细关联。
系统需要建立几个数据表:业务员信息表,客户信息表,商品信息表,定单表。
系统要包括几个功能:业务员信息维护,客户信息维护,商品信息维护,建立销售定单 。
2. 数据库的常用模型
层次模型、网状模型、关系模型、面向对象数据模型、对象关系数据模型、半结构化模型。
3. 实现从面对对象模型到表的转换
方法一:将整个类层次映射成一张表;
方法二:将子类映射成单独的表;
方法三:将每个类映射成单独的表。
4. 数据库的物理模型
物理模型是对真实数据库的描述。例如关系数据库中的一些对象为表、视图、字段、数据类型、长度、主键、外键、索引、约束、是否可为空、默认值。
简单概括,就是——“怎么做”。
-
怎样在JAVA中建立视图
2021-02-12 10:21:06展开全部MVC模式是"Model-View-Controller"的缩写,中文翻译为"模式-视图-控制器"。MVC应用程序总是由这三个部分组成e69da5e887aa3231313335323631343130323136353331333262383638。Event(事件)导致Controller改变...展开全部
MVC模式是"Model-View-Controller"的缩写,中文翻译为"模式-视图-控制器"。MVC应用程序总是由这三个部分组成e69da5e887aa3231313335323631343130323136353331333262383638。Event(事件)导致Controller改变Model或View,或者同时改变两者。只要Controller改变了Models的数据或者属性,所有依赖的View都会自动更新。类似的,只要Controller改变了View,View会从潜在的Model中获取数据来刷新自己。MVC模式最早是smalltalk语言研究团提出的,应用于用户交互应用程序中。smalltalk语言和java语言有很多相似性,都是面向对象语言,很自然的SUN在petstore(宠物店)事例应用程序中就推荐MVC模式作为开发Web应用的架构模式。MVC模式是一种架构模式,其实需要其他模式协作完成。在J2EE模式目录中,通常采用service to worker模式实现,而service to worker模式可由集中控制器模式,派遣器模式和Page Helper模式组成。而Struts只实现了MVC的View和Controller两个部分,Model部分需要开发者自己来实现,Struts提供了抽象类Action使开发者能将Model应用于Struts框架中。
MVC模式是一个复杂的架构模式,其实现也显得非常复杂。但是,我们已经总结出了很多可靠的设计模式,多种设计模式结合在一起,使MVC模式的实现变得相对简单易行。Views可以看作一棵树,显然可以用Composite Pattern来实现。Views和Models之间的关系可以用Observer Pattern体现。Controller控制Views的显示,可以用Strategy Pattern实现。Model通常是一个调停者,可采用Mediator Pattern来实现。
现在让我们来了解一下MVC三个部分在J2EE架构中处于什么位置,这样有助于我们理解MVC模式的实现。MVC与J2EE架构的对应关系是:View处于Web Tier或者说是Client Tier,通常是JSP/Servlet,即页面显示部分。Controller也处于Web Tier,通常用Servlet来实现,即页面显示的逻辑部分实现。Model处于Middle Tier,通常用服务端的javaBean或者EJB实现,即业务逻辑部分的实现。
一、MVC设计思想
MVC英文即Model-View-Controller,即把一个应用的输入、处理、输出流程按照Model、View、Controller的方式进行分离,这样一个应用被分成三个层——模型层、视图层、控制层。
视图(View)代表用户交互界面,对于Web应用来说,可以概括为HTML界面,但有可能为XHTML、XML和Applet。随着应用的复杂性和规模性,界面的处理也变得具有挑战性。一个应用可能有很多不同的视图,MVC设计模式对于视图的处理仅限于视图上数据的采集和处理,以及用户的请求,而不包括在视图上的业务流程的处理。业务流程的处理交予模型(Model)处理。比如一个订单的视图只接受来自模型的数据并显示给用户,以及将用户界面的输入数据和请求传递给控制和模型。
模型(Model):就是业务流程/状态的处理以及业务规则的制定。业务流程的处理过程对其它层来说是黑箱操作,模型接受视图请求的数据,并返回最终的处理结果。业务模型的设计可以说是MVC最主要的核心。目前流行的EJB模型就是一个典型的应用例子,它从应用技术实现的角度对模型做了进一步的划分,以便充分利用现有的组件,但它不能作为应用设计模型的框架。它仅仅告诉你按这种模型设计就可以利用某些技术组件,从而减少了技术上的困难。对一个开发者来说,就可以专注于业务模型的设计。MVC设计模式告诉我们,把应用的模型按一定的规则抽取出来,抽取的层次很重要,这也是判断开发人员是否优秀的设计依据。抽象与具体不能隔得太远,也不能太近。MVC并没有提供模型的设计方法,而只告诉你应该组织管理这些模型,以便于模型的重构和提高重用性。我们可以用对象编程来做比喻,MVC定义了一个顶级类,告诉它的子类你只能做这些,但没法限制你能做这些。这点对编程的开发人员非常重要。
业务模型还有一个很重要的模型那就是数据模型。数据模型主要指实体对象的数据 保存(持续化)。比如将一张订单保存到数据库,从数据库获取订单。我们可以将这个模型单独列出,所有有关数据库的操作只限制在该模型中。
控制(Controller)可以理解为从用户接收请求, 将模型与视图匹配在一起,共同完成用户的请求。划分控制层的作用也很明显,它清楚地告诉你,它就是一个分发器,选择什么样的模型,选择什么样的视图,可以完成什么样的用户请求。控制层并不做任何的数据处理。例如,用户点击一个连接,控制层接受请求后, 并不处理业务信息,它只把用户的信息传递给模型,告诉模型做什么,选择符合要求的视图返回给用户。因此,一个模型可能对应多个视图,一个视图可能对应多个模型。
模型、视图与控制器的分离,使得一个模型可以具有多个显示视图。如果用户通过某个视图的控制器改变了模型的数据,所有其它依赖于这些数据的视图都应反映到这些变化。因此,无论何时发生了何种数据变化,控制器都会将变化通知所有的视图,导致显示的更新。这实际上是一种模型的变化-传播机制。模型、视图、控制器三者之间的关系和各自的主要功能,如图1所示。
二、MVC设计模式的实现
ASP.NET提供了一个很好的实现这种经典设计模式的类似环境。开发者通过在ASPX页面中开发用户接口来实现视图;控制器的功能在逻辑功能代码(.cs)中实现;模型通常对应应用系统的业务部分。在ASP.NET中实现这种设计而提供的一个多层系统,较经典的ASP结构实现的系统来说有明显的优点。将用户显示(视图)从动作(控制器)中分离出来,提高了代码的重用性。将数据(模型)从对其操作的动作(控制器)分离出来可以让你设计一个与后台存储数据无关的系统。就MVC结构的本质而言,它是一种解决耦合系统问题的方法。
2.1 视图
视图是模型的表示,它提供用户交互界面。使用多个包含单显示页面的用户部件,复杂的Web页面可以展示来自多个数据源的内容,并且网页人员,美工能独自参与这些Web页面的开发和维护。
在ASP.NET下,视图的实现很简单。可以像开发WINDOWS界面一样直接在集成开发环境下通过拖动控件来完成页面开发本。本文中介绍每一个页面都采用复合视图的形式即:一个页面由多个子视图(用户部件)组成;子视图可以是最简单HTML 控件、服务器控件或多个控件嵌套构而成的Web自定义控件。页面都由模板定义,模板定义了页面的布局,用户部件的标签和数目,用户指定一个模板,平台根据这些信息自动创建页面。针对静态的模板内容,如页面上的站点导航,菜单,友好链接,这些使用缺省的模板内容配置;针对动态的模板内容(主要是业务内容),由于用户的请求不同,只能使用后期绑定,并且针对用户的不同,用户部件的显示内容进行过滤。使用由用户部件根据模板配置组成的组合页面,它增强了可重用性,并原型化了站点的布局。
视图部分大致处理流程如下:首先,页面模板定义了页面的布局;页面配置文件定义视图标签的具体内容(用户部件);然后,由页面布局策略类初始化并加载页面;每个用户部件根据它自己的配置进行初始化,加载校验器并设置参数,以及事件的委托等;用户提交后,通过了表示层的校验,用户部件把数据自动提交给业务实体即模型。
这一部分主要定义了WEB页面基类PageBase;页面布局策略类PageLayout,完成页面布局,用于加载用户部件到页面;用户部件基类UserControlBase即用户部件框架,用于动态加载检验部件,以及实现用户部件的个性化。为了实现WEB应用的灵活性,视图部分也用到了许多配置文件例如:置文件有模板配置、页面配置、路径配置、验证配置等。
2.2 控制器
为了能够控制和协调每个用户跨越多个请求的处理,控制机制应该以集中的方式进行管理。因此,为了达到集中管理的目的引入了控制器。应用程序的控制器集中从客户端接收请求(典型情况下是一个运行浏览器的用户),决定执行什么商业逻辑功能,然后将产生下一步用户界面的责任委派给一个适当的视图组件。
用控制器提供一个控制和处理请求的集中入口点,它负责接收、截取并处理用户请求;并将请求委托给分发者类,根据当前状态和业务操作的结果决定向客户呈现的视图。在这一部分主要定义了HttpReqDispatcher(分发者类)、HttpCapture(请求捕获者类)、Controller(控制器类)等,它们相互配合来完成控制器的功能。请求捕获者类捕获HTTP请求并转发给控制器类。控制器类是系统中处理所有请求的最初入口点。控制器完成一些必要的处理后把请求委托给分发者类;分发者类分发者负责视图的管理和导航,它管理将选择哪个视图提供给用户,并提供给分发资源控制。在这一部分分别采用了分发者、策略、工厂方法、适配器等设计模式。
为了使请求捕获者类自动捕获用户请求并进行处理,ASP.NET 提供低级别的请求/响应 API,使开发人员能够使用 .NET 框架类为传入的 HTTP 请求提供服务。为此,必须创作支持 System.Web.IHTTPHandler 接口和实现 ProcessRequest() 方法的类即:请求捕获者类,并在web.config 的 <httphandlers> 节中添加类。ASP.NET 收到的每个传入 HTTP 请求最终由实现 IHTTPHandler 的类的特定实例来处理。IHttpHandlerFactory 提供了处理 IHttpHandler 实例 URL 请求的实际解析的结构。HTTP 处理程序和工厂在 ASP.NET 配置中声明为 web.config 文件的一部分。ASP.NET 定义了一个 <httphandlers> 配置节,在其中可以添加和移除处理程序和工厂。子目录继承 HttpHandlerFactory 和 HttpHandler 的设置。 HTTP 处理程序和工厂是 ASP.NET 页框架的主体。工厂将每个请求分配给一个处理程序,后者处理该请求。 例如,在全局 machine.config 文件中,ASP.NET 将所有对 ASPx 文件的请求映射到 HttpCapture类:
<httphandlers>
...
...
</httphandlers>
2.3 模型
MVC系统中的模型从概念上可以分为两类――系统的内部状态和改变系统状态的动作。模型是你所有的商业逻辑代码片段所在。本文为模型提供了业务实体对象和业务处理对象:所有的业务处理对象都是从ProcessBase类派生的子类。业务处理对象封装了具体的处理逻辑,调用业务逻辑模型,并且把响应提交到合适的视图组件以产生响应。业务实体对象可以通过定义属性描述客户端表单数据。所有业务实体对象都EntityBase派生子类对象,业务处理对象可以直接对它进行读写,而不再需要和request、response对象进行数据交互。通过业务实体对象实现了对视图和模型之间交互的支持。实现时把"做什么"(业务处理)和"如何做"(业务实体)分离。这样可以实现业务逻辑的重用。由于各个应用的具体业务是不同的,这里不再列举其具体代码实例。
三、MVC设计模式的扩展
通过在ASP.NET中的MVC模式编写的,具有极其良好的可扩展性。它可以轻松实现以下功能:
①实现一个模型的多个视图;
②采用多个控制器;
③当模型改变时,所有视图将自动刷新;
④所有的控制器将相互独立工作。
这就是MVC模式的好处,只需在以前的程序上稍作修改或增加新的类,即可轻松增加许多程序功能。以前开发的许多类可以重用,而程序结构根本不再需要改变,各类之间相互独立,便于团体开发,提高开发效率。下面讨论如何实现一个模型、两个视图和一个控制器的程序。其中模型类及视图类根本不需要改变,与前面的完全一样,这就是面向对象编程的好处。对于控制器中的类,只需要增加另一个视图,并与模型发生关联即可。该模式下视图、控制器、模型三者之间的示意图如图2所示。
同样也可以实现其它形式的MVC例如:一个模型、两个视图和两个控制器。从上面可以看出,通过MVC模式实现的应用程序具有极其良好的可扩展性,是ASP.NET面向对象编程的未来方向。
四、MVC的优点
大部分用过程语言比如ASP、PHP开发出来的Web应用,初始的开发模板就是混合层的数据编程。例如,直接向数据库发送请求并用HTML显示,开发速度往往比较快,但由于数据页面的分离不是很直接,因而很难体现出业务模型的样子或者模型的重用性。产品设计弹性力度很小,很难满足用户的变化性需求。MVC要求对应用分层,虽然要花费额外的工作,但产品的结构清晰,产品的应用通过模型可以得到更好地体现。
首先,最重要的是应该有多个视图对应一个模型的能力。在目前用户需求的快速变化下,可能有多种方式访问应用的要求。例如,订单模型可能有本系统的订单,也有网上订单,或者其他系统的订单,但对于订单的处理都是一样,也就是说订单的处理是一致的。按MVC设计模式,一个订单模型以及多个视图即可解决问题。这样减少了代码的复制,即减少了代码的维护量,一旦模型发生改变,也易于维护。 其次,由于模型返回的数据不带任何显示格式,因而这些模型也可直接应用于接口的使用。
再次,由于一个应用被分离为三层,因此有时改变其中的一层就能满足应用的改变。一个应用的业务流程或者业务规则的改变只需改动MVC的模型层。
控制层的概念也很有效,由于它把不同的模型和不同的视图组合在一起完成不同的请求,因此,控制层可以说是包含了用户请求权限的概念。
最后,它还有利于软件工程化管理。由于不同的层各司其职,每一层不同的应用具有某些相同的特征,有利于通过工程化、工具化产生管理程序代码。
五、MVC的不足
MVC的不足体现在以下几个方面:
(1)增加了系统结构和实现的复杂性。对于简单的界面,严格遵循MVC,使模型、视图与控制器分离,会增加结构的复杂性,并可能产生过多的更新操作,降低运行效率。
(2)视图与控制器间的过于紧密的连接。视图与控制器是相互分离,但确实联系紧密的部件,视图没有控制器的存在,其应用是很有限的,反之亦然,这样就妨碍了他们的独立重用。
(3)视图对模型数据的低效率访问。依据模型操作接口的不同,视图可能需要多次调用才能获得足够的显示数据。对未变化数据的不必要的频繁访问,也将损害操作性能。
(4) 目前,一般高级的界面工具或构造器不支持MVC模式。改造这些工具以适应MVC需要和建立分离的部件的代价是很高的,从而造成使用MVC的困难。
已赞过
已踩过<
你对这个回答的评价是?
评论
收起
-
6.3 窗体的设计视图
2021-12-07 15:33:17如果要设计灵活复杂的窗体需要使用设计视图创建窗体,或者用向导及其他方法创建窗体,完成后在窗体设计视图中进行修改。 1.窗体设计视图的结构 在导航窗格中,在“创建”选项卡的“窗体”组中,单击按钮,就会... -
【单选题】在PowerPoint 2010中,默认的视图方式是()
2020-12-21 10:30:26【单选题】在PowerPoint 2010中,默认的视图方式是()更多相关问题在表单设计中,经常会用到一些特定的关键字、属性和事件,下列各项中属于属性的是________。现代企业系统流程包括哪些方面内容?关于RISC指令系统... -
【软件架构】运用RUP 4+1视图软件架构设计(逻辑视图、实现视图、进程视图、物理视图和用例视图)
2020-03-02 19:35:32在RUP中采用“4+1”视图模型来描述软件系统的体系结构。“4+1”视图包括逻辑视图、实现视图、进程视图、部署视图和用例视图。 最终用户关心的是系统的功能,因此会侧重于逻辑视图; 程序员关心的是系统的配置、... -
powerpoint中默认的视图是什么
2020-12-21 10:30:29满意答案lfspxw992012.12.18采纳率:53%等级:11已帮助:6805人1、普通视图普通视图是PowerPoint 2003的默认视图,共包含三种窗格:大纲窗格、幻灯片窗格和备注窗格。这些窗格使得用户可以在同一位置使用演示文稿的... -
MySQL数据库实验:任务五 数据库的视图设计
2019-04-29 14:34:53任务五 数据库的视图设计 文章目录任务五 数据库的视图设计【实训目的与要求】【实训原理】【实训步骤】一、创建视图(注意WITH CHECK OPTION子句用法)1.创建行列子集视图2.在多表上建立视图3.创建带表达式的... -
【BIM入门实战】Revit视图中图元看不见的原因总结
2022-04-14 16:31:36在Revit模型设计的过程中,有时会提示绘制的图元不可见,通常情况下,可以采用以下三种方法让隐藏的图元显示出来。 原因一:视图范围 平面视图的形成是由操作平面对三维进行 水平切割的俯视图,如果绘制的图元不... -
access设计视图打不开_5、使用数据视图创建表(ACCESS图解操作系列)
2020-11-22 09:32:44操作要求:在D:Access目录下有一ACCESS数据库...操作说明: 上节向同学们介绍了ACCESS中表的基本的、也是最重要的创建方法“设计器”设计。通过该方法,我们能按照实际的要求来对表的整个结构进行设计。本节将介绍另... -
创建视图SQL:在SQL Server中创建视图
2020-07-17 13:42:32话虽如此,这些原因是设计视图的主题,在本系列中我们将不作讨论。 在本文中,我们将介绍CREATE VIEW SQL语法,查看所有视图的含义以及如何使用它们。 句法 (Syntax) CREATE OR ALTER VIEW schema_name.view_... -
Oracle物化视图使用详解
2017-12-30 12:20:28Oracle物化视图详细介绍 -
设计--软件架构视图 4+1视图
2019-06-04 16:58:18Philippe Kruchten在其著作《Rational统一过程引论》中写道: 一个架构视图是对于从某一视角或某一点上看到的系统所做的简化描述,描述中涵盖了系统的某一特定方面,而省略了于此方面无关的实体。 也就是说,架构要... -
Dreamweaver视图切换的技巧
2021-04-27 09:28:32您可以在“文档”窗口中通过“代码”视图、“拆分代码”视图、“设计”视图、“代码”视图和“设计”视图(拆分视图)或“实时”视图查看文档。您还可以选择水平或垂直查看拆分“代码”视图或代码和“设计”视图。... -
怎么在vs2019中找到资源视图
2020-04-13 13:27:10Ctrl+Shift+E就出来了 -
第3章 SQL数据库中表和视图的创建修改
2019-01-11 00:14:49在关系数据库中,数据库通常包含多个数据表,数据库中的数据信息都是存储在数据表当中的。数据表是对数据进行存储和操作的一种逻辑结构,对于用户而言,一个数据表表示一个数据库对象。 3.1 创建数据表—CREATE ... -
Oracle视图中建立索引注意事项.doc
2021-05-01 01:00:01Oracle视图中建立索引的注意事项在视图上创建索引需要三个条件:一、视图必须绑定到架构。要做到这点,在?CREATE?VIEW?语句中,必须加上?WITH?SCHEMABINDING,如果是使用企业管理器,则在设计界面的空白处点击右键,... -
在MySQL中,删除视图使用(????)命令。
2021-01-27 19:44:08在MySQL中,删除视图使用(????)命令。答:DROP设计的优点之一就在于其在命令执行上的刚性答:职能式4月15日作业答:笔记喘证的主要临床特征是答:呼吸急促,甚至张口抬肩,鼻翼煽动面试过程中自我介绍需要注意哪些? A... -
VS2017打开html文件没有设计视图
2019-10-26 08:15:272.打开文本编辑器-文件扩展名,在扩展名中输入html,选择编辑器中的HTML(Web窗体)编辑器 3.将下面的复选框勾上,并选择右边的下拉框为HTML(Web窗体)编辑器 4.之后重启VS,完成 注:如果是cshtml,同上 ... -
MySQL数据库视图
2021-02-02 14:05:091. 修改、查询、删除记录时...可以根据他们的不同需求,在物理的数据库上定义他们对数据库所要求的数据结构,这种根据用户观点所定义的数据结构就是视图。视图与表(有时为与视图区别,也称表为基本表――Base Tabl... -
SQL Server 数据库之视图(二)
2022-04-04 21:29:36视图(二)1. 查询视图信息1.1 查询和视图设计工具 1. 查询视图信息 1.1 查询和视图设计工具 打开视图的定义、显示查询视图的结果 -
数据库中视图的作用
2018-07-30 14:36:12数据库只存放视图的定义,而不存放视图对应的数据,这些数据仍存放在原来的基本表中。所以基本表中的数据发生变化,从视图中查询出的数据也就随之改变了。从这个意义上讲,视图就像一个窗口,透过它可以看到数据库中... -
软件架构视图—4+1视图模式
2021-08-11 18:25:38用来处理软件高层次结构的设计和实施。 软件架构 ={元素,形式,关系/约束} 软件架构涉及到抽象、分解和组合、风格和美学。用由多个视图或视角组成的模型来描述软件架构,该方法称为多重视图方法。 使用多重视图... -
软件架构设计-五视图方法论
2017-09-27 09:15:01在实际工作中,我们经常听到“架构”和“架构师”这样的名词,并不新鲜,但是总让很多刚入门的 在实际工作中,我们经常听到“架构”和“架构师”这样的名词,并不新鲜,但是总让很多刚入门的人感觉很神秘,... -
数据库视图 sql
2021-01-28 08:08:21视图与表(有时为与视图区别,也称表为基本表——Base Table)不同,视图所对应的数据不进行实际存储,数据库中只存储视图的定义,在对视图的数据进行操作时,系统根据视图的定义去操作与视...文章萌萌怪兽2020-02-... -
UML语言中五大视图
2020-12-24 05:57:11UML语言纵览视图UML语言中的视图大致分为如下5种:1、用例视图。...并发视图显示系统的并发性,解决在并发系统中存在的通信和同步问题。5、配置视图。配置视图显示系统的具体部署。部署是指将系统配...