2

いくつかのユーザーアクションを順番に永続化する必要があるテーブルがあります。リンクリストのような自己参照テーブルを使用して保存するか、自己参照をまったく使用せずに、タイムスタンプを使用してシーケンスを保持することができます。このテーブルには、アクションに関連付けられたユーザーやファイルなどの他のテーブルへの参照があります。操作にはCRUDのサポートが必要です。操作の頻度は次の順序です:取得>挿入>更新>削除

あなたのデザインの好みとその理由は何ですか?ありがとう!

4

1 に答える 1

3

疫病のような「リンクリスト」は避けたいと思います。彼らが得意とするのは、「次の」アイテムを取得することだけです。問題は、すべての余分な「ホップ」に結合が必要なことです。したがって、それをパラメーター化する場合(たとえばN、特定のアイテムに続くアイテムを取得する関数を提供する場合)、(1)マシンで生成された結合(2)のいずれかが必要です。複数選択(3)移植性がない、またはORMでサポートされていない可能性が高いSQL。

これは、SQLでツリーを悪名高いものにするのと同じ問題です。再帰的結合によって「修正」されますが、それは上記の(3)です(多分私は古風で、誰かがこれらは今よくサポートされていると言うでしょう-もしそうなら私は学ぶでしょう...)。

于 2012-05-23T01:32:41.393 に答える