简介 数据库范式在数据库设计中的地位一直很暧昧,教科书中对于数据库范式倒是都给出了学术性的定义,但实际应用中范式的应用却不甚乐观,这篇文章会用简单的语言和一个简单的数据库DEMO将一个不符合范式的数据库一步步从第一范式实现到第四范式。范式的目标 应用数据库范式可以带来许多好处,但是最重要的好处归结为三点: 1.减少数据冗余(这是最主要的好处,其他好处都是由此而附带的) 2.消除异常(插入异常,更新异常,删除异常) 3.让数据组织的更加和谐… 但剑是双刃的,应用数据库范式同样也会带来弊端,这会在文章后面说到。什么是范式 简单的说,范式是为了消除重复数据减少冗余数据,从而让数据库内的数据更好的组织 Read More
posted @ 2011-09-16 15:35 赤卫 Views(114) Comments(0) Diggs(0)
大部分系统都有权限系统。一般来说,它能管控人员对某个否页面的访问;对某些字段、控件可见或者不可见。对gridview中的数据是否可删除、可添加、可新增等等。大部分人都把权限作为一个子系统独立出来。但是这里我不是想设计一个权限管理系统,网上的设计方案太多了,可以说每个开发人员都有自己的开发权限管理系统的想法和思路。 在这篇文章中,我先用简单的C#代码模仿一个用户的权限,再使用sql去模拟。这是一种很简单,很直观,很高效的方式去判定用户的权限。C#:好吧,先从最简单开始,定义一个用户(User)类,如下。Code highlighting produced by Actipro CodeHighl Read More
posted @ 2011-09-07 15:17 赤卫 Views(164) Comments(0) Diggs(0)
我们在开发系统的时候,经常会遇到系统需要权限控制,而权限的控制程度不同有不同的设计方案。1. 基于角色的权限设计这种方案是最常见也是比较简单的方案,不过通常有这种设计已经够了,所以微软就设计出这种方案的通用做法,这种方案对于每一个操作不做控制,只是在程序中根据角色对是否具有操作的权限进行控制;这里我们就不做详述2. 基于操作的权限设计这种模式下每一个操作都在数据库中有记录,用户是否拥有该操作的权限也在数据库中有记录,结构如下:但是如果直接使用上面的设计,会导致数据库中的UserAction这张表数据量非常大,所以我们需要进一步设计提高效率,请看方案33. 基于角色和操作的权限设计如上图所示,我 Read More
posted @ 2011-09-04 19:17 赤卫 Views(129) Comments(0) Diggs(0)
C#代码//编辑 protectedvoidgvwOne_RowEditing(objectsender,GridViewEditEventArgse) { gvwOne.EditIndex=e.NewEditIndex; gvwBand();//绑定 }//编辑protected void gvwOne_RowEditing(object sender, GridViewEditEventArgs e){ gvwOne.EditIndex = e.NewEditIndex; gvwBand();//绑定}C#代码//更新 protectedvoidgvwOne_RowUpdating(obj Read More
posted @ 2011-07-25 16:06 赤卫 Views(322) Comments(0) Diggs(0)
在系统中经常需要进行时间日期选择(比如查询时间范围内的信息、填写日期等),使用时间日期选择控件不仅能提高效率,而且不会写错格式!现把自己在.net项目中经常使用的一款时间日期选择控件整理出来,希望对大家有所帮助!首先大家来看看效果图:(gif格式,用于选择图标)js脚本:calendar.jsCode highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->vargdCtrl=newObject();vargoSelectTag=newArray();varg Read More
posted @ 2011-07-22 13:10 赤卫 Views(1548) Comments(0) Diggs(0)
XML与DataSet进行交互是非常容易的,无论是XML文件还是XML字符串。而我们现在主要用的都是XML字符串的方式。即使用DataSet.GetXml()方式。 一般来说,用DataSet生成的Xml格式应该是如下方式:<NewDataSet> <Table> <Columns1>……</Columns1> <Columns2>……</Columns2> </Table> <Table> <Columns1>……</Columns1> <Columns2>…… Read More
posted @ 2011-07-19 00:09 赤卫 Views(2044) Comments(0) Diggs(0)
以下是通过DataSet操作XML的类:usingSystem;usingSystem.Collections;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Web;usingSystem.Web.SessionState;usingSystem.Web.UI;usingSystem.Web.UI.WebControls;usingSystem.Web.UI.HtmlControls;usingSystem.Xml;namespaceOP_XML{/**////<summary> Read More
posted @ 2011-07-18 23:30 赤卫 Views(277) Comments(0) Diggs(0)
数据库中的 NULL 是一个特殊的数据。任何数据类型都可以为 NULL。 在 .NET 中,通过参数对象向数据库传递参数的时候,如果将 Value 属性的值设置为 null,则实际上将不向数据库传递这个参数。在 .NET 中 null 表示空引用,不是数据库中 NULL 的含义。 为了在 .NET 中表示数据库中的 NULL,可以使用 System.DBNull 这个类,专门用来解决这个问题,这个类有一个静态属性 Value ,表示它的唯一一个实例。 所以,从数据库中读取的 NULL ,在 ADO.NET 中将被表示为 DBNull,DataReader 有一个方法专门用来判断是否为 DBNU Read More
posted @ 2011-07-15 17:16 赤卫 Views(404) Comments(0) Diggs(0)
常见问题:Ilist <> 本身只是一个泛型接口, 既然是接口当然不能实例化,只能用如下方法 IList <Class1> IList11 =new List <Class1>(); 但是为什么要这么用呢,为什么不直接用List: List <Class1> List11 =new List <Class1>(); 第一种用法有什么好处。总结归纳一下:Ilist <> 是在 .net2.0里面才支持的 好处嘛..比如说human和tiger都有行走的功能,你可以把这些归类到interface中,当你有一个动物的类包括有这两 Read More
posted @ 2011-07-14 00:33 赤卫 Views(205) Comments(0) Diggs(0)
共同点:IList, List , ArrayList 通俗一点来讲就是广义的数组,C#里面称之为集合。不同于一般的狭义的数组,它们可以存放任意类型的东西,在申明或者赋值的时候指定。比如你写了一个类 Cake,然后想有一个结构来存放很多Cake的实例,那就可以用他们。区别:IList与List 通俗一点讲,只能存放同一类型的元素。比如声明的时候 声明为List<Cake> cakes=new List<Cake>(); 那么就只能用放cake的实例。在从cakes这个变量中取出元素的时候,取到的直接就是Cake类型。不需要做强行的转换。如果想要让一个‘数组’存放各种类型 Read More
posted @ 2011-07-14 00:22 赤卫 Views(963) Comments(0) Diggs(1)