设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

12下一页
返回列表 发新帖
查看: 6181|回复: 16
打印 上一主题 下一主题

MDB的十宗罪.

[复制链接]
跳转到指定楼层
1#
发表于 2005-8-5 02:41:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
如题.
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅

点击这里给我发消息

2#
发表于 2005-8-11 21:24:00 | 只看该作者
有意义吗?[em08]
3#
 楼主| 发表于 2005-8-16 17:20:00 | 只看该作者
有,研究表明,用ACCESS做数据库最好还是用adp,用MDB不太好.先说说十宗罪: 1.表设计可以不用主键也可插入数据,养成表设计的坏习惯.2.没有临时表的概念.造成多用户临时处理数据的不便.3.数据表多时,关系线不可避免的乱.4.MDB的SQL在网络上比TSQL慢.5.非标准的SQL语法.6.嵌入式SQL害大于利.7.复合查询的重用性并不高.不如在ADP做存储过程或TSQL函数。8.C/S模式下数据库不安全.9.体积比ADP大.造成当掉的机会比MDB高.10.如果软件考虑到用其它开发工具重做时,ADP比MDB来得容易。讨论这个东西也有意义的,吸引MDB的人学ADP,也使大家认识到MDB的不足和问题。[em05]
4#
发表于 2005-8-23 01:07:00 | 只看该作者
在下认为楼主所言有对有偏拨:1.表设计可以不用主键也可插入数据,养成表设计的坏习惯.此条我认为正好增加的灵活性,此外学access者很多为非计算机专业人员,能使他们更直观的学习.2.没有临时表的概念.造成多用户临时处理数据的不便. 此条可通过用ado另创本地临时mdb库,再在库中创临时表的方式解决,只是速度上较慢.

3.数据表多时,关系线不可避免的乱. 此条甚是4.MDB的SQL在网络上比TSQL慢. 此条甚是,但为鱼(易用性,随手安装,随意用)和熊掌(安全,效率)的选择5.非标准的SQL语法. 标准sql语法较之稍复杂,不易使用6.嵌入式SQL害大于利. 此条末见得,原因同第四条7.复合查询的重用性并不高.不如在ADP做存储过程或TSQL函数。此条赞同 8.C/S模式下数据库不安全. 此条赞同9.体积比ADP大.造成当掉的机会比MDB高. 此条甚是10.如果软件考虑到用其它开发工具重做时,ADP比MDB来得容易。 不一定,定位不同,mdb本就适合短平快,与adp比起来各有所用
5#
 楼主| 发表于 2005-8-25 18:38:00 | 只看该作者
2.没有临时表的概念.造成多用户临时处理数据的不便. 此条可通过用ado另创本地临时mdb库,再在库中创临时表的方式解决,只是速度上较慢.>>>>>>>>>>>>> 还不如临时表方便,链接断开时,临时表是自动删除的.6.嵌入式SQL害大于利. 此条末见得,原因同第四条>>>>>>>>>>>>>>> 实践证明,ADP用TSQL有一个好处,就是SQL与窗体元素的政党分家,有利于调试和重用性.调试SQL不用打开对应的窗体元素.而且,引用窗体元素多时,用参数的SQL绝对要比用MDB的SQL好看. 10.如果软件考虑到用其它开发工具重做时,ADP比MDB来得容易。 不一定,定位不同,mdb本就适合短平快,与adp比起来各有所用>>>>>>>>>>>>>>>> 很多的开发工具,都和ADP的方式类似,如.NET和VB.更换前台时,后台的存储过程和函数就不用怎么的变了.但是用MDB,很多东西都要重写.
6#
发表于 2005-8-25 18:48:00 | 只看该作者
我也来说说。1.表设计可以不用主键也可插入数据,养成表设计的坏习惯. 这是为了与Excel兼容,方便将数据倒来倒去而设计的。我还没有养成表设计的坏习惯。

