Php 曾杜德。在构建db表时是否需要手动设置主键和外键?

Php 曾杜德。在构建db表时是否需要手动设置主键和外键?,php,mysql,zend-framework,model,zend-db,Php,Mysql,Zend Framework,Model,Zend Db,当我阅读J.Gilmore Zend的书(模型部分)时: 我有一个问题: 构建表时是否需要手动设置主键和外键 (例如,在phpmyadmin中,具有类似“主键(id)”的内容,外键(post)引用用户(id) 关于“删除级联”) 或者我可以通过使用$\u primary、$\u dependentTable、$\u referenceMap等引用Zend代码来处理表关系和字段性质 谢谢 Luca创建表时,应该正确定义主键/唯一键和任何其他索引 在99%的情况下执行此操作后,Zend_Db将了

当我阅读J.Gilmore Zend的书(模型部分)时:

我有一个问题:

  • 构建表时是否需要手动设置主键和外键 (例如,在phpmyadmin中,具有类似“主键(id)”的内容,外键(post)引用用户(id) 关于“删除级联”)
  • 或者我可以通过使用$\u primary、$\u dependentTable、$\u referenceMap等引用Zend代码来处理表关系和字段性质
谢谢


Luca

创建表时,应该正确定义主键/唯一键和任何其他索引


在99%的情况下执行此操作后,Zend_Db将了解发生了什么,因为它能够读取表元数据并从中派生主键。

创建表时,您应该正确定义主键/唯一键和任何其他索引


在99%的情况下执行此操作后,Zend_Db将了解发生了什么,因为它能够读取表元数据并从中派生主键。

两者都可以。尽管可以使用ORM处理关系,但数据库确保在低级别上尊重这些关系。总是让数据库尽可能多地完成它的工作,它是为处理关系和防止数据损坏而构建的。如果你的ORM有bug怎么办


作为一个相关的例子,假设您在数据库中有一个声明为int的字段,作为开发人员,您有责任确保在查询中使用int,但数据库在较低的级别强制执行该规则,以防您不使用int,从而保护您的数据。

。尽管可以使用ORM处理关系,但数据库确保在低级别上尊重这些关系。总是让数据库尽可能多地完成它的工作,它是为处理关系和防止数据损坏而构建的。如果你的ORM有bug怎么办

作为一个相关的例子,假设您在数据库中有一个字段声明为int,作为开发人员,您有责任确保您在查询中使用int,但数据库在较低级别上强制执行该规则,以防您不使用该规则时保护您的数据。

+1表示“两者”。如果可能,为了安全性和完整性,请同时使用+1。如果可能,为了安全性和完整性,请同时使用。
class Game extends Zend_Db_Table_Abstract
{
 protected $_primary='id'; //line 4
}

[..]Line 4 identifies the table's primary key.By default the framework will 
presume the primary key is an automatically incrementing integer named id,so 
this line is not necessary [..]