mcpField
B
bitrix-best-practice-sql

bitrix-best-practice-sql

github.com/bitrix-toolsデータ・データベース23191 回インストール2 週間前に更新
リポジトリ

bitrix-best-practice-sql について

bitrix-best-practice-sql は、Bitrix のデータベースを扱う開発者向けのスキルです。SQL の実行、ORM のクエリと書き込み、エンティティマッピング、トランザクションに関するルールを選び、Bitrix 標準のデータ処理パターンを案内します。

主な機能

  1. 01データベース関連タスクに特化
  2. 02DB の課題に応じたルール選択
  3. 03SQL 実行と安全な構築をカバー
  4. 04ORM マッピング、クエリ、書き込みをカバー
  5. 05トランザクションの実践を説明

活用シーン

  1. 01ORM クエリまたは DB 書き込みの実装
  2. 02スキーマ変更やデータ移行の計画
  3. 03複数操作にまたがるトランザクション境界の処理
  4. 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.md
orm-objectify.md
orm-persistence-write.md
orm-query-filter.md
query-execution.md
transactions.md

詳細

Bitrix のベストプラクティス SQL

このスキルは、どの SQL/DB のベストプラクティスを使用すべきかを理解するのに役立ちます。 データベースを扱うタスク、つまりスキーマ、SQL クエリ、ORM モデル、データ取得、書き込み、データ移行、インデックス、トランザクション、その他の DB 境界に関する判断にのみ使用してください。

使用方法

  1. タスクが本当に SQL、ORM、またはデータの保存に関係するかどうかを確認します。
  2. タスクの具体的な DB 領域(読み取り、書き込み、スキーマ、移行、パフォーマンス、一貫性、クエリのセキュリティ)を特定します。
  3. その DB 領域に直接関係するルールファイルのみを開きます。
  4. まず、リポジトリのより厳格なルールとモジュールの制約に従います。
  5. 独自の 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 の違い。

コメント