私は長い間 php を書いてきましたが、それは常に自分自身で学んだスキルであり、テーブル結合に対する自信の小さな危機に直面しました!
auth
MyISAM テーブルusers
とを含むMySQL データベースを想定しますpermissions
。
users
- id (auto increment)
- email
permissions
- id (auto increment)
- name
これらのテーブルを多対多 (または 1 対多) で結合するために、私は常にブリッジ テーブルを次のように使用してきました。
user_permissions
- id (auto increment)
- user_id
- permission_id
(innoDB がリレーションシップに対応できることは知っていますが、より複雑で、より多くのメモリを消費するため、q の目的のために、myISAM を使用したいと思います)
私の特定の質問はこれです:自動インクリメントキーを使用してテーブルを結合するのは賢明ですか、それとも独自の追加キーを生成する必要がありますか?
テーブルが破損して再構築する必要がある場合、または 2 つのデータベースへのミラーリングを開始してキーが同期しなくなった場合に、問題が発生する可能性があることを認識しています。
また、行ごとに一意のハッシュを生成すると (結合で使用される)、ハッシュを生成し、すべてのデータを挿入する前にそれが新しいことを確認するオーバーヘッドがあることも認識しています。
他の人はどのようにしていますか?これらの問題は、実際の状況で見たものですか?
御時間ありがとうございます!
アダム