IdColumnReasons (Dev docs)
提供:MoodleDocs
警告: このページは終了しました。このページに含まれる情報は、関連性や信頼性があるとは見なされません。 |
理由
"本当の" PKはテーブル内のいくつかの FK の組み合わせであるのに、追加のサロゲートキー (idカラム) を作ることについての "聖戦" はたくさんありました。
第一の理由(メインではない)
- しかし、get_record_XXX() 関数のどれを使っても、返されたレコードセットの最初のフィールドが配列のキーになる連想配列 (GetAssoc()) を返すので、問題が発生します。そのため、各テーブルに人工的な "id" フィールドを設けることが、"キーの上書き" によってレコードの一部を失うことなく、どのテーブルからもすべてのレコードを取得できる唯一のメカニズムなのです。あなたの例に倣って、このような簡単なものでよいです:
- get_records('user_teachers')
- id フィールドがない場合は動作しません。すべての教師 (selectの最初のフィールド、userid) の1つの出現のみが返され、多くのレコードを見逃します。
- しかし、get_records_XXX() の呼び出しの多くは単純に壊れてしまいますし、他のものは GetAssoc() のキー機能をそれ自身の利益のために使っている可能性があるので、関数が返す配列のタイプを変更することはすぐに代替できるものではない、ということです。