2.没有临时表的概念.造成多用户临时处理数据的不便. 临时表没有用过,不知道有什么用的? 3.数据表多时,关系线不可避免的乱. 对极了,非常同意。不过小型数据库没有那么多关系啊, 4.MDB的SQL在网络上比TSQL慢. 同意一半,在Internet上,OLE-DB没有ODBC那么快,不知道什么原因?但在局域网OLE-DB就比ODBC快很多? 5.非标准的SQL语法. 对极了,非常同意。但Access为了方便和兼容,不能做成标准的SQL语法。做查询,拖拉就得,语法不用学,慢慢用就会,也没有什么大问题。 6.嵌入式SQL害大于利. 对极了,非常同意。方便一处,带来的麻烦非常多,难以解决。这种懒惰思想会限制组件编程思维。对初学者害处极大。 7.复合查询的重用性并不高.不如在ADP做存储过程或TSQL函数。 对极了,非常同意。学过组件编程的人都有同感。 8.C/S模式下数据库不安全. 对极了,非常同意。就是这个问题,使Access限制在小型桌面应用。学过Delphi做3层数据库的,就会因为安全问题毫不犹豫放弃Access和ADP。 9.体积比ADP大.造成当掉的机会比MDB高. 应该这样写:MDB体积比ADP大.造成死掉的机会比ADP高。 10.如果软件考虑到用其它开发工具重做时,ADP比MDB来得容易。 学ADP要用组件函数重用的思想来学习,学MDB要用懒惰的思想拖拖拉拉控件绑架查询就得。差别是相反的。
7#
发表于 2005-8-26 22:52:00 | 只看该作者
我是用SQL Server+ MDB 做開發﹐不用ADP最主要的原因是

1. 有些存儲過程及ADO查詢不知為何無法返回記錄﹐但MDB的通過查詢卻可以。

2. MDB可以連接各種數據源﹐統一管理比較方便﹐Refresh Link 又很容易。

3. 安全方面,因為我是在發布時﹐沒有表與查詢在MDB中(有也不會保存密碼)﹐連接語句都在代碼里﹐并且加了密﹐而且會根據不同用戶使用不同的用戶名與密碼訪問服務器, 所以安全可靠。

4. MDB可以使用工作群組加強前端的管理。

5. 我不用臨時表﹐一般用數組保存臨時數據。

6. MDB使大家容易相互交流學習。使無數門外漢因此開始編程之路。

總之﹐作為數據庫﹐ADP只是SQL Server的管理前端+Access開發環境,不是數據庫。 MDB是即可做真正的數據庫﹐又可以只做開發工具﹐不做數據庫。所以我認為用Access MDB做開發工具是好過ADP的﹐其不僅具有一般開發工具的功能﹐且具有更靈活強大的數據調試及用戶管理功能。

[此贴子已经被作者于2005-8-26 14:58:39编辑过]

8#
 楼主| 发表于 2005-8-27 04:53:00 | 只看该作者
