我前一段时间问过这个问题,但现在我正在寻求实现数据库访问层和域层之间的实际分离.我也将努力将业务逻辑移动到它所属的域和控制器脚本之外.
我正在使用Zend Framework为数据访问层实现表数据网关和行数据网关模式,但显然无法真正定义如何构建与数据访问层分离的域层.我考虑过使用Active Record模式,其中域逻辑与数据访问逻辑共存,但我有以下情况至少发生一次,我认为Active Record不会处理:
我有一个表"Person",其中包含person_id和userType字段.
每个userType(admin,buyer,associate,supervisor)都具有与之关联的特定业务逻辑,所有类型都从Person对象继承一些基本功能.
我不想使用专门属于一种类型用户的业务逻辑来膨胀Row Data Gateway对象,但我不确定如何构造域层来表示不同类型的用户.例如,我是否创建一个包含PersonGateway对象的Person对象,然后编写将调用传递给网关对象的包装函数,或者编写Person对象以扩展PersonGateway对象,然后只实现我需要的特定函数?
同样,我通常认为这是(部分)工厂问题,我需要一个工厂方法,它将基于userType实例化正确的子类.这仍然是Zend Framework的Zend_Db类中最好的方法吗?
任何有关如何在Zend_Db上正确创建域模型的教程的建议或链接将不胜感激.
我正在使用具有有限权限的数据库用户,使用C#方法将ADO.NET 2.0 SqlBulkCopy对象批量插入到MS SQL 2005数据库中.当我尝试运行该操作时,我收到错误消息:
批量复制失败.用户对表'theTable'没有ALTER TABLE权限.ALTER TABLE权限是必需上批量复制操作的目标表,如果该表具有触发器或检查约束,但
'FIRE_TRIGGERS'还是'CHECK_CONSTRAINTS'散装提示没有被指定为选项,以批量复制命令.
我阅读了一些文档并使用构造函数创建了批量复制对象,该构造函数允许我指定这样的东西:
SqlBulkCopy bc = new SqlBulkCopy(
System.Configuration.ConfigurationSettings.AppSettings["ConnectionString"],
SqlBulkCopyOptions.FireTriggers & SqlBulkCopyOptions.CheckConstraints);
Run Code Online (Sandbox Code Playgroud)
但这并没有改变任何东西 - 我得到了和以前一样的错误信息.我尝试摆弄其他一些SqlBulkCopyOptions值,但没有运气.我真的以为这会解决这个问题,我错过了什么吗?
我在表上向用户授予ALTER后测试了该过程,操作成功.但是,这不适合我的情况.
我的程序必须读取使用各种编码的文件.它们可以是ANSI,UTF-8或UTF-16(大或小端).
当BOM(字节顺序标记)出现时,我没有问题.我知道文件是UTF-8还是UTF-16 BE或LE.
我想假设没有BOM文件是ANSI.但我发现我正在处理的文件经常缺少BOM.因此,没有BOM可能意味着该文件是ANSI,UTF-8,UTF-16 BE或LE.
当文件没有BOM时,扫描某些文件并最准确地猜测编码类型的最佳方法是什么?如果文件是ANSI,我希望接近100%的时间,如果是UTF格式,我希望接近100.
我正在寻找一种通用的算法来确定这一点.但实际上我使用Delphi 2009,它知道Unicode并且有一个TEncoding类,所以特定的东西将是一个奖励.
回答:
ShreevatsaR的回答让我在Google上搜索"通用编码检测器delphi",这让我感到惊讶,因为这个帖子在活着只有大约45分钟后被列为#1位置!这是快速googlebotting !! 同样令人惊讶的是Stackoverflow如此迅速地进入第一名.
Google的第二个条目是Fred Eaker关于字符编码检测的博客文章,列出了各种语言的算法.
我发现在该页面上提到了Delphi,它让我直接进入SourceForge的Free OpenSource ChsDet Charset Detector,这是用Delphi编写的,基于Mozilla的i18n组件.
太棒了!谢谢所有回复的人(全+1),谢谢ShreevatsaR,再次感谢Stackoverflow,帮助我在不到一个小时内找到答案!
地址记录可能在大多数数据库中使用,但我看到了一些用于存储它们的略有不同的字段集.字段数似乎从3-7变化,有时所有字段都标记为address1..addressN,其他时间给定特定含义(城镇,城市等).
这是英国特定的,尽管我也对世界其他地方的评论持开放态度.在这里你需要地址的第一行(实际上只是数字)和邮政编码来识别地址 - 其他一切都是额外的奖励.
我现在赞成:
如果我们需要它,我们可以添加国家(不太可能).
你怎么看?这太少了,太多了吗?
我使用jQuery向我的服务器发出一个AJAX POST请求,该请求可以返回状态为302的HTTP响应.然后,JavaScript只是向此URL发送GET请求,而我想在此响应中将用户重定向到URL.这可能吗?
这个Rails配置设置的目的是什么......
config.action_controller.consider_all_requests_local = true
Run Code Online (Sandbox Code Playgroud)
默认情况下,它设置为true config/environments/development.rb.
谢谢,
阮经天
我们有一个View(称之为X),它是由其他2个视图调用的基本视图(称为Y和Z).
今天我们进行了更改以查看X,在该视图之后,Y和Z开始返回不正确的数据.当我们在Management Studio中运行时Select * from Y(这正是代码中调用视图的方式),它将返回不正确的数据.但是,当我们运行视图包含它的实际SQL时很好.我们尝试了很多东西,直到一位同事建议添加一个空格来查看X和Z,然后运行Alter,这是有效的.一切恢复正常,运行良好.
我的问题是:MSSQL是否缓存其视图?如果是这样,你怎么强迫他们不要强迫他们重新编译?
此外,任何有关此的额外阅读将是有帮助的.
在所谓的"快速"方面,我没有参考框架; 我总是想知道这一点,但从来没有找到一个直接的答案......
我正在尝试像Database Design for Tagging这样的东西,除了我的每个标签都按类别分组.
例如,假设我有一个关于车辆的数据库.假设我们实际上并不太了解车辆,因此我们无法指定所有车辆将具有的列.因此,我们将用信息"标记"车辆.
1. manufacture: Mercedes
model: SLK32 AMG
convertible: hardtop
2. manufacture: Ford
model: GT90
production phase: prototype
3. manufacture: Mazda
model: MX-5
convertible: softtop
Run Code Online (Sandbox Code Playgroud)
现在您可以看到所有汽车都标有其制造和型号,但其他类别并不完全匹配.请注意,汽车只能拥有每个类别中的一个.IE浏览器.一辆汽车只能有一个制造商.
我想设计一个数据库来支持搜索所有梅赛德斯,或者能够列出所有制造商.
我目前的设计是这样的:
vehicles
int vid
String vin
vehicleTags
int vid
int tid
tags
int tid
String tag
int cid
categories
int cid
String category
Run Code Online (Sandbox Code Playgroud)
我有所有正确的主键和外键,除了我无法处理每辆车只能有一个制造商的情况.或者我可以吗?
我可以在vehicleTags中为复合主键添加外键约束吗?IE浏览器.我是否可以添加一个约束,使得复合主键(vid,tid)只能在vehicleTags中没有行时才添加到vehicleTags,这样对于同一个vid,还没有一个tid在同样的cid?
我的猜测是否定的.我认为这个问题的解决方案是向vehicleTags添加一个cid列,并创建新的复合主键(vid,cid).它看起来像:
vehicleTags
int vid
int cid
int tid
Run Code Online (Sandbox Code Playgroud)
这可以防止汽车有两个制造商,但现在我已经复制了tid在cid中的信息.
我的架构应该是什么?
在我之前的问题中,Tom在我的数据库模式中发现了这个问题,你如何做多对多表外连接?
编辑
我知道在示例制造中应该真的是车辆表中的一列,但是假设你不能这样做.这个例子只是一个例子.
可以使用哪些技术来加速C++编译时间?
这个问题出现在Stack Overflow问题C++编程风格的一些评论中,我很想知道它有什么想法.
我见过一个相关的问题,为什么C++编译需要这么长时间?,但这并没有提供很多解决方案.
ado.net ×1
ajax ×1
algorithm ×1
c++ ×1
database ×1
delphi ×1
delphi-2009 ×1
encoding ×1
foreign-keys ×1
javascript ×1
jquery ×1
optimization ×1
php ×1
ruby ×1
schema ×1
sql ×1
sql-server ×1
sqlbulkcopy ×1
tags ×1
view ×1