1

興味深い SQL テーブル (列名がリストされています) に遭遇しました
。From_Id | To_TableName | To_Id

私が理解したことから、このテーブルはデータベース内のすべてのテーブル関係に使用されます。データベースには多くのデータ (前述の表では 10000 行以上) がないため、パフォーマンスはそれほど重要ではなかったと思います。私は SQL の専門家ではないので、ここで質問することにしました。

私の考え: このアプローチには利点がありません。確かに、すべてのリレーションシップに対して 1 つのテーブルしか必要ありませんが、それはプラスにはなりません。また、新しいテーブルを作成するときの作業が本当に少ないかどうかはわかりません。ユーザーに何かをさせたくない場合を除き、何らかの検証ロジック (有効な関係の種類) がどこかにある必要があり、それを更新する必要があります。

4

4 に答える 4

2

これはおそらく、SQL データベース自体ではなく、アプリケーション層 (できれば) でエンティティのようなオブジェクトをマッピングする際に使用されました。

推奨されていませんが、これらのアプローチは以前に見たことがあります。

これは深刻なパフォーマンスの問題につながる可能性がありますが、あなたが言ったように、データベースは非常に小さかった.

ただし、これがDailyWTFを完全に保証するとは思いません。

于 2009-12-28T13:09:31.370 に答える
1

開発者の関与なしに、ユーザーがいつでも新しいテーブルとリレーションシップを追加できる、このようなシステムに取り組んだことがあります。

于 2009-12-28T13:11:46.030 に答える
0

個別のテーブルを使用してリレーショナル情報を格納する方法は、それほど珍しいことではありません。多くのフレームワーク (Rails など) は、それらを使用して多対多の関係を格納します。ただし、これらの場合、通常はリレーションシップごとに 1 つのテーブルであり、テーブルには両方の ID のみが含まれます。

そうは言っても、関係ごとに個別のテーブルを用意する代わりに、すべての関係を 1 つにまとめるこのアプローチは見たことがありません。今説明したアプローチと比較したこのアプローチの唯一の本当の欠点は、パフォーマンスです。利点は、(一部のユーザーにとっては) テーブルが少なくなるため、データベース内の混乱が少なくなるということです。

しかし、いや、間違いなく DailyWTF に値するものではありません。私はデザインに疑問を呈しますが、それを嘲笑するつもりはありません.

于 2009-12-30T00:31:02.150 に答える
0

カスタムでそういうデザインを見たことがあるORM

これは、次の場合に意味があります。

  • 「テーブル名」を「クラス名」に読み替える
  • すべてのクラス インスタンスは別のテーブルに格納されます
  • 実際のテーブルにはクラス プロパティが含まれます
于 2009-12-28T13:11:01.897 に答える