数据库视图

面向接口编程详解(三)——模式研究

喜欢而已 提交于 2019-12-16 15:04:22
通过前面两篇,我想各位朋友对“面向接口编程”的思想有了一定认识,并通过第二篇的例子,获得了一定的直观印象。但是,第二篇中的例子旨在展示面向接口编程的实现方法,比较简单,不能体现出面向接口编程的优势和这种思想的内涵。那么,这一篇作为本系列的终结篇,将通过分析几个比较有深度的模式或架构,解析隐藏其背后的面向接口思想。这篇我将要分析的分别是MVC模式和.NET平台的分层架构。 这篇的内容可能会比较抽象,望谅解。 1.从MVC开始 MVC简介: 本文不打算详细解释MVC架构,而是把重点放在其中的面向接口思想上。所以在这里,只对MVC做一个简略的介绍。 MVC是一种用于表示层设计的复合设计模式。M、V、C分别表示模型(Model)、View(视图)、Controller(控制器)。它们的职责如下: 模型:用于存储应用中的数据及运行逻辑,是应用的实体。 视图:负责可视部分,用于与用户交互及呈现数据。视图只负责显示,不负责将用户的操作行为解释给模型。 控制器:负责将用户的行为解释给模型。根据指定的策略和用户的操作,调用模型的逻辑。 关于三者的关系,我画了一张图,大家请看: 图3.1 MVC模式示意 它们之间的交互有以下几种: 1.当用户在视图上做任何需要调用模型的操作时,它的请求将被控制器 截获。 2.控制器按照自身指定的策略,将用户行为翻译成模型操作,调用模型相应逻辑实现。 3

SQLServer —— 视图

可紊 提交于 2019-12-16 13:18:15
一、视图的概念 是存储在服务器端的一个查询块,是一张虚拟表。 表示一张表的部分数据或多张表的综合数据。 其结构和数据是建立在对表的查询基础上。 视图的使用,跟对普通的表的查询使用完全一样。 二、视图中不存放数据 数据存放在视图所引用的原始表中。 三、表视图的多样性 一个或多个原始表,根据不同用户的不同需求,可以创建不同的视图。 四、视图的用途 筛选表中的行。 防止未经许可的用户访问敏感数据。 降低数据库的复杂程度。 将多个物理数据库抽象成为一个逻辑数据库。 五、实际运用 5.1、基于 ssms 创建使用视图 有以下三张表,分别是学员信息表、学员班级表、学员成绩表,如下: 我们可以基于这三张表,新建一个视图: (1)、右键该数据库视图选项,点新建视图 (2)、逐一将三张表进行添加 (3)、需要哪个字段,点复选框进行勾选 (4)、勾选完毕,保存,并起一个适合的名字 (5)、至此,我们可以刷新视图,可以看到我们刚刚创建的视图了。 (6)、新建一个查询,测试一下。 5.2、使用 T - SQL语句创建视图 CREATE VIEW view_StuInfo AS <SELECT 语句> 5.3、使用 T - SQL语句删除视图 -- 需要使用一堆单引号括起 IF EXISTS (SELECT * FROM sysobjects WHERE name = view_StuInfo) DROP

django学习[第一篇]

浪尽此生 提交于 2019-12-15 23:24:33
01-创建Django项目 安装虚拟环境: mkvirtualenv django_demo -p python3 安装django安装包(联网安装): pip install django==2.2 -i https://pypi.douban.com/simple 创建django工程(项目): django-admin startproject 项目名称[目录名称] 例如: django-admin startproject django_demo 第一次创建项目以后的目录结构: django_demo/ ├── django_demo/ # 开发主应用,这里将来主要保存着项目的核心代码 │ ├── __init__.py # 项目初始化文件 │ ├── settings.py # 项目核心配置文件 │ ├── urls.py # 项目核心路由配置文件 │ └── wsgi.py # wsgi对象初始化文件 ​ └── manage.py # 命令行管理项目的工具[脚手架] 进入项目根目录,通过mange.py启动django项目。 cd ~/Desktop/django_demo/ python manage.py runserver django项目基于 MVT 思想搭建的框架.所以django会有固定的目录结构编写对应的代码. M: Model , 模型, 是一个类,

