私は、いくつかのデータ関係を持つiPhoneアプリケーションで作業しています(著者 - >書籍など)。ユーザーがアプリケーションからAuthorオブジェクトを削除すると、Deleteキーで実行されるSQLiteトリガーがいくつか作成され、データベースから、作成者の主キーと一致する外部キーを持つブックが削除されます。コードまたはデータベースで伝播が伝播しましたか?
また、新しいアイテムが作成されたときにデータを挿入するためのトリガーも使用しています。
私はこれが悪いデザインであるかもしれないという気持ちを揺さぶったり、私が考えていない道のりで問題を引き起こしたりすることはできません。それは、データベースがそれを処理するための機能を備えている場合、私はこのような削除を伝播するのを処理する私のアプリのコードに依存する必要がありますか?
あなたは何ですか?
私は同意しません。リレーショナル・インテグリティを保証するためのデータベース・メカニズムがあり、カスケード削除のように適切な場所で使用する必要があります。追加データを挿入するには、それは依存します。アプリ内で実行された場合は、必ず両方のインサートを単一のトランザクションでラップしてください。 – tvanfosson
@tvanfosson:宣言的な参照整合性にはいくつかの価値があります。カスケーディングする削除、トリガー、および何も一般的に手を出せない。彼らが解決するよりも多くの問題を引き起こすように見える。技術的なものもあれば、組織的なものもあります。 –
Decalrative参照整合性には大きな価値があります。これはクエリ・オプティマイザを支援し、データが現実世界の正しい表現であることを保証します。 )データベースのコーディングを学び理解していない場合は、担当者に任せてください; –