問題タブ [database-abstraction]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
45 参照

php - 関連のない複数のクラスでクラス属性を再作成する必要があることがわかりました。私の方法論は間違っていますか?

3つのクラスがあるとしましょう:

ユーザー

建物

これらにはそれぞれ関連するプロパティがあります。例えば

ユーザーは名前、年齢、電子メールを持っています
建物は年齢、部屋、fire_alarmを持っています
はブランド、座席、トップスピードを持っています

ユーザーと建物、ユーザーと車の関係を格納するデータベースがあるとします。

私のBuildingクラスでは、save_buildingメソッドにはuser_idが必要です。

ここで 2 つの選択肢があります。

1) Buildingクラスでuser_idプロパティを再作成するか(冗長で壊れやすいため、 Carクラスでも複製する必要があります)、または2)ユーザー オブジェクトを直接参照してuser_idを取得することができます。

これらはどちらも「正しい」ようには見えません。

属性を設定するときは、それらも検証し、それらの検証のエラーをオブジェクト自体に保存します。オプション2を使用すると、作業中のオブジェクトをチェックするだけでなく、save_building メソッドを続行できるようにする前に、他のオブジェクトのエラーをチェックする必要があります。

オプション1は正しい方法ですか、それともオプション2ですか?

編集:わかりやすくするために、データベース関係テーブルは次のとおりです。

user_buildings: user_id, building_id
user_cars: user_id, car_id

Edit2: 質問を非公開にします。

0 投票する
1 に答える
1345 参照

sqlite - モデルを使用してチタンでデータベーステーブルを作成する方法は?

チタンで Db テーブルを作成するには、以下の 2 つの方法があります。

アプローチ 1 -- チタン コードのクエリを使用して、sqlite データベースを作成します。Ti.Database.open("DBName"); のように 次に、sqlite クエリを使用してテーブルを作成します

その正常に動作します。

しかし、モデルを使用してテーブルを作成する方法を知る必要があります

アプローチ 2 -- データベースを作成する Ti.Database.open("DBName");

モデル book.js を作成します。コードは次のとおりです。

今、モデルを使用してテーブルを作成することに少し混乱しています。

テーブルの作成を手伝ってください。

0 投票する
0 に答える
122 参照

php - Php Phalcon の派生クラス

私はphp phalconと言語自体にかなり慣れていません。抽象クラスと派生クラスを含む Web サイトを作成しています。

抽象クラス:

派生クラス

私のコントローラーでは、ビュー内のフォームからデータを読み取っています。クラス UserPatients のオブジェクトが宣言され、そのデータ メンバーが設定されます。コントローラーの PatientSignInController で呼び出しているアクション メソッドは次のとおりです。

データベースの構造はこれらのクラスと同じUsers_Abstractです。抽象クラスのすべての属性を持つテーブルUser_Patientsと、子クラスのすべての属性を持つテーブルがあります。

ビューでフォームの保存ボタンを押してデータベース テーブルを確認すると、新しいエントリがpatient_infoテーブルに追加されていることがわかりました。これは、が機能していることを意味し$patient_medical_info->save()ます。

ただし、テーブルは関連するデータを取得しますがusers_abstract、テーブルには対応するオブジェクトの新しいデータは含まれませんuser_patients。save メソッドのエラー メッセージを確認しましたが、何も返されませんでした。オンラインで何も見つからないようです。私を助けてください。

12 個の属性すべてを持つ 1 つのテーブルをクラスUsersAbstractUser_Patients. それでもうまくいきません。

0 投票する
0 に答える
108 参照

php - phpを使ったdb抽象化レイヤーの作成

単純なデータベース抽象化レイヤーを作成しようとしています。Active Record と Table Data Gateway に関する記事をたくさん読みましたが、今は非常に混乱しています。

それらについてのいくつかの理論(小さな)は理解していると思いますが、それらを正確に実装する方法はわかりません。Data Table Gateway を実装することにしました。私がしたことを説明しようと思います。アドバイスをいただければ幸いです。モデルで DI のようなテーブル データ ゲートウェイを使用する必要があるたびに (たとえば、ZF2 で) 理由がわかりません。

私の場合、AbstractModel は IoC コンテナーによってコンストリクターで DbAdapter を取得するだけですが、これで問題ないかどうかはわかりません。わかりました、私の状況を説明します。私は次のクラスを持っています:

  • DbAdapter -> db 接続を作成します (PDO を使用)
  • IoC (制御コンテナーの反転)
  • AbstractModel -> コンストラクターで IoC を使用して DbAdapter を取得します。これは、DbAdapter のインスタンスを 1 つだけ保持することを意味します。このクラスには CRUD メソッドもあります。
  • 別のクラスは、db のテーブルを表します。たとえば、クラス User は AbstractModel を拡張し、テーブルの名前を返すメソッド getTable を持っています。別の SQL クエリは、テーブルを表すこのクラスにあります。これらのクラスは DbAdapter にアクセスできます。

このスキームは問題ありませんか?どうすれば改善できますか?

0 投票する
1 に答える
329 参照

jdbc - JDBC と抽象化レイヤー

社内の多くの人がアクセスできるように、JDBC プロトコルを使用してデータベースへのアクセスを開きたいと考えています。

JDBC 接続文字列は、jdbc:sqlserver://[serverName[\instanceName][:portNumber] のようになります。

クライアントとサーバーの間に抽象化の層を設ける方法があるかどうか疑問に思っています。説明させてください...

たとえば、REST サービスを使用して、https://servername/path/to/resource/123のような URL を使用するよう人々に指示できます。これをhttps://my-server/my-pathに URL 書き換えできます。 /resource?id=123 . 実装、場所、複雑さはユーザーから隠され、何でも透過的に変更できます。

JDBC でできる同様のことはありますか? たとえば、 jdbc://[serverName[\instanceName][:portNumber] を jdbc:sqlserver://[my--server[\my-instance][:my-port] にリダイレクトできますか?

ご協力いただきありがとうございます !