1

3つの列(KEY、personID、personID)を持つ兄弟のテーブルがあります

ここに例として:

0|1|2
1|2|3
2|1|4
3|4|5
4|1|6
5|5|7

IDが1から5のすべての人が兄弟であることに注意してください。

ここで、(すべての場合に)他のすべての兄弟が兄弟のままであることを確認しながら、1つの兄弟を削除するための最良の方法は何ですか。

トリッキーなケースは、で兄弟を削除することID=4です。これがSQLだけでは不可能な場合、PHP+MySQLでそれを行うのが最善の方法は何でしょうか。

私が思いついたコードは非常に長く、一見非効率的です。他に何かアイデアがあれば聞いてみたいです。

4

1 に答える 1

1

現在のレイアウトの問題は、基本的に複数のノード(人)とそれらの間にいくつかの結合があることです。これらの結合には、「AがBで、BがCの場合、AがCの場合」という暗黙の推論があり、これはリレーショナルデータベースでは機能しません。

理想的には、両方向のすべての結合が必要です。その後、必要に応じて安全に人を削除できます。

于 2013-01-11T08:32:23.700 に答える