sql >> データベース >  >> RDS >> Mysql

同じテーブルに多対多

    「ボブはジョーの友達です」は「ジョーはボブの友達でもあります」を意味するように、説明している関係が対称的である場合、2つのユーザーIDのうち小さい方が最初の列、および大きい方の列は2番目の列に配置されます。この制約により、ルックアップテーブルのレコードが一意になることがほぼ確実になります。また、ルックアップを実行するときは、通常、両方の列を検索する必要があることも意味します。

    たとえば、ボブのすべての友達を取得しようとした場合、いずれかの列にボブのIDが含まれるレコードをクエリする必要があります。これにより、コードが少し増え、パフォーマンスに影響を与える可能性があります。

    「ボブはジョーの友達です」のように関係が非対称である可能性がある場合、必ずしも「ジョーはボブの友達でもある」という意味ではありません。ユーザーのペアごとに2つのエントリが必要です。ボブ-ジョーとジョー-ボブです。これは、ルックアップテーブルに2倍のエントリが含まれ、サイトがストーカーフレンドリーであることを意味します:Dもちろん、関係が対称的であっても、このシステムを適用することを選択できます。

    この方法を使用すると、ボブの友達全員を取得したい場合は、最初の列でボブのIDを持つレコードを選択するだけです。これは、検索が高速になり、作成するコードが少なくなることを意味する可能性がありますが、繰り返しになりますが、データベースでより多くのスペースを占有していることを意味します。



    1. PDOエラーの原因他のバッファリングされていないクエリがアクティブな間はクエリを実行できませんか?

    2. SalesforceおよびOktaシングルサインオン(SSO)でのODBCの使用

    3. あるテーブルの条件の結果を選択し、それを別のテーブルに表示するためのMYSQLクエリ

    4. パフォーマンスが低下し始める前に、MySQLデータベースはどのくらい大きくなることができますか