bitrix-best-practice-sql について
bitrix-best-practice-sql は、Bitrix のデータベースを扱う開発者向けのスキルです。SQL の実行、ORM のクエリと書き込み、エンティティマッピング、トランザクションに関するルールを選び、Bitrix 標準のデータ処理パターンを案内します。
主な機能
- 01データベース関連タスクに特化
- 02DB の課題に応じたルール選択
- 03SQL 実行と安全な構築をカバー
- 04ORM マッピング、クエリ、書き込みをカバー
- 05トランザクションの実践を説明
活用シーン
- 01ORM クエリまたは DB 書き込みの実装
- 02スキーマ変更やデータ移行の計画
- 03複数操作にまたがるトランザクション境界の処理
- 04SQL クエリとインデックス性能の評価
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ bitrix-tools/ best-practice --skill bitrix-best-practice-sqlインストール後、Claude Code で/bitrix-best-practice-sqlを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
rules/orm-datamanager-map.mdorm-objectify.mdorm-persistence-write.mdorm-query-filter.mdquery-execution.mdtransactions.md詳細
Bitrix のベストプラクティス SQL
このスキルは、どの SQL/DB のベストプラクティスを使用すべきかを理解するのに役立ちます。 データベースを扱うタスク、つまりスキーマ、SQL クエリ、ORM モデル、データ取得、書き込み、データ移行、インデックス、トランザクション、その他の DB 境界に関する判断にのみ使用してください。
使用方法
- タスクが本当に SQL、ORM、またはデータの保存に関係するかどうかを確認します。
- タスクの具体的な DB 領域(読み取り、書き込み、スキーマ、移行、パフォーマンス、一貫性、クエリのセキュリティ)を特定します。
- その DB 領域に直接関係するルールファイルのみを開きます。
- まず、リポジトリのより厳格なルールとモジュールの制約に従います。
- 独自の SQL やストレージの抽象化ではなく、フレームワークネイティブおよび Bitrix ネイティブのデータ操作パターンを優先します。
ルールファイルの選択
query-execution.md を読む場合
次のいずれかにタスクが関係する場合は、query-execution.md を読みます。
Bitrix\Main\Application::getConnection()、Bitrix\Main\DB\Connection、またはgetSqlHelper();query()、queryScalar()、queryExecute()、add()、addMulti()、またはBitrix\Main\DB\Result;Bitrix\Main\DB\SqlExpression、プレースホルダー?s、?i、?f、?#、?@、または複数の要素からの SQL の手動組み立て;SqlHelper::quote()、forSql()、prepareInsert()、prepareUpdate()、convertToDb*()、またはgetTopSql();- レガシー
$DB/CDatabaseから D7 DB API への置き換え; Connection経由の raw SQL と、より高水準なフレームワークネイティブの DB 経路の選択。
orm-datamanager-map.md を読む場合
次のいずれかにタスクが関係する場合は、orm-datamanager-map.md を読みます。
*Table extends Bitrix\Main\ORM\Data\DataManagerクラス;getTableName()、getConnectionName()、getMap()、getUfId()、postInitialize()、またはsetDefaultScope();- レガシーの配列マップではなく、
Bitrix\Main\ORM\Fields\Fieldとその派生クラスを使ったフィールド定義; - エンティティ宣言レベルでの
Reference、OneToMany、ManyToMany、configureJoinType()、configureCascade*Policy(); - エンティティマップ内の主キー、自動補完、バリデーター、保存/取得モディファイアー、タイトル、デフォルト値;
- 型付きフィールドオブジェクトと、
getMap()内の従来の配列の選択。
orm-objectify.md を読む場合
次のいずれかにタスクが関係する場合は、orm-objectify.md を読みます。
Bitrix\Main\ORM\Objectify\EntityObject、Collection、createObject()、createCollection()、wakeUpObject()、またはwakeUpCollection();get()、require()、remindActual()、fill()、isFilled()、isChanged()、collectValues();addTo()、removeFrom()、removeAll()、またはコレクションのライフサイクルによるリレーショングラフの操作;Collection::walk()、filter()、find()、merge()、hasByPrimary()、またはgetByPrimary();- Objectify オブジェクトと結果配列の選択;
- オブジェクトの状態(
RAW、ACTUAL、CHANGED、DELETED)と ORM のメモリー内での動作。
orm-query-filter.md を読む場合
次のいずれかにタスクが関係する場合は、orm-query-filter.md を読みます。
DataManager::query()、getList()、getRow()、getByPrimary()、またはgetCount();Bitrix\Main\ORM\Query\Query、Query::filter()、ConditionTree、where*、having*、logic()、またはネストされたフィルター;fetchObject()、fetchCollection()、fetch()、fetchAll()、およびオブジェクト取得と配列の選択;- ランタイムフィールド、
registerRuntimeField()、Query::expr()、クエリ経路でのExpressionField; buildFilterSql()、disableDataDoubling()、プライベートフィールド、集計/オブジェクト取得の制約;- モダンなクエリビルダーとレガシーのフィルター配列の選択。
orm-persistence-write.md を読むタイミング
タスクが以下のいずれかの領域に関係する場合は、orm-persistence-write.md を読んでください。
DataManager::add()、update()、delete()、addMulti()、updateMulti()、またはオブジェクト/コレクションのsave();DeleteByFilterTrait::deleteByFilter()、MergeTrait::merge()、または低レベルの ORM 書き込みヘルパー;Bitrix\Main\ORM\Data\AddStrategy、InsertIgnore、Merge、MergeByDefaultTrait、InsertIgnoreByDefaultTrait、AddMergeTrait、またはAddInsertIgnoreTrait;- 通常の ORM 書き込み、バッチ操作、merge/upsert、delete-by-filter の選択;
- 書き込み時の ORM イベント、
ignoreEvents、キャッシュのクリーンアップ、バッチ永続化に関する注意点; - ORM ライフサイクルを通じた複数行の一括書き込みまたは更新。
transactions.md を読むタイミング
タスクが以下のいずれかの領域に関係する場合は、transactions.md を読んでください。
Connection::startTransaction()、commitTransaction()、またはrollbackTransaction();- ネストされたトランザクション、セーブポイント、レベルの整合性、または
TransactionException; - 1 つの接続で行う複数の SQL/ORM 操作のコミットとロールバック;
- MySQL、PostgreSQL、MSSQL、Oracle のトランザクション API の違い。
コメント
Markdown 対応