随笔分类 - Sqlserver
数据库的运用
摘要:此文章是对网上大量同类文章的分析与总结,并结合自己实施过程中的体会综合而成,其中有不少直接引用,没有注意出处,请原作者见谅)随着B/S模式应用开发的发展,使用这种模式编写应用程序的程序员也越来越多。但是由于程序员的水平及经验也参差不齐,相当大一部分程序员在编写代码的时候,没有对用户输入数据的合法性进行判断,使应用程序存在安全隐患。用户可以提交一段数据库查询代码,根 据程序返回的结果,获得某些他想得知的数据,这就是所谓的SQL Injection,即SQL注入。SQL注入是从正常的WWW端口访问,而且表面看起来跟一般的Web页面访问没什么区别,所以目前市面的防火墙都不会对SQL注入发出警报,如果
阅读全文
摘要:SQL数据库面试题1、SQL SREVER中,向一个表中插入了新数据,如何快捷的得到自增量字段的当前值这种情况其实我们经常用到,比如我们新建了一个用户,建立完用户后我们希望马上得到这个新用户的ID,因为我们一般都是把这种用户ID的字段设置成自增长类型的,乍看起来好像没有要得到那个新ID很麻烦,其实sql server内置了一些全局的变量,使我们很容易就得到那个新的自增字段的ID,就是使用@@IDENTITY。 在一条 INSERT、SELECT INTO 或大容量复制语句完成后,@@IDENTITY 中包含语句生成的最后一个标识值。如果语句未影响任何包含标识列的表,则 @@IDENTITY .
阅读全文
摘要:今天在看一个遗留系统的数据表的时候发现平时查找的视图是FULL OUT JOIN的,导致平时的数据记录要进行一些限制性处理,其实也可以设置视图各表为右外连接并在视图上设置各列的排序和筛选条件就可以达到效果。联接条件可在FROM或WHERE子句中指定,建议在FROM子句中指定联接条件。WHERE和HAVING子句也可以包含搜索条件,以进一步筛选联接条件所选的行。 联接可分为以下几类: 1、内联接(典型的联接运算,使用像 = 或 <> 之类的比较运算符)。包括相等联接和自然联接。内联接使用比较运算符根据每个表共有的列的值匹配两个表中的行。例如,检索 students和courses表中
阅读全文
摘要:我要设计一个数据库要求:用户至少要有5种,对每个设备的操作有20种,设备至少要有15个。后期还有可能添加设备或是每个设备的操作,或是用户种类我设计如下:用户表User_idUser_nameUser_(其他属性,如邮箱,地址,联系方式等等)1User1张三@qq.com2User2李四@qq.com...设备表Equip_idEquip_nameEquip_description1Equip1用于监视的设备2Equip2用于操作的设备...权限表Right_idRight_nameRight_description1a操作12b操作2...用户设备权限表IDUser_nameEquip_nam
阅读全文
摘要:1 第一范式(1NF) 在任何一个关系数据库中,第一范式(1NF)是对关系模式的基本要求,不满足第一范式(1NF)的数据库就不是关系数据库。 所谓第一范式(1NF)是指数据库表的每一列都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性。如果出现重复的属性,就可能需要定义一个新的实体,新的实体由重复的属性构成,新实体与原实体之间为一对多关系。在第一范式(1NF)中表的每一行只包含一个实例的信息。简而言之,第一范式就是无重复的列。2 第二范式(2NF) 第二范式(2NF)是在第一范式(1NF)的基础上建立起来的,即满足第二范式(2NF)必须先满...
阅读全文
摘要:要牢记3个泛式,我把3NF缩写让大家容易记忆:1,原子性(数据是不可以拆分的,比如1,2,3这样的就违背了1NF)2,关联性(所有字段必须和主键关联)3,非关联性(除主键关联外,其他字段之间不互相关联)数据库设计,要出图,关系型数据库,一定要把关系的线连起来,一幕了然.这样有利于团队合作.如果能出图,不出文档也可以.练习数据库设计,有一个好办法,就是随便拿一个别人数据库,迅速能把字段注释和关系图画出来.这个能力很重要,在实际工作中,迅速能接手别人的数据库项目.
阅读全文
摘要:当我们在用SQL Server数据库开发系统的时候,经常会遇到系统需要权限控制,然而根据权限的控制程度不同有不同的设计方案。1. 基于角色的权限设计这种方案是最常见也是比较简单的方案,不过通常有这种设计已经够了,所以微软就设计出这种方案的通用做法,这种方案对于每一个操作不做控制,只是在程序中根据角色对是否具有操作的权限进行控制;这里我们就不做详述2. 基于操作的权限设计这种模式下每一个操作都在数据库中有记录,用户是否拥有该操作的权限也在数据库中有记录,结构如下:但是如果直接使用上面的设计,会导致数据库中的UserAction这张表数据量非常大,所以我们需要进一步设计提高效率,请看方案33. 基
阅读全文
摘要:实现目标:公司组织架构与权限管理结合,粒度为数据行。到今天为止,权限的配置功能都已经写好了,但在对登录用户的权限判断上,还没有成型的设计。现在有一个想法:建立一个SuperForm,让所有WinForm都继承它;SuperForm里有个方法,是根据用户拥有的权限,然后把其子窗口中的增、删、查、改按扭进行授权,有权限的,按扭就可用,否则就不可用;子窗口的onLoad事件就调用父窗口中的这一方法来设置按扭的可用与否。这里有一个问题,就是每个子窗口的增、删、查、改按扭名字都不一样的,虽然目前我们的系统用的按扭都是自定义控件,其type都是可以控制的,但是如果是menu就比较难控制了。对于menu,似
阅读全文
摘要:直入正题,本文只谈思路,不谈具体代码及实现。后台的权限控制大概分为两类:1. 我能干什么2. 我能干哪些我能干什么,决定了我能做的操作是什么;我能干哪些,决定着在我有权做的情况下,我能对哪些对象进行操作。俗点的意思:你可以吃饭,但你不可以吃你旁边小朋友的,(这种情况是两类权限的交集)分别阐述:1. 能干什么在Web开发中,和服务器交互无非是 Post/Get 方法,以Get方法为例,我们在开发一个后台应用的时候,往往一个操作,就是一个URL(地址)。例子:PicManage?action=del&id=3,5,9 。 其实Post方法也一样,只不过url里看不见而已。一个人有没有这个操
阅读全文
摘要:在任何系统中,权限设计是最基础的东西,本文给出一个基于角色的权限设计的循序渐进的设计方案。 在权限系统中,功能(权限)是最小的单位,比如起草新闻、编辑新闻、审核新闻、删除新闻等,而角色是一类功能的集合,比如新闻编辑这个角色,他可能有起草新闻、编辑新闻等功能集合,而责任编辑他可能就有更多的权限,比如除了新闻编辑的功能,还有审核新闻、删除新闻等功能,给张三赋予新闻编辑的角色(其实我更愿意说把张三加入到新闻编辑这个角色中去),张三就可以起草新闻、编辑新闻了,给李四赋予责任编辑的角色,李四就可以起草新闻、编辑新闻、审核新闻、删除新闻了。 我们来看看版本一的解决方案: 我们来模拟一下上面的数据...
阅读全文
摘要:针对这样的需求,版本一就无能为力了(当然你也可以增加几个功能:比如分类A的新闻起草和分类B的新闻起草,再把这个功能添加到相应的角色里面去,但是这个应该不是我们要得解决方案吧,不过版本二也是基于这个思想来解决的)。其实比新闻更好的例子是论坛板块的版主。下面是版本二的解决方案: 在版本二的功能表中加入了一个ResourceType这个字段,这个字段用来表示对某个资源的分类(比如新闻),我们同样来模拟一下(新闻分类A的ResourceType为:NTA,分类B为:NTB): 功能表: FunctionID ResourceType FunctionName F1 NTA 起草新闻:分类A F2 NT
阅读全文
摘要:实现业务系统中的用户权限管理--设计篇 B/S系统中的权限比C/S中的更显的重要,C/S系统因为具有特殊的客户端,所以访问用户的权限检测可以通过客户端实现或通过客户端+服务器检测实现,而B/S中,浏览器是每一台计算机都已具备的,如果不建立一个完整的权限检测,那么一个“非法用户”很可能就能通过浏览器轻易访问到B/S系统中的所有功能。因此B/S业务系统都需要有一个或多个权限系统来实现访问权限检测,让经过授权的用户可以正常合法的使用已授权功能,而对那些未经授权的“非法用户”将会将他们彻底的“拒之门外”。下面就让我们一起了解一下如何设计可以满足大部分B/S系统中对用户功能权限控制的权限系统。需求陈述.
阅读全文
摘要:sql server数据类型char和nchar,varchar和nvarchar,text和ntext的区别varchar和nvarchar的区别:varchar(n)长度为 n 个字节的可变长度且非 Unicode 的字符数据。n 必须是一个介于 1 和 8,000 之间的数值。存储大小为输入数据的字节的实际长度,而不是 n 个字节(如varchar(6),当字段为qqq时,数据库实际占用空间为3个字节,而不是6个字节,但只允许存储6个字节,一般中文占两个字节)。nvarchar(n)包含 n 个字符的可变长度 Unicode 字符数据。n 的值必须介于 1 与 4,000 之间。字节的存
阅读全文
摘要:(一)ADO.NET与数据库交互的两种方式•面向连接方式•非面向连接方式•面向连接方式操作数据库的步骤:1.建立Connetion对象以连接数据库2.建立Command对象3.设置Command对象的CommandText4.打开Connetion的连接5.运行SQL语句6.生成DataReader对象,并利用该对象读取行7.显示DataReader对象中的列8.关闭DataReader对象9.关闭Connection对象DEMO(ASP.NET)•非面向连接方式数据库的步骤:1.建立Connetion对象以连接数据库2.建立Command对象3.设置Command对象的CommandText
阅读全文
摘要:SETQUOTED_IDENTIFIEROFFGOSETANSI_NULLSONGO--名称:分页存储过程--使用示例EXECsp_PageIndex'*','FROMStuSources',2,10--注意--目前还没有对输入的参数进行严格的验证--默认为输入都是合法有效的ALTERPROCsp_PageIndex@sqlSelectvarchar(800)--SELECT后面FROM前面的字段不用包含SELECT,@sqlFromvarchar(800)--FROM后面的字段包含FROM,@countPerPageint--每页数据行数,@toPageint
阅读全文
摘要:地址:http://database.51cto.com/art/201104/257869.htmword一些快捷键:http://bym007.blog.163.com/blog/static/3213091120094165228735/大型数据库设计说到数据库,我认为不能不先谈数据结构。1996年,在我初入大学学习计算机编程时,当时的老师就告诉我们说:计算机程序=数据结构+算法。尽管现在的程序开发已由面向过程为主逐步过渡到面向对象为主,但我还是深深赞同8年前老师的告诉我们的公式:计算机程序=数据结构+算法。面向对象的程序开发,要做的第一件事就是,先分析整个程序中需处理的数据,从中提取出
阅读全文
摘要:为了建立冗余较小、结构合理的数据库,设计数据库时必须遵循一定的规则。在关系型数据库中这种规则就称为范式。范式是符合某一种设计要求的总结。要想设计一个结构合理的关系型数据库,必须满足一定的范式。AD: 51CTO云计算架构师峰会 抢票进行中!为了建立冗余较小、结构合理的数据库,设计数据库时必须遵循一定的规则。在关系型数据库中这种规则就称为范式。范式是符合某一种设计要求的总结。要想设计一个结构合理的关系型数据库,必须满足一定的范式。在实际开发中最为常见的设计范式有三个:1.第一范式第一范式是最基本的范式。如果数据库表中的所有字段值都是不可分解的原子值,就说明该数据库表满足了第一范式。第一范式的合理
阅读全文
摘要:PL/SQL Developer初始界面布局,当你设置后,重新启动,界面又重新默认布局。解决办法:Tools->Preferences->User Interface->Options->Autosave desktop工具-首选项-用户界面-选项-自动保存桌面。保存设置,重启即可。邀月注:本文版权由邀月和博客园共同所有,转载请注明出处
阅读全文
摘要:一、TOP替代Set RowCount在SQL Server 2005之前的传统SQL语句中,top语句是不支持局部变量的。见http://www.cnblogs.com/downmoon/archive/2007/12/29/1019686.html此时可以使用Set RowCount,但是在SQL Server 2005/2008中,TOP通常执行得更快,所以应该用TOP关键字来取代Set RowCount。Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.c
阅读全文
摘要:前几天在项目中遇到一个问题,需要从SQL Server导出表到Excel,但需要带列名。晚上尝试了几种方法,并作个小结。假定表如下:USE testDb2GOIF NOT OBJECT_ID('Demo_A') IS NULLDROP TABLE [Demo_A]/****** Object: Table [dbo].[Demo_A] downmoon:3w@live.cn ******/CREATE TABLE [dbo].[Demo_A]([ID] int not null,[Name] [Nvarchar](20) NOT NULL)GOINSERT [dbo].[Dem
阅读全文

浙公网安备 33010602011771号