0

2つのテーブルが設定されています。1つはusersという名前で、もう1つはwork_orderという名前です。

usersテーブルのフィールドには、* 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、およびある種の役割フィールドを持つ新しいテーブルが必要ですか?

4

2 に答える 2

0

まず、テーブルは「work_order」(単数形)ではなく「work_orders」(複数形)である必要があります。モデルで指定する限り、大したことではありませんが、$useTable = "word_order";命名規則では、テーブルは複数形である必要があります。

あなたは3つのことを扱っているだけで、新しいフィールドを継続的に追加することを期待していないので、あなたが言及した3つのフィールドを使用して完全に問題ありません(そしておそらく私がすることです):'created_by'、'requested_by'、 work_ordersテーブルの「owned_by」フィールド。

私の場合は、something_id規則に従い、「creator_id」、「requester_id」、および「owner_id」を使用すると思います。いずれにせよ、それはあなた次第です。

次に、関連付けを設定するときに、これら3つのフィールドを使用して「ユーザー」モデルに関連付けます。頭のてっぺんから、次のようになります。

//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
    ),
);
于 2012-11-22T05:20:24.040 に答える
0

第3正規形でデータベーススキーマを作成するには、ユーザーと作業指示の関係を定義する必要があります。

ユーザーは複数の作業指示書を作成できますか?複数のユーザーの作業指示書を作成できますか?

ユーザーは複数の作業指示を要求できますか?複数のユーザーに対して作業指示を要求できますか?

ユーザーは複数の作業指示書を所有できますか?作業指示書を複数のユーザーが所有できますか?

これらの質問に回答したら、データベーステーブルでの作業を開始できます。

于 2012-11-22T10:47:54.903 に答える