データベースレコードを削除するか、または削除される印が付くためか。 -議論
昨日私が非常に尊重する誰か近い私の友人からおよび私は頻繁に尋ねられた質問を受け取った。 彼の単語:
私が書直していること私の新しい会社に既存のシステムがある。 システム
決して実際にaを削除することの哲学に続かないデータベースを持っている
記録-ちょうど削除した旗の印を置きなさい。 これについてどう思いますか。一般に、私はそれが悪い考えであることを考える。 私はそれがちょうど仕事を作成することを考える
他の区域のあなたのため。 しかし私は純真であることができる。私は乾燥したのこの指針がある「柵のルビー」を使用している、(
あなた自身を繰り返しなさい)。 柵はに伝統的にある事を置く
規則のような目的関係地図を描く層へのデータベース、
参考用の完全性。 私は参考用の完全性が2に普通あることを推測する
場所: アプリケーションコード(ビジネス・ロジック)およびデータベースのメタデータ。
とにかく、データベースの抑制は柵でまれに使用されない。システムは議論板そしてロットが付いているコミュニティ場所、のである
メンバーによって貢献される他の共用内容。 メンバーはかもしれない
許可は削除されるか、または不具になり。私は削除されればメンバーを削除するように誘惑される。 私は誘惑される
削除されれば内容を削除するため。 私は去るように誘惑される
内容自体がなければ前のメンバーからの内容
私が準を逃している内容を推測するけれども、不適当
メンバーの記録はちょっと孤児である。 (私はちょうど大声で考えている
ここに)。一般的な推薦を有するか。
私は時ひとつひとつのsql声明に「加えることを憎む(削除されるある
0かdeleted=0) 「。 そして私は他の問題が、のようなあることができることを考える
「印が付いている記録との独特な主衝突は削除した」。プロジェクトで私は種類の「弱いのが」あったスキーマを作成した
それの関係。 これは目的の計画システムだった。 目的のテーブル
ユーザー名のコラムを持っていた。 見つけるのにこのユーザー名のコラムが使用できる
ユーザーテーブルのユーザー。 しかしユーザーが削除されたら、まだ目的
うまく表示される。 私はかどうか後で結合されるユーザー推測しaを再使用する
前に使用されたユーザー名それらはある既存の目的を受継ぐ。
実際にはこの特徴はスキーマのための刺激だった-私はから始まった
一組の大きい展開表および私からの目的はそれらに存在してほしかった
私はユーザーおよびそれらを加えられる目的の取得所有権たいと思った
既にシステムで。最後に私が記録を削除すれば、削除される救うことを推薦する
別のテーブルの記録か。 それは一般的な方法であるか。
それの私の取得はここにある:
決して記録を削除することは主にFDAの承認のために竸う金融業界およびある製薬会社で続かれる練習ではない。 財政をまたは取扱うか、時はいつでも他の感知可能データそれはそれをこのようにアーカイブする悪い考えではない。 そのようなデータを管理することは適度に容易である。 まれであるそのようなデータがほしいと思うときだけただされる1つ以上の二次データベースに周期的に印が付いている記録を削除されて動かすことができる。 従ってそれは削除された記録をただすより遅い応答時間を過すことは良い。
こうすればはあなたの第一次データベースの残物の傾き絶食し。
今日第3必要性は社会的なネットワーキングおよびコミュニティ場所に現れている(決して記録を削除するために)。 多くの場合テロリストネットワーク(Yahooのグループでように)またはドラッグ・ディーラーは地理的に分散メンバーと伝達し合うのに(Orkutでように)そのような場所を使用する。 コミュニケーションデータをアーカイブすることは後でそれらを見つけ出すことの捜査当局を助けるかもしれない。 flipsideは同じ権限によって正常な市民の私生活にテコで動くのに乱用することができることである。 しかしそれは別の日の物語である
>私は削除されればメンバーを削除するように誘惑される。 私は誘惑される
削除されれば内容を削除するため。 私は去るように誘惑される
内容自体がなければ前のメンバーからの内容
私が準を逃している内容を推測するけれども、不適当
メンバーの記録はちょっと孤児である。 (私はちょうど大声で考えている
ここに)。
私は内容等あなたがこれらの記録から得ることができる摩擦(場所を去るか、または削除されている人々)の率をそのうちに見つけることのような付加的な価値を見ることができる。 全面的孤児の記録上の頭痛の多くを減らすまたはRoRはそれによって決まることを参考用の完全性問題は(私が考えないけれども)道をおろす。 それがあるのでハードウェアはこのごろ安い。
従って私は要約するために考える:
そこのa.は削除された記録を単に保つことおよび削除されるように印を付けることの複数の利点である
そこのb.は二次データベースに常に周期的にそれらを移動できるようにあなたの場所が次のMySpaceになっても頭上にそのような決定と関連付けられる多くの費用または性能ではない。
ほとんどのsqlの問い合わせは記録を単に捜す削除された分野セットがない。 削除された記録を含む問い合わせのために二次データベースを使用することにすれば第一次データベースを見、次に二次削除された記録データベースを見なければ最初にならない。
> 「印が付いている記録との独特な主衝突のように削除した」。
それは問題ではない。 重負荷を期待すれば索引のために長い整数を使用したいと思う場合もある。 正常な符号なし整数は4GBだけ与える。
私が記録を削除すれば、>最終的に別のテーブルの削除された記録を救うことを推薦するか。 それは一般的な方法であるか。
削除されるようにそれらに単に印を付ければ別のデータベースに単に周期的にそれらを動かすことができる。 私はより多くの混乱を作成するために本当らしい別のテーブルにそれらを同様に動かすことを提案しなかったし、多くのwrt助けない。 性能。 それは削除された記録を除けばへ適度に一般的な方法である。 私はそのようなシステムを使用した。 私はそれらが(印は削除されるようにそれらを記録する)より多くの問題を解決することがより彼ら結局は作成する分ることを考える。
私に何あるこの問題のあなたの取得が、私のブログの読者、知らせなさいか。
、 ヘッドラインニュース、 いかにに、 RDBMSデータベースの下で ファイルされるの 網、 網サービス |
|
RSS 2.0 |
Trackback この記事 |
この記事に電子メールを送りなさい
また読むのを好むかもしれない |


