使用CakePHP的多个字段主键和数据库结构

时间:2012-11-22 03:49:20

标签: mysql cakephp

我有两个已设置的表,一个名为users,另一个名为work_order。

用户表中,字段包括* id,given_name,family_name *

work_order 表包含* id,create_date,due_date,description *

我想添加created_by,requested_by和owned_by字段,这些字段都将仅限于users表中列出的用户。这样做的正确方法是什么?我是否在工作单表中有“_by”字段,或者我是否需要一个包含work_order_id,user_id和某种角色字段的新表?

2 个答案:

答案 0 :(得分:0)

首先,你的桌子应该是' work_orders' (复数),而不是' work_order' (单数)。没什么大不了的,只要你在模型中指定$useTable = "word_order";,但是 - 命名约定说表格应该是复数。

因为您只处理三件事情,并且不希望不断添加新字段,所以使用这三个字段完全没问题(也可能是我做的事情)你提到过:' created_by',' requested_by'和' owned_by' work_orders表中的字段。

我想如果是我,我会遵循something_id约定并使用' creator_id',' requester_id'和' owner_id&# 39;虽然。无论哪种方式,都取决于你。

然后,当您设置关联时,您只需使用这三个字段与“用户”关联即可。模型。在我的头顶,它将是这样的:

//WorkOrder model

public $belongsTo = array(
    'Creator' => array(
        'className'    => 'User',
        'foreignKey'   => 'created_by' //could use 'creator_id' instead
    ),
    'Requester' => array(
        'className'    => 'User',
        'foreignKey'   => 'requested_by' //could use 'requester_id' instead
    ),
    'Owner' => array(
        'className'    => 'User',
        'foreignKey'   => 'owned_by' //could use 'owner_id' instead
    ),
);

答案 1 :(得分:0)

您必须定义用户和工作订单之间的关系,以便以第3范式创建数据库方案。

用户可以创建多个工单吗? 可以为多个用户创建工单吗?

用户可以请求多个工单吗? 是否可以为多个用户请求工单?

用户可以拥有多个工单吗? 可以为多个用户拥有工单吗?

一旦你回答了这些问题,你就可以开始处理数据库表了。