問題タブ [lookup-tables]
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.
c++ - 200 個の文字列が与えられた場合、関係値の LUT をキーにする良い方法は何ですか?
200本の弦を持っています。各文字列には、他のすべての文字列との関係 (0 と 1 の間の浮動小数点数で測定) があります。この関係は双方向です。つまり、関係 A/B == 関係 B/A です。これにより、n(n-1)/2、つまり 19,800 の関係が得られます。
私がやりたいのは、これらのリレーションシップをルックアップ テーブルに格納して、任意の 2 つの単語からリレーションシップの値をすばやく見つけられるようにすることです。
私は c++ を使用しているので、おそらく std::map を使用して LUT を保存します。問題は、この目的に使用するのに最適なキーは何かということです。
キーは一意である必要があり、両方の単語からすばやく計算できる必要があります。
私のアプローチは、単語のペアごとに一意の識別子を作成することです。たとえば、"apple" と "orange" という単語が与えられた場合、それらを "appleorange" (アルファベット順、小さい方から) として結合し、それをキー値として使用します。
これは良い解決策ですか、それとももっと賢い方法を提案できますか? :)
sql - SQL における暗黙の列挙型 (つまり、シンボル)
基本的に列挙値に VARCHAR を使用することがよくあります。それらを別のルックアップ テーブルに抽出し、整数 ID を外部キーとして使用するのが賢明な場合が多いことはわかっていますが、他のテーブルがそれを使用していない場合があり、別の JOIN が必要ないため、それらを保持することを選択しますメインテーブル。
問題は、そのような列をマークし、内部ルックアップ テーブルを使用してスペースを節約し、クエリのパフォーマンスを向上させることができる DB 機能があるかどうかです。Postgres のENUMsに似ていますが、前もって可能な値を明示的に宣言する必要はありません。
たとえば、INSERT を実行したいとします。
複数の行に同じ値が含まれて'pending'
いても、実際の文字列のインスタンスを 1 つだけ保持して、内部的に整数として扱われます'pending'
。
一部のプログラミング言語 (LISP、Ruby) では、同様の機能をシンボルと呼び、事実上「名前付き整数」と呼んでいます。
私は主に Postgres と MySQL に興味がありますが、他のポインタも同様に高く評価されます。
ruby-on-rails - Railsでのルックアップテーブルの実装
私は現在、列挙型文字列を含む列を表すためにルックアップテーブルを使用しています(または使用しようとしています)。私はこれが私たちが行きたい方向であることを確認するために私のチームと広範な議論をし、それを追求することを決定しましたが、残念ながら、移行を使用してルックアップテーブルを列に結び付ける方法と変更があるかどうかを知っている人は誰もいませんこの新しい動作をサポートするために、モデル/コントローラー/ビューで作成されます。
私はこれを広範囲にグーグルで検索しましたが、これを行う良い例を見つけられなかったので、誰かが私の検索で見逃したチュートリアルへの素晴らしいリンクを教えてくれるか、これを行う方法を説明してくれることを願っています。また、これに非公式(または公式)のRailsyパターンがあるかどうかも知りたいです。
前もって感謝します。
core-data - Core Data のルックアップ テーブル
コア データはデータベースではないため、コア データでルックアップ テーブルを作成、管理、または実装する方法について混乱しています。
これは、私のプロジェクトに関連する特定の例です。
スタッフ (1) -> (多数) タレント (1)
talents
テーブルは次のもので構成されます。
TalentSkillName (文字列)
TalentSkillLevel (整数)
しかし、入力し続けたくないTalentSkillName
ので、この情報を別の別のテーブル/エンティティに入れたいと思います。
しかし、コア データは実際にはデータベースではないため、リレーションシップがどのように見えるべきか、さらにはルックアップ テーブルをコア データに格納する必要があるかどうかについて、私は混乱しています。
私が考えている 1 つの解決策は、すべての TalentSkillNames の PLIST を使用してから、Talents エンティティで PLIST バージョンを指す数値を単純に持つことです。
ありがとう。
私はあなたが意図していることだと私が信じている図を追加しましたが、これが正しいかどうかはわかりません.
algorithm - LUT (ルックアップ テーブル) を反転する
私はいくつかのカラー管理コードを書いており、LUT (ルックアップ テーブル) を扱っています。
カラー プロファイル LUT を読み取って値を変換することはできますが、逆の操作を行うにはどうすればよいですか? たぶん、LUT の「逆」を生成するための良いアルゴリズムはありますか?
sql - ルックアップテーブルでコードを使用する必要があります
Orableデータベースで目覚め、ルックアップテーブルをいくつか追加しています。
一般的な質問は、ルックアップテーブルにコードと説明が含まれ、コードがメインテーブルに戻るFKであるか、ルックアップテーブルに説明のみが含まれ、メインテーブルに戻るFKであるかです。
私はコード/説明のペアについて議論しています。私が持っていtype = Contractor
てcode = CN
、ストアドプロシージャがある場合は、コードwhere type='CN'
がなく、ストアドプロシージャでこれを言うのではなく、次のように言う必要があると思います。次に、ストアドプロシージャを変更する必要があります。私はこれをする必要はないと感じています。(ストアドプロシージャの変更には、開発での再コンパイル、テストへの移行、クライアントによる再テスト、および2週間の待機期間を伴う変更管理プロセスを経る必要がある製品の移行が必要です。一方、テーブルのレコードの変更には、これの)type=Contractor
where type='Contractor'
General Contractor
Contractor
私のデータモデラーは説明だけを使用したいと思っています。彼の主な議論は、それは不必要な参加を必要とするだろうということです。
どちらの方法で行う必要がありますか?そして、もしコード/記述の方法で行われるべきなら、どうすればデータモデラーを説得できますか?
ありがとう!
asp.net-mvc - DropDownListアイテムをモデルの一部にする必要がありますか?
私が苦労しているのは、もっと哲学的に、DropDownListアイテム(または実際にはあらゆる種類の選択リストアイテム)をモデルの一部にするべきか、それともUIまたはビジネスレイヤーにハードコーディングするべきかということです。それとも、これはViewModelの良い使い方ですか?
ドロップダウンリストの種類によっては、明らかにそれらをモデルの一部にする必要があります。たとえば、顧客に関連付けられている注文IDのドロップダウンリストは、モデルによって生成される必要があります。
私が「ルックアップ」データと呼ぶ他の種類は、私にはあまり明確ではありません。たとえば、性別。フィールドに2つのアイテムを入力するために、ラウンドトリップルックアップを強制するのはなぜですか?おそらくこれは時期尚早の最適化ですが、50個のフィールドがある場合、1ページに入力するだけで多くのラウンドトリップになります。確かに、キャッシュはそこで役立つかもしれませんが、それは厄介なようです。
また、これらすべてのルックアップリストをモデルに追加すると、モデルが不必要に乱雑になるのではないかと心配しています。特にあなたがそれらをたくさん持っているなら。
UIでハードコーディングするのではなく、ビジネスレイヤーでハードコーディングするオプションもあります。おそらく、このデータを入力するだけのクラスを作成することさえあります。
答えが「データモデル」の一部である場合でも、データモデルにルックアップフィールドのセットごとに異なるテーブルを設定する必要があるかどうかという問題があります。データモデルにそのようなフィールドが200または300ある場合、それは200または300のテーブルであり、データモデルの保守が実際に複雑になります。
しばらく前に共通のルックアップテーブルを使用することについて質問しましたが、これは悪い考えであるというコンセンサスがありました。しかし、フィールドがたくさんある非常にデータ量の多いアプリケーションの場合、私は自分自身に疑問を感じます。
さて、多くの方が「状況次第」とおっしゃる方もいらっしゃると思いますが、私は「一般的な」答えを見ています。一般的に、ここでの経験則は何ですか?
c++ - コンパイル時定数配列をどこに置くか?
次のように、最初の 10 個の素数を格納する配列があるとします。
1 つの .cpp ファイルがある限り、これはすべて非常に問題なくシンプルです。ただし、複数の .cpp ファイルがある場合、この配列をどこに配置すればよいかわかりません。
明らかな解決策は次のとおりです。
ただし、これの問題は、素数配列がコンパイル時の定数ではなくなったことです。x.cpp が素数 [k] を含むいくつかの重い計算を実行したいとします。コンパイル時定数は ka で、実際のメモリ ルックアップを実行する必要があります。私はそれが好きではありません。
では、次のようにこの配列をどこに配置すればよいでしょうか。
- バイナリで 1 回だけです (.cpp ファイルごとに 1 回ではありません)。
- array[SOME_CONSTANT] もコンパイル時の定数です
編集
これはどう?
PS:上記の「明白な解決策」でさえ、書くのにかなりの時間がかかりました。どうやら const 変数にはデフォルトで内部リンクがあるようです。そのため、「extern」を primes.cpp ファイルに追加して機能させる必要がありました。
database - Access/SQL でルックアップ テーブルを使用してペアの値を一致させる
これは悪夢かもしれません。
2 つの異なるテーブルに 2 行のデータがあり、各行にはそれぞれ 1 文字が含まれているとします。A は Row1 で、B は Table1 の Row2 で、Table2 では逆になっています。B は Row1 で、A は Row2 です。
3 つの列を含む 3 番目のテーブルもあります。最初の 2 つは結合される列で、3 番目は最初の 2 列で結合された内容に応じて結果の値になります。
本質的に、私がやろうとしているのは、 Table3 内の関連付けられた値を使用して、 Table1 と Table2 から最高評価のペアを見つけようとすることです。
Table1+2 の A が一致し、Table1+2 の B が一致するためです。代わりに、目的もなくテーブルを結合するだけで、代わりに次のようになることを忘れていました。
ただし、可能なすべてのペアを取得していますが、うまくいきません。ここでの問題は、たとえば、Table1 内の値が Table2 と一致しない可能性があるため、Table1+2 の間で直接 JOIN を実行できないことです...
Table1 の Row1 と Row2 は A、B で、Table2 の Row1 と Row2 は B、C です。直接 JOIN を実行すると、値 A と C は互いに一致せず、B のペアだけが残ります。
しかし、これにはもう1つの問題があると思いました。サブクエリを使用しようとすると、サブクエリが常に再実行されます...つまり、以前に選択された行が次回再び取得されるため、値が正しくなくなります。
たとえば、A、B および B、C を使用すると、サブクエリを介してこれが返されることが期待されます。
もちろん、行が再び使用されることを失格にする方法がない限り. 提案やアイデアはありますか?私は Access を使用していますが、その概念はどのデータベース ソリューションにも当てはまると確信しています。
java - テーブル内の一意の文字列を検索する Hibernate の簡単な方法
一連の一意の文字列を含むテーブルがあり、(メモリ キャッシュのほかに) クイック ルックアップを提供する必要があります。
最初はstringId
変数を として持っていましたが、文字列 ID でオブジェクトを取得するときに@Id
一部のデータベース (oracle など) が入ったことが判明しました。full table scan
したがって、代わりにロングに切り替えました。
UniqueString
string からオブジェクトにすばやくアクセスするにはどうすればよいですかstringId
。これまでのところ、2 つの解決策があります。
- 繰り返しますが、注釈
stringId
を付けて、一部のデータベースで発生@id
する理由の修正を見つけてくださいfull table scans
- 文字列を
long
(精度を落としながら) にハッシュし、ルックアップ テーブルを使用してハッシュに一致するすべてのオブジェクトを返し、それらのstringId
プロパティを比較して等しいかどうかを調べ、探している一致を見つけます。
.
ご意見、ご提案は?
[編集]わかりました、上の表の図は単純に正規化できることに気付きました
次のクエリの両方がほぼ同じように実行されると思われるため、これによりすべての違いが生じます。
from UniqueString where hash='123'
from UniqueString where stringId='abc'