2012-11-22 30 views
0

我有两个表,一个名为users,一个名为work_order。使用CakePHP的多字段主键和数据库结构

用户表,字段包括:* ID,GIVEN_NAME,FAMILY_NAME *

work_order表包括* ID,CREATE_DATE,DUE_DATE,说明*

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

回答

0

首先,你的表应该是'work_orders'(复数),而不是'work_order'(单数)。没有什么大不了的,只要你在你的模型中指定了$useTable = "word_order";,但是 - 命名约定表格应该是复数形式。因为你只是处理了三件事情,并且不期望不断地添加新的字段,所以使用你提到的三个字段:'created_by',你完全没问题(也可能是我会做的)您的work_orders表中的'requested_by'和'owned_by'字段。

我想如果是我,我会遵循something_id惯例,并使用'creator_id','requester_id'和'owner_id'。无论哪种方式,都取决于你。

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

//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 
    ), 
); 
0

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

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

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

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

一旦你有这些问题的答案,你可以开始在数据库表上工作。

+0

用户可以请求,拥有并创建多个工单,但每个订单只能有一个。 – gsforfree

+0

然后所有的外键(id)都应该在'work_order'表中。 (1-n关系) – Alvaro