日期:2013-05-02 浏览次数:20549 次
数据表关联是指两个或者多个数据表的记录之间的逻辑关系。
例如:
目前,FleaPHP 支持四种类型的数据表关联,分别是:
在 FleaPHP 中,可以为每一个表数据入口定义多个不同的关联,例如:
<?phpload_class('FLEA_Db_TableDataGateway');class Model_ProductClass extends FLEA_Db_TableDataGateway{ var $tableName = 'product_class'; var $primaryKey = 'pclass_id'; var $hasMany = array( array( 'tableClass' => 'Model_Permissions', 'foreignKey' => 'pclass_id', 'mappingName' => 'permissions', ), array( 'tableClass' => 'Model_Products', 'foreignKey' => 'pclass_id', 'mappingName' => 'products', 'enabled' => false, ), ); var $hasOne = array( array( 'tableClass' => 'Model_ProductClassAdverts', 'foreignKey' => 'pclass_id', 'mappingName' => 'advert', ) );}?>
在详细介绍这四种关联之前,先了解一些后文将会用到的术语。
理解这几个术语后,我们再来看每一种关联的详细解释。
HAS_ONE 是一种非常简单的关联关系。表示一个记录拥有另一个记录。这两个记录分别位于两个数据表中。
在一个信息管理系统中,users 表用于存储用户帐户的基本信息,例如用户名、密码等。而 profiles 表则用于存储用户的个人信息,例如家庭住址、邮政编码等。
由于每一个用户(一条 users 表中的记录)都有一份对应的个人信息(一条 profiles 表中的记录)。因此,我们就可以为 users 表定义一个 HAS_ONE 关联。
很明显,users 表的记录拥有一条 profiles 表的记录。因此,当 users 表中的一条记录被删除时,被删除记录所拥有的 profiles 表中的关联记录也会被自动删除。
在 HAS_ONE 关联中,要求外键放置在关联表中。
上述例子的表定义简化版如下:
users 表:
profiles 表:
对应的 MySQL 代码如下:
CREATE TABLE `users` (