0

私はケーキにあまり詳しくありません..だからここに私の質問があります..私たちはmysqlでアプリを開発していますが、最終的にはmssqlまたはoracleに展開する必要があるかもしれません. 主キーで奇妙な問題が発生しないようにするにはどうすればよいでしょうか? mysql では AUTO INCREMENT 列ですが、オラクルの IIRC ではシーケンスを使用する必要があります...これを透過的に変更する方法はありますか? 私はそれを考えすぎていますか?

Cakephp アプリでデータベース ベンダーを切り替えた経験のある人はいますか? 注意すべきポイントや注意事項はありますか?

4

3 に答える 3

1

Cake データベース構成ファイルで、ドライバーを選択します ( http://book.cakephp.org/view/40/Database-Configurationを参照)。次に、PK (MySQL を使用している場合は A_I 列にもなります) を fieldname で設定するとid、Cake は auto_increment 挿入を自動的に処理します。Cake は Oracle のようなもので A_I 列を処理すると思います (NB: Cake を他のもので試したことはありません)。

Cake は独自の DB 抽象化レイヤーを使用しますが、含まれる抽象化はかなりの部分をカバーし、指定どおりに動作します (つまり、自動インクリメントを処理します)。

要するに、あなたはおそらく考え過ぎです。そうは言っても、小さなケーキアプリをモックアップしてから、その背後にあるデータベースを切り替えてみます (データベース構成を変更すると、アプリが自動的に切り替えられるはずです)。

HTH、トラヴィス

于 2009-03-02T20:16:32.937 に答える
1

次のプラクティスは私にとって非常に効果的です

Cake スキーマを使用します (モデルのグループごとに 1 つのスキーマ ファイルを設定する傾向があります。IE ユーザー、ロール、プロファイルはすべて 1 つの UsersSchema ファイルに含まれる場合があります)。

また、debuggable.com FixturesShell の使用も見てください。これにより、テスト ケース フィクスチャをライブ データベースにインポートできます。スキーマ ファイルからユーザーとロールの初期グループを設定するのに最適です。

また、'id' フィールドを INT(#) ではなく VARCHAR(36) に設定すると、ケーキは自動的に UUID スタイルの ID を使用します。これは、データを別のアプリケーションまたはサーバーに移動する必要がある場合に、ID 値の衝突が発生する可能性が FAR FAR 低くなることを意味します。

フィクスチャ シェルには、UUID を生成するためのコマンド ライン ツールもあります (挿入などのためにフィクスチャの $records 変数に追加できます)。

要約すると、CakeSchema スキーマ シェル、debuggable.com のフィクスチャ シェル、および ID の UUID 値を使用すると、移植可能な構造作成ツール、移植可能なデータ挿入ツール、および移植可能な ID フィールド形式が得られます。

http://github.com/felixge/debuggable-scraps/tree/fd0e5ad625cb21f5ba16e6b186821a5774089ac7/cakephp/shells/fixtures

http://api.cakephp.org/class/schema-shell

于 2009-03-04T01:05:20.440 に答える
0

DB を管理するには、「ケーキ スキーマ」を使用する必要があります。これにより、データベースを作成するときに DB 固有のものをすべて処理します。

http://book.cakephp.org/view/735/Generating-and-using-Schema-files

于 2009-03-03T17:41:33.610 に答える