Technoratiの好みに加えなさい


































2006年11月9日11:21 AMの
これのもう一つの面があり、それは種類の同時性を可能にするために本当らしければどんな記録が削除されたか知る必要があることである。 「あり」削除され、データベースで「逃す」に大きい相違が。
いくつかの方法でこれをしかし解決できる。 削除されたIDを用いる別のテーブル: sは行なうことが可能である。 それは行く方法削除されるか、または作成されるの比率の依存する。
喝采、
ミカエルGrev
2006年11月9日5:11 pmの
こんにちは、
私は同じような問題に直面している、従って私はあなたの記事、thxを見つけて非常に幸せである。
削除される「として」印との私の問題は記事で述べられる、私はあなたの答えを理解しない独特な主抑制であり。 ネームフィールドのuqのキーの人のテーブルがあれば、私が(印)ピーターと名前を挙げられる人を削除した後私は同じ名前、権利の新しい人を加えることができないか。
私はこれが私へよい考えのようである二次dbによって解決することができることを考える。 しかし私はこれが別の問題を上げることを考える-私はいかに実体間の関係を管理してもいいか。
私は私はほしいと思う実体(a)持っていれば(私が削除したいと思わない)への参照を別の実体(b)、もし私が二次データベースに救えばBを削除すれば意味するか。 または私が二次データベースからAの実体に荷を積むとき私はこの関係を削除し、appcodeで再度造るべきであるか。
極度な状態では非常に複雑な目的地図を描くことおよび関係を有するとき、最初の場合は第一次dbとほとんど同じである二次dbをもたらす場合がある。
どう思いますか。
Thx、
Ivan
2006年11月9日8:52 pmの
@Mikael
呼ばれる削除されるデフォルトで偽の分野が単にある。 記録は削除されるとき、本当ように印が付いている。 あなたがしなければならないそうのはである本当削除されてすべての記録を取って来ることだけである。
2006年11月9日8:56 pmの
@Ivan
私が(印)ピーターと名前を挙げられる人を削除した後ネームフィールドのuqのキーの人のテーブルがあれば>、そして私は同じ名前、権利の新しい人を加えることができないか。
通常それは私の物珍しい名前の名前を使用して独特なIDは私同一の名前のの多くに会ったのでない、解決する。
どのテーブルでも第一次(およびそれ故に独特な)キーべきであるID分野があるべきである。 これはあなたがきれいに提起した問題を解決する。
2006年11月10日4:07 AMの
こんにちは、
私がこれが問題の人がよい例でなかったら独特なキーを持たなければはい、正しく。 しかし金融商品、保証について考えなさい。
それらは基本キーを有する同時に同じ名前またはISINコードの2つの保証を有することができない。 それらは独特でなければならない。 (多分これは削除された印が整数なら解決することができる: mark=0のそれからそれが削除されなければ、印! = 0のそれは削除される。 従って削除される実体に印を付ければ印を=最高の(印) + 1.置いた。 それから(名前、印)。独特なキーを置くことができる)。
より一般的で私は削除されるように印とのトレードオフを見る。 私はある特定のデータベースの特徴(独特な、外国の主抑制)に頼ることができないことを意味する。 例えばA間の関係多くのに1 aがおよびBあれば、および私がBを削除することを試みればそしてデータベースfkの抑制は許可しないそれを。 反対側で私は問題なく削除されるようにそれに印を付けても後で削除されたB.への参照とAに荷を積んでもいい。 私は私によって書かれているには余りに削除されるAの実体に印を付ければこれはなるこれが解決することができることをことを確かめる。 そして最終的にあなたのコードはより少なくテストされるdbコードより多くの「db論理」のコードを含んでいる。
私は非常に混同している… 私は簡単、同時に金庫であるよい解決を捜している。
thx、Ivan
2006年11月10日8:20 AMの
一般に非削除された記入項目のために独特の必要がある分野を有することができる場合がある。 次にその場合でそれは非固有およびアプリケーションコードで扱われる論理として印が付いているべきである。 これは複雑さに容易に見ることができるように多くを加えない。
これはほとんどの現代ormの層かフレームワーク(柵のルビーのようにまたは冬眠しなさい)自身がデータベースの機能性の多くを扱うことを好むので問題の多くではない。