MVC框架详解(资源整理)

淺唱寂寞╮ 提交于 2019-12-15 01:37:19
一、什么是MVC? MVC是三个单词的首字母缩写,它们是Model(模型)、View(视图)和Controller(控制)。 1、视图 视图(View)代表用户交互界面,对于Web应用来说,可以概括为HTML界面,但有可能为XHTML、XML和Applet。随着应用的复杂性和规模性,界面的处理也变得具有挑战性。一个应用可能有很多不同的视图,MVC设计模式对于视图的处理仅限于视图上数据的采集和处理,以及用户的请求,而不包括在视图上的业务流程的处理。业务流程的处理交予模型(Model)处理。比如一个订单的视图只接受来自模型的数据并显示给用户,以及将用户界面的输入数据和请求传递给控制和模型。 2、 模型 模型(Model):就是业务流程/状态的处理以及业务规则的制定。业务流程的处理过程对其它层来说是黑箱操作,模型接受视图请求的数据,并返回最终的处理结果。业务模型的设计可以说是MVC最主要的核心。目前流行的EJB模型就是一个典型的应用例子,它从应用技术实现的角度对模型做了进一步的划分,以便充分利用现有的组件,但它不能作为应用设计模型的框架。它仅仅告诉你按这种模型设计就可以利用某些技术组件,从而减少了技术上的困难。对一个开发者来说,就可以专注于业务模型的设计。MVC设计模式告诉我们,把应用的模型按一定的规则抽取出来,抽取的层次很重要,这也是判断开发人员是否优秀的设计依据

drf框架(五)

南笙酒味 提交于 2019-12-12 22:20:10
总结 1.整体修改与局部修改 # 序列化get (给前端传递参数) #查询 ser_obj = ModelSerializer(model_obj) #只传递一个参数,默认是instance的参数,查询数据 # 反序列化post save() => create()(数据保存到数据库中) #添加 ser_obj = ModelSerializer(data=model_data) #传递data参数,保存数据 #反序列化put save() => update() #修改(需要传入instance和data参数) ser_obj = ModelSerializer(instance=model_obj,data=model_data) #默认partial参数是False,整体修改 #反序列化patch partial=True => 匹配字段required=True校验条件 ser_obj = ModelSerializer(instance=model_obj,data=model_data,partial=True) #局部修改 2.群改ListSerializer ser_obj = ModelSerializer(instance=model_obj,data=model_data,partial=True,many=True) # 实现群改功能

Django常用知识整理

坚强是说给别人听的谎言 提交于 2019-12-12 15:38:34
Django 的认识,面试题 1. 对Django的认识? #1.Django是走大而全的方向,它最出名的是其全自动化的管理后台:只需要使用起ORM,做简单的对象定义,它就能自动生成数据库结构、以及全功能的管理后台。 #2.Django内置的ORM跟框架内的其他模块耦合程度高。 #应用程序必须使用Django内置的ORM,否则就不能享受到框架内提供的种种基于其ORM的便利; #理论上可以切换掉其ORM模块,但这就相当于要把装修完毕的房子拆除重新装修,倒不如一开始就去毛胚房做全新的装修。 #3.Django的卖点是超高的开发效率,其性能扩展有限;采用Django的项目,在流量达到一定规模后,都需要对其进行重构,才能满足性能的要求。 #4.Django适用的是中小型的网站,或者是作为大型网站快速实现产品雏形的工具。 #5.Django模板的设计哲学是彻底的将代码、样式分离; Django从根本上杜绝在模板中进行编码、处理数据的可能。 2. Django 、Flask、Tornado的对比 #1.Django走的是大而全的方向,开发效率高。它的MTV框架,自带的ORM,admin后台管理,自带的sqlite数据库和开发测试用的服务器 #给开发者提高了超高的开发效率 #2.Flask是轻量级的框架,自由,灵活,可扩展性很强,核心基于Werkzeug WSGI工具和jinja2模板引擎 #3

sql 查询慢的48个原因分析