1. 有些存儲過程及ADO查詢不知為何無法返回記錄﹐但MDB的通過查詢卻可以。>>>>我未遇过这种情况,很可能你是没有注意到TSQL与JET SQL的语法有些区别.很多人都会犯这种错.2. MDB可以連接各種數據源﹐統一管理比較方便﹐Refresh Link 又很容易。>>>>无可否认,ADP只能连接SQL 2K,如果要链接其它数据源,就要在代码中做, 这是ADP的弱点.3. 安全方面,因為我是在發布時﹐沒有表與查詢在MDB中(有也不會保存密碼)﹐連接語句都在代碼里﹐并且加了密﹐而且會根據不同用戶使用不同的用戶名與密碼訪問服務器, 所以安全可靠。>>>> 话说来,真正安全的数据库是3层或N层构架的数据库.ADP和MDB也是属于两层结构.>>>>密码保存在哪其实没有太大关系.一个MD5加密已经使密码面相全非了.>>>>另外,我不喜欢用MDB+ODBC+SQL 2K的一个原因是,ODBC很容易坏,我朋友发生过一次,我也发生过N次.都是很奇怪的,要重装系统才行解决.4. MDB可以使用工作群組加強前端的管理。>>>>这点,其实自己写一个更好的模块,也可以很好的做到这点.而且自己编写可以随心所欲.5. 我不用臨時表﹐一般用數組保存臨時數據。>>>>临时表毕竟与数组是有区别的.临时表可以与其它表一些做查询,数组不行.6. MDB使大家容易相互交流學習。使無數門外漢因此開始編程之路。>>>>MDB可以说是一块基石,但是我认为,MDB为什么容易交流学习,主要是简单,一个文件就可以运行.资料又多.当然,要更上一层楼,应该更上一步,向ADP进发.總之﹐作為數據庫﹐ADP只是SQL Server的管理前端+Access開發環境,不是數據庫。>>>>ADP的方式是ACCESS是前台,SQL 2K是后台.嘿嘿,不要忘记.MDB+ODBC+SQL 2K的方式,其实不过也是一样. MDB是即可做真正的數據庫﹐又可以只做開發工具﹐不做數據庫。所以我認為用Access MDB做開發工具是好過ADP的﹐其不僅具有一般開發工具的功能﹐且具有更靈活強大的數據調試及用戶管理功能。>>>>那么ADP也是真正的数据库哦.就算没有SQL 2K,也可以做开发工具.MDB中的DATAWINDOWS和ADP的DATAWINDOWS也是一样的用哦.>>>>有一点,现代的数据库开发工具,都是拆分为前台+后台的方式,象VB,DELPHI,.NET等. 其实开发工具+数据库二合为一的东西已经过时了,就如VFP一样.听说它的开发速度很高.但是局限性很大.VFP如果要用SQL 2K做数据库后台,也要用ODBC的方式.>>>>有一点意味着,软件方面,数据库和开发工具是分离了.数据库是做数据库的东西,开发工具是做开发工具的东西.二合为一,只是小,并不一定是好.
9#
发表于 2005-8-27 06:14:00 | 只看该作者
數據庫是與開發工具分離了﹐ADP本身并不能建表﹐它不是數據庫。MDB即可象ADP一樣管理SQL 2000又可以有本地表。這是MDB與ADP的本質差別﹐當然對于只有MSDE的人﹐ADP是很好的前端工具﹐如果已有SQL2000﹐再用ADP就沒什么意義了。說到底在真正的數據庫已改為SQL2000等高端服務器時﹐ADP 與MDB 沒有什么區別﹐主要是用它簡單的VBA罷了。請教以下存儲過程為什么不能返回值:Alter PROCEDURE dbo.Identi

AS SELECT   IDENTITY (int, 1, 1) AS AA,*

INTO         #tempA

FROM           ABCselect * from #tempA另請教以下兩種ODBC的區別﹐我連接表與通過查詢用第一種做連接﹐代碼中的用Provider =SQLOLEDB;Data source=172.000.000. 210;user id=sunpo;password=pwd; initial catalog=molding.1.ODBC;DRIVER=SQL Server;SERVER=172.000.000.210;UID=SunPoWD=Pwd;DATABASE=ABC2.ODBC;DSN=molding;UID=sunpoWD=pwd;DATABASE=molding;代碼中用ADO連接應該不會有問題吧﹐至于ODBC﹐我是不太懂﹐主要是做個連接表管理數據(做排序﹐刪除等好方便).
10#
发表于 2005-8-31 04:46:00 | 只看该作者
存储过程没有定义返回变量,就不能返回值。ODBC连接SQL2000时,除了 select 取数据,其他写入的SQL语句,都翻译成调用SQL2000系统的存储过程执行,一行一行的追加,一行一行的更新,一行一行的删除。一行调用两个存储过程,等得我发火。以后都不用ODBC了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-11-19 11:36 , Processed in 0.091667 second(s), 34 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表