2011-01-01 3 views
0

私はServer Side JavaScriptを使用しています - はい、実際にはServer Side JavaScriptを使用しています。さらに複雑なものを作成するために、Oracleをバックエンド・データベース(10g)として使用します。いくつかの狂ったXSLTと突然変異体のようなHTML生成で、私は本当に派手なWebフォームを構築することができます - はい、私はRailsや他の同様のフレームワークを認識しており、代わりに恐怖の道を選びます。私は、JQueryやその他の素晴らしいフレームワークを私の処分で持っていません。Mozilla Rhinoという基盤エンジンでサポートされるはずのJavaScriptです。はい、それは非常識で、私はそれを愛しています。SQLとJavaScriptを使用するユーザー設定

私は自由にテーブルを用意していますが、その中には値にリンクする連想キーがあります。私が人々を喜ばせるように、私はいくつか気の利いたユーザー優先設定のソリューションを追加したいと考えています。

ユーザーはすべて一意のuser_idを持ち、このuser_idはセッション全体で使用できます。

私の最初のアイデアは、user_id、feature、およびpref_stringの3つの列を持つユーザー設定テーブルを用意することです。 :や - (まだ適切なものは考えていない)のようなデリミタを使うと、リストとして好みの束を保存し、その要素を.split-methodを使って配列の中に格納することができます。 -explode関数)。フィーチャーの列は、テーブル名やフィーチャーの識別子のようなものでも構いません。オブジェクトをハードコーディングするのは嫌いです。特にこれらをバックアップして、この機能をアプリケーション全体で再利用できるようにしたいと思っています。もちろん、私はより良いアイデアが大好きです。ただライブラリを簡単に追加することはできません。

これらの設定はテーブルに「結合」されている可能性があるため、クエリを実行してその値を使用できます。

私はそれがあまりにも複雑に聞こえないことを願っています。なぜなら、その基本的には本当に簡単なものです。

ありがとうございます!

EDIT

は、私は現在、10の動的な値を持つドロップダウンボックスを、記入したいとしましょう。 私は、単純なselect文を使用して、データベースからこれらを得るでしょう:

SELECT pet, value FROM pets 

それは以下のようなテーブルを返します:

dog 1 
cat 2 
fish 3 

私はドロップダウンボックスの内側にこれを入力します。ただし、user_id 100のように哺乳類(犬、猫)のみが表示され、user_id 200には海の生き物(魚)のみが表示されるように、そのテーブルに設定を追加することができます。テーブルが世界のすべての生き物を持っていると想像してみてください。私はそのような好みを必要とするたくさんのテーブルを持っています。

私は無制限のユーザーを持つことができるため、何らかの形のメタデータを適用する必要があります。これを行うソリューションは、私が探しているものです。

+0

あなたの設定テーブルには、「プリファレンスタイプ」の列もあるはずです。いくつかのプリファレンスはシンプルブーリアンであり、他のものは日付、整数、または文字列です。また、好みのUIをいくらか自動化できるように、他のインジケータを含めることもできます。新しいUIごとに独自のUIコーディングを必要とするメンテナンスの問題があります。 – Pointy

+0

ああ、あなたがここで求めていることはまったく明らかではありません。現在のソリューションに何か問題がありますか? – Pointy

+0

私は好みが軽く取られるべきではないことを知っています。しかし、私はむしろ、少なくとも「嗜好」を持つことができるモデルに着手しています。初期値または目に見えるアイテムのようなものです。後者はブール型を使用することができます。 – Shyam

答えて

2

それはか(私は思うが少し狂っているん)フレームワークのあなたの不足(私はないと思うが狂った選択をするん)サーバサイドJavaScriptとは何の関係もないようにこれが聞こえます。これは、データベースとテーブルの設計を中心にしています。

テーブルから値のリストを分類する方法は、状況によって異なります。たとえば、記述したとおりのデータを持つPETS表があるとします。次に、PET_ATTRIBUTE_LISTテーブルがあります。このテーブルには、PETSが持つ可能性のあるデータが含まれています。最後に、これらの2つをリンクするPET_ATTRIBUTEテーブルを持つことができます。そうすることで、属性(魚、哺乳類、脊椎動物など)が1つのテーブルにあり、ペット(犬、猫、ベータなど)が別のテーブルにあり、任意の属性セットがペットにリンクできます。

ユーザーにとって重要なオプションのみを表示するには、テーブルを保持するユーザーとPET_ATTRIBUTE_LISTテーブルの間でレコードをリンクするUSER_PET_ATTRIBUTEテーブルが必要です。

このメソッドを使用する多対多リレーションシップは多数ありますが、おそらく最も柔軟性があります。

+0

もちろん、私は同意します。ただし、データベースのデータはJavaScript変数内にロードされます。そのユーザーのために具体的な結果を得るためのビューを生成することができました。そのような属性リストの参考資料(例、ベストプラクティス)はありますか? – Shyam

+0

右のように、データベース/バックエンド側でデータを重く持ち上げたいとします。データがフロントエンドに送信される前に、フィルタリングを実行するビューまたはストアドプロシージャを実行できます。あなたが好むものは本当に好きですが、私はrefカーソルを使ってパッケージ/プロシージャ/関数に物事を保持するのが好きです。 –

0

「フレームワークを使用しない」というあなたの考えを再考すべきだと思います。 Helma/Ringoは、Rhinoをベースにした、完成した実績のあるサーバーサイドのJavaScriptフレームワークです。抽象レイヤーは、javascriptオブジェクトをリレーショナル・データベース(jdbc接続)にマップするだけでなく、ユーザー・オブジェクトおよびプリファレンスのための簡単なメソッドをすでに提供しています。

+0

フレームワークを追加する前にまずいくつかの概念を理解することを検討します。私は抽象が大好きです。私は醜い部分も大好きです。私は練習で学び、失敗したときに私は発見する。だから、簡単にフレームワークを使うことは、私の問題を技術的に解決するだろう。しかし、私の飢えを満たすことはできません。 – Shyam

関連する問題