在以往的数据库设计中遇到一些问题,由于当时缺乏经验造成了一些影响,所以在今后的工作中要加强这些地方的考虑。

 

1.对价格,温度等有可能变化的数据,在引用的地方只保存了相应的ID,而没有保存具体内容。比如:产品表里面有:名称、价格、类型等字段。订单表里面只存了产品ID,这样当产品价格变化时,再统计时价格就和当初订货价格不一样了。所以在订单表里面需要保存订货时的价格。

 

2.通过多级关系来获取相应记录。比如:文件表里面有创建人ID对应人员表,人员表里面有部门表ID。这样当过滤部门条件时,直接可以找到部门信息。但是这没有考虑到人员调整部门的情况,如果人员部门变化了,就会造成该人员创建的文件记录都跑到新的部门名下了。所以文件表还必须保存一个部门表的ID。

 

3.一些当时认为不会变化的数据几年后发生了变化。最明显的就是省市区名称变化。刚开始工作时,一个项目中对区县记录没做基础表,而且数据库里面直接存的就是区县的名称,当时考虑不会变化的,但是过了几年区县规划了,这时就造成就很大的问题,解决这个问题花费了大量人力和时间。此后再做项目时就把所有基础项都建立了相应基础表,使用的地方也都引用外键来处理。

 

4.对应图片、文件之类的保存在数据库表里面,还是保存的项目的相应文件夹里面,对这个问题一直没有完善的解决办法。存数据库表的一个字段里面,这样好处是备份方便,只有把数据库备份了所有数据都丢不了,缺点是数据库会越来越大,有的项目几个后数据库都有10G以上了。 保存在项目文件夹里面正好相反。

 

5.一些表建立的是联合主键,这种造成一些操作很麻烦,而且效率也不高。所有以后在建表时都建立唯一自增主键,这样维护起来很方便,对于主从表操作也简便。

 

 

  以上都是在SQLServer数据库上的经验,其他数据库没试过。

 

posted @ 2011-12-14 09:49 足够有晋 阅读(12) 评论(0) 编辑

压缩日志

1:截断事务日志: BACKUP LOG 数据库名 WITH NO_LOG

2:清空日志 DUMP TRANSACTION 库名 WITH NO_LOG

再:企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩文件--选择日志文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了。

posted @ 2011-12-07 16:58 足够有晋 阅读(14) 评论(0) 编辑
查询第20-30条
select top 10 * from Orders where OrderID> 
(select max(OrderID) from 
  (select top 20 OrderID from Orders order by OrderID ASC ) t0
)
order by OrderID ASC 
这是使用于千万级别数据分页的SQL语句
PDF.NET开发框架对于SQLSERVER中,有整形主键字段的表,采取的就是这个高效分页方案。
posted @ 2011-12-07 16:54 足够有晋 阅读(18) 评论(0) 编辑
摘要: Extjs学习笔记阅读全文
posted @ 2011-09-13 15:45 足够有晋 阅读(115) 评论(0) 编辑

document.all.item("<%= lbEmployeeChoose.ClientID %>")方法在ie6下可以和document.getElementById("<%= lbEmployeeChoose.ClientID %>");一样获得到listbox控件对象。但是在ie8下就报脚步错误了。所以最好还是使用document.getElementById("<%= lbEmployeeChoose.ClientID %>");这样的写法来获取对象,避免出现脚步错误。

因为document.all.item这种写法不符合w3c的规范,有些浏览器兼容,IE8就不支持。document.all.item本身就不是w3c推出的标准,只是一个微软搞得一套东东,现在微软想在IE8中不维护这个了,所以就搞得现在不支持了。

posted @ 2011-03-13 21:01 足够有晋 阅读(199) 评论(0) 编辑

在父页面访问Iframe子窗体的txtAddress控件
window.frames["ifrMapCompanyDetails"].document.all("txtAddress").value = '地址' ;
使用母板页的控件最好写成:

document.frames['iframeApp'].document.getElementById('ctl00_ContentPlaceHolder1_HidIsSelectFlow').value;

 

在Iframe子窗体1访问父页面的TextBox1控件 , 子窗体1把值赋给子窗体2的某个控件
string strValue = "从子窗体传递给父页面的值" ;
下面是在Page_Load事件里面调用的,当然可以写在javascript脚本里面
this.Response.Write("<script>parent.document.all('TextBox1').value = '" + strValue + "';</script>");
this.Response.Write("<script>if( parent.document.all('TextBox2').value = '0')parent.document.all('TextBox1').value = '44';</script>");
  

在Iframe子窗体1访问子窗体2的txtAddress控件 子窗体1把值赋给子窗体2的某个控件  
window.parent.frames["ifrMapCompanyDetails"].document.all("txtAddress").value = '地址' ;


父窗体提交两个Iframe子窗体
 window.frames["ifrMapCompanyDetails"].Form1.submit(); 
 window.frames["ifrMapProductInfoDetails"].Form1.submit();

Iframe子窗体 调用父页面的javascript事件
window.parent.XXX()

 //父页面调用当前页面中IFRAME子页面中的脚本childEvent
function invokechildEvent()
{ var frm = document.frames["ifrChild1"].childEvent(); }
或者调用当前页面中第一个IFRAME中的脚本childEvent
{ var frm = document.frames[0]; frm.childEvent(); }

//子页面调用父窗体的某个按钮的按钮事件
window.parent.Form1.btnParent.click()

父页面调用子窗体的某个按钮的按钮事件
window.frames['ifrChild1'].document.all.item("btnChild3").click();

posted @ 2010-04-30 09:52 足够有晋 阅读(533) 评论(0) 编辑
摘要: 页面地址:http://blog.csdn.net/cuitht/archive/2010/02/05/5292076.aspx相关内容:http://www.tzwhx.com/newOperate/html/1/11/112/20001.htmlhttp://www.soaspx.com/dotnet/csharp/csharp_20100323_3400.htmlhttp://www.diy...阅读全文
posted @ 2010-04-12 15:56 足够有晋 阅读(276) 评论(0) 编辑
摘要: string sql = "Select * from Orders"; string DBConfig_sql = @"Data Source=WAN-9013A0BB35C\SQL2005;Initial Catalog=Northwind;User ID=sa"; DataSet ds = new DataSet(); SqlConnection sqlCon = new SqlConnec...阅读全文
posted @ 2010-04-12 15:15 足够有晋 阅读(192) 评论(0) 编辑
摘要: 我在公司(公司的机器是有连入互联网的)编好水晶报表代码,用的是ActiveX模式,在本机运行,第一次运行提示安装ActiveX控件,安装后,一切正常,能正常打印. 但拿到客户那边运行,一闪而过,连提示安装ActiveX控件也没有,再点"打印图标"也是没反应.后来想想区别,也就是一个上互联网,一个不上,但代码在公司所有的机器运行都正常. 为了验证区别,细心研究了公司里的机器,ActiveX控件到底产...阅读全文
posted @ 2010-03-15 15:56 足够有晋 阅读(346) 评论(0) 编辑
摘要: 虽然都是实现导出excel的功能,但在asp.net和winform的程序中,实现的代码是各不相同的。在asp.net中,是在服务器端读取数据,在服务器端把数据以ms-excel的格式,以Response输出到浏览器(客户端);而在winform中,是把数据读到客户端(因为winform运行端就是客户端),然后调用客户端安装的office组件,将读到的数据写在excel原文:http://www....阅读全文
posted @ 2010-03-12 10:20 足够有晋 阅读(201) 评论(0) 编辑