私はCassandraを重度の非正規化で使用しているため、オブジェクトのすべてのタイプに変更が必要なテーブルの独自のリストがあるため、オブジェクトを削除/追加/更新/などするためにある種のユニバーサルクラスを使用することはできません。
たとえば、削除するUser
には、1 つだけでなく 3 つのテーブルに触れる必要があります。削除するItem
には、7 つのテーブルなどに触れる必要があります。これは、オブジェクトの種類によってロジックがまったく異なることを意味します。
シナリオ 1
ユーザー クラスには、必要なフィールド (ID、名前など) と、ユーザーの検索、ユーザーの削除などの静的関数のみが含まれています。
<?php
class User {
private $id;
private $name;
// Magic getters and setters removed to save space here
public static function delete($id) {
// find user by id
// delete that user
}
}
シナリオ 2
ユーザークラスにはすべてがあります-フィールド(ID、名前など)と、その特定のユーザーを削除/編集/作成/などする関数も含まれます
<?php
class User {
private $id;
private $name;
// Magic getters and setters removed to save space here
public function delete() {
// find user by $this->id
// delete that user
}
}
どちらのシナリオが優れていますか?これを行うには、さらに優れた方法が他にあるでしょうか?