4

適切な用語を使用しているかどうかはよくわからないので、最初に問題を説明してみます。

私は相互参照表 を持っており、これにCompetenceCollabは人々とその能力との関連が含まれています。このテーブルには、人の ID と能力の ID という 2 つの主キーがあります。ここまでは、すべて問題ありません。

ただし、追加しなければならない新機能は次のとおりです。人々は、他の人々の能力に評価を追加できる必要があります。基本的に、これは新しいテーブルを追加する必要があることを意味します。これには、メモ、誰がそれを提供したか、およびCompetenceCollabテーブルへのリンクが含まれます。ある同僚は、彼が「代替キー」と呼んだものを使用して、 の各プライマリ列に 1 つずつ、2 つの外部キーを定義CompetenceCollabし、各評価が能力と人に関連付けられていることを何らかの方法でデータベースに伝えることができると言いました。

だから私の質問は次のとおりです。

  • まず、このデザインは完全に狂っているように見えますか? もしそうなら、どうすればよいですか?
  • Symfony で Doctrine ORM を使用する必要があります。それを使ってこのようなことは可能ですか?はいの場合、誰かが YAML ファイルでそれを定義する方法を教えてくれませんか?

助けてくれてありがとう、コメントでお気軽に質問してください。私が本当にそんなに明確だったかどうかはわかりません。

4

2 に答える 2

4

これは古い質問だと思いますが、Docrine 2.1 以降、複合外部キーがサポートされています。参照: http://readthedocs.org/docs/doctrine-orm/en/latest/tutorials/composite-primary-keys.html

于 2012-04-30T14:23:34.140 に答える
1

これは2つの質問ですが、質問のORMツールについて何も知らないので、最初の1つだけに答えます。

「代替キー」が何を意味するのかはよくわかりませんが、検討する選択肢は次のとおりです(優先順):

1) CompetenceCollab で代理主キーを定義し、それを使用して新しいテーブルから外部キーを作成します。

2) 新しいテーブルに人物 ID とコンピテンス ID の両方のフィールドを設定し、CompetenceCollab への複合外部キーを作成します。

Doctrine ORM にまともな機能セットがある場合、少なくとも (1) を処理する必要があります。これはかなり一般的なシナリオです。

于 2010-05-20T13:58:39.743 に答える