生来就可爱ヽ(ⅴ<●) 提交于 2019-12-11 18:45:04
还是一转帖,总结的不错,大家借鉴。 原网址: http://database.ctocio.com.cn/222/9068222.shtml 1、没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷)   2、I/O吞吐量小,形成了瓶颈效应。   3、没有创建计算列导致查询不优化。   4、内存不足   5、网络速度慢   6、查询出的数据量过大(可以采用多次查询,其他的方法降低数据量)   7、锁或者死锁(这也是查询慢最常见的问题,是程序设计的缺陷)   8、sp_lock,sp_who,活动的用户查看,原因是读写竞争资源。   9、返回了不必要的行和列   10、查询语句不好,没有优化 ●可以通过如下方法来优化查询 :   1)把数据、日志、索引放到不同的I/O设备上,增加读取速度,以前可以将Tempdb应放在RAID0上,SQL2000不在支持。数据量(尺寸)越大,提高I/O越重要.   2)纵向、横向分割表,减少表的尺寸(sp_spaceuse)   3)升级硬件   4)根据查询条件,建立索引,优化索引、优化访问方式,限制结果集的数据量。注意填充因子要适当(最好是使用默认值0)。索引应该尽量小,使用字节数小的列建索引好(参照索引的创建),不要对有限的几个值的字段建单一索引如性别字段   5)提高网速;   6)扩大服务器的内存,Windows

mybatis调用视图和存储过程

こ雲淡風輕ζ 提交于 2019-12-11 16:13:04
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 现在的项目是以Mybatis作为O/R映射框架,确实好用,也非常方便项目的开发。MyBatis支持普通sql的查询、视图的查询、存储过程调用,是一种非常优秀的持久层框架。它可利用简单的XML或注解用语配置和原始映射,将接口和java中的POJO映射成数据库中的纪录。 一.调用视图 如下就是调用视图来查询收益明细,sql部分如下: <!-- 获取明细 --> <select id ="getContactEarnsDetail" resultType= "java.util.Map" parameterType ="java.lang.Integer"> select title,trade_time,trade_amount from v_contacts_earn where user_id = #{userId} </select > 该视图返回的数据类型为map。 mapper部分如下: 1 List<Map<String, Object>> getContactEarnsDetail(Integer userId); 接口部分如下: List<Map<String, Object>> getContactEarnsDetail(Integer userId); 实现如下: @Override

Java(十一)MVC

|▌冷眼眸甩不掉的悲伤 提交于 2019-12-11 09:58:02
文章目录 一、定义 二、例子 参考:菜鸟教程: MVC 模式 一、定义 MVC 模式代表 Model-View-Controller(模型-视图-控制器) 模式。 将数据库的数据、UI视图、业务逻辑划分整合。 Model(模型) 就是一个描述事物信息的类。 例如 Student 类,有 rollNo ,有 name 。 View(视图) 在各UI组件中显示想要的数据。 例如 StudentView 视图,它就要输出两个信息,分别对应着 Student 对象的 rollNo 和 name 信息。 Controller(控制器) 控制器处理模型和视图的同步。当模型中数据变化时,不仅会数据库中的数据会更新,视图也会显示更新后的数据。 二、例子 来源: CSDN 作者: sandalphon4869 链接: https://blog.csdn.net/sandalphon4869/article/details/103484842

Oracle—视图、序列、索引、同义词

帅比萌擦擦* 提交于 2019-12-11 06:02:36
视图 创建简单视图 创建一个包含员工号、员工名、工资和部门号的员工基本信息视图 create or replace view emp_base_info_view as select empno , ename , sal , deptno from emp ; 创建一个查询部门编号为20的视图: SQL > connect scott / 1 qaz2wsx 已连接 SQL > create or replace view emp_view as select empno . enmae , job , deptno from emp where deptno = 20 ; 创建一个包含工资大于2000的员工信息的视图 :(复杂视图、只读) create view emp_sal_view as select empno , ename , sal * 12 salary from emp where sal > 2000 with check option ; 修改视图 可以采用create or replace view 语句修改视图,实质是删除原视图并重建该视图,但是会保留该视图上授予的各种权限 修改视图create view emp_dept_view,添加员工工资信息: create or replace view emp_dept_view as select T