問題タブ [entity-attribute-value]
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.
sql-server - 3NF モデルが EAV に対してどのように見えるかを視覚化するのに役立つモデリング ツールはありますか?
第 3 正規形の論理モデルを EAV に基づく物理モデルにマッピングできる、低コストのリレーショナル モデリング ツールを見つけたいと考えています。ヒントはありますか?
relational-database - (データベース設計 - 製品属性): 製品属性データベース設計のためのより良いオプションは何ですか?
データベース設計は初めてです。cms の製品属性データベース設計のより良いオプションは何ですか?(他のオプションも提案してください)。
オプション 1: 1 テーブル
オプション 2: 3 つのテーブル
sql-server - DB 設計パターン - 多対多の分類 / 分類されたタグ付け
求人情報を格納する既存のデータベース設計があります。
"Vacancy" テーブルには、"役職"、"説明"、"給与範囲" など、すべてのクライアントに共通する多数の固定フィールドがあります。
「マネージャー名」、「勤務時間」など、クライアントが自分で設定できる「カスタム」フィールドの EAV デザインがあります。フィールド名は「ClientText」テーブルに保存され、データは VacancyId、ClientTextId、および Value とともに「VacancyClientText」テーブルに保存されます。
最後に、欠員がいる場所/オフィス、必要なスキルのリストなどで、欠員をカスタムタグ付け/分類するための多対多のEAV設計があります。これは、タグのタイプを一覧表示する「ClientCategory」テーブル、「Locations、Skills」、各カテゴリの有効な値を一覧表示する「ClientCategoryItem」テーブル (例: 「London,Paris,New York,Rome」、「C#、 VB、PHP、パイソン」。最後に、欠員のために選択された各アイテムの VacancyId と ClientCategoryItemId を含む "VacancyClientCategoryItem" テーブルがあります。
クライアントが追加できるカスタム フィールドまたはカスタム カテゴリの数に制限はありません。
現在、既存のシステムと非常によく似た新しいシステムを設計していますが、クライアントが持つことができるカスタム フィールドの数を制限する機能があり、ゼロから構築されているため、対処するレガシーの問題はありません。
カスタム フィールドの場合、私のソリューションは単純です。Vacancy テーブルに CustomField1-5 という名前の 5 つの追加の列があります。これにより、EAV デザインの 1 つが削除されます。
私が苦労しているのは、タグ付け/カテゴライズのデザインです。クライアントのタグのカテゴリ/タイプを 5 つに制限するとします。可能な値「CustomCategoryItems1-5」をリストする 5 つのテーブルを作成し、さらに多対多のテーブル「VacancyCustomCategoryItem1-5」を 5 つ作成する必要があります。
これにより、10 個のテーブルが既存のシステムの 3 つのテーブルと同じストレージを実行することになります。
また、5 つではなく 6 つのカスタム カテゴリが必要であるという点で要件が変更された場合 (非常に禁じられています)、これにより多くのコードが変更されます。
したがって、そのようなデータの保存により適した DB 設計パターンを誰でも提案できます。私は EAV アプローチに固執することに満足していますが、既存のシステムは、そのような設計に関連するすべての通常のパフォーマンスの問題と複雑なクエリに遭遇しました。
アドバイス/提案は大歓迎です。
使用される DBMS システムは SQL Server 2005 ですが、特定のパターンで必要な場合は 2008 もオプションです。
sql - sqlite で変数列名をシミュレートする
エントリ (キー=>値のペアのセット) をデータベースに保存したいのですが、キーはエントリごとに異なります。
(1) 各エントリのキーと (2) 各エントリの特定のキーの値の 2 つのテーブルで保存することを考えました。エントリは両方のテーブルで共通の id フィールドを共有しますが、プルする方法がわかりませんこの種の構成では、SQL のキー => 値ペアとしてのエントリ。
より良い方法はありますか?これが sqlite で不可能な場合、mysql で可能ですか? ありがとう!
sql - SQL - 外部 (?) 条件で関連するすべての行を選択する方法
私は3つのテーブルを持っています:
各プレイヤーは異なる属性を持つことができますが、属性を持たないプレイヤーもいます。次に、特定の属性を持つプレーヤーを検索する必要があります。たとえば、番号が 11 で名前が John であるすべてのプレーヤーです。この時点で、これらの属性の ID もわかっwhere
ています。クエリの一部は次のようになります。WHERE (attribute.id, attribute.value) in ((5, '11'), (18, 'John'))
要求されたすべての属性を満たすすべてのプレーヤーを取得する必要があります。
問題は、クエリ全体がどのように見えるべきかわからないことです。結合、ネストされた選択、グループ化を試みましたが、機能させることができません。私はいつも行が多すぎるか、十分ではありません。
助けてください。
編集 aranid のおかげで解決策が見つかりました:
したがって、キーワードはhaving by
適切に使用されました:)上記のクエリをステートメント
に変換する方法はありますか?JOIN
sql - 別のテーブルの SQL SELECT 基準
関連するテーブルが 2 つあります。
そしてmessages
、テーブルの基準を使用して取得する必要がありproperties
ます。return unread (read=false) high prio (importance=high) messages
例:返す必要があるような基準がある場合
SELECT 句 (MySQL ダイアレクト) を使用してこれを取得するにはどうすればよいですか?
mysql - MYSQLクエリヘルプ(EAVテーブル)
特定の質問に「はい」、別の質問に「いいえ」と答えた顧客を取得するために、次のクエリがあります。
これは問題なく動作します。ただし、クエリを変更して、特定の質問に「はい」と答え、別の質問に「いいえ」と答えた顧客を取得したいと思います。
これをどのように達成できるかについてのアイデアはありますか?
PS-上記の表の応答はEAV形式です。行は列ではなく属性を表します。
sql - Oracle:より具体的な値が同じクエリ内から null の場合、デフォルト値を取得するにはどうすればよいですか?
そのタイトルは残忍ですが、他になんと言っていいのかわかりません。
サイト全体でユーザー設定を保存する user_id に関連付けられたキー値テーブルがあります。ユーザーがログインして設定を更新していない場合は、キーを要求するたびに (「FAVORITE_COLOR」など) キーが null になるため、デフォルト ユーザーに関連付けたデフォルト設定を取得する必要があります。ユーザー ID = 0。
user_id = 0 の結果をクエリの最後に UNION するという行に沿って考えていましたが、それは重複につながるだけです。それが可能かどうかはわかりませんが、次のようなことを言えたらいいのにと思います。
これを行う良い方法はありますか?
編集:これに関するすべての助けに感謝します。ユースケースがこの質問である単一の値のみを取得する場合、デュアルからの NVL はまさにあなたが望むものですが、同じクエリで複数のペアを返すことを計画している場合は、他のいくつかを見てください実際には実装にとってより意味があるかもしれないので、答えてください。
以下の ZeissS の提案は単純で、まだ 1 つのクエリであり、複数の k,v ペアで動作し、クライアント側で重複フィルタリングの可能性がある場合でも問題はありません。
mysql - MySqlでループしますか、それとも別の方法ですか?
私はinnoDBテーブルを持つMySqlデータベースを持っています。非常に単純化されたこれは、2つのテーブルのレイアウト方法です。
表A:
- controlID(PK)
- controlText
表B:
- controlOptionID(pk)
- controlID(テーブルAへのFK)
- controlOptionType
- controlOptionValue
非常に多くのcontrolOptions(テーブルB)が1つのコントロールを参照できます(複数のオプションを制御することができます)。ただし、オプションごとに、テーブルBに2つの行が作成されます。1つの行はcontrolOptionType ="linkToCreator"およびcontrolOptionValue=(作成元のテンプレートへのID *)です。そして、他の行タイプ="optionSelected"およびvalue= "true"(またはfalse)。
- =非常に複雑な設定ですが、基本的には、列を設定する代わりに、列が呼び出されるタイプを使用して動的な列を作成しています。そのため、FKでテンプレートにリンクできませんでした。
したがって、1つのcontrolOptionValue値がtrueまたはfalse(必要なものに応じて)で、もう1つのcontrolOptionValueが指定したテキストIDであるすべてのコントロール(2つのcontrolOptionsがリンクされている)を選択する必要があります。
私がそれをするための最良の方法だと思うのは
次に、その結果セットをループして、次のようにします。
しかし、おそらくそれは本当に非効率的であり、どちらにしても私にはそれを行う方法の手がかりがありません。templateIDとtrueまたはfalseを指定した単一のクエリ(つまり、ストアドプロシージャを使用しない)を取得でき、何も見つからなかった場合に行の結果が得られれば素晴らしいと思います。
ところで、これはアプリケーションでの検索用であり、パフォーマンスが最優先されるように、大量の行を処理する必要があります。そして、はい、私はセットアップが最高ではないことを知っています...
ありがとう
c# - カスタマイズ可能なユーザーのアドレスの実装
私はサービス プロバイダーの請求システムに取り組んでおり、カスタマイズ可能な設定スキーマという名前のものを実装する必要があります。主な機能は、管理者がさまざまな状況で必須のフィールドを定義できるようにすることです。たとえば、顧客がサイトでのみ登録する場合、姓、名、電子メール アドレスを入力する必要があります。請求可能なものを注文する場合は、基本的な住所データを入力する必要がありますが、特定のものが必要な場合は、請求先住所と配送先住所を入力する必要があります。各製品 (またはカテゴリ) の住所に必須のフィールドと、必須の住所 (請求、配送、メインなど) を管理者が定義できるようにしたいと考えています。1 つの製品/サービスに複数の住所が必要な場合、すべての住所に同じ必須フィールドのリストがあります。重要なことの 1 つは、追加フィールドの定義を許可する必要があることです。アドレス スキーマを選択するためのルールは、製品および/または国に基づきます。
私の質問は、この問題に適切なモデルは何であるべきかということです。顧客オブジェクトには住所のリストが必要だと思います。すべての住所には、名前 (Billing、Main、Shipping) とその値への参照が必要です。データベース側では、私の考えは、列として標準属性を持つ住所用のテーブルを 1 つ作成し、カスタム属性 (管理者が定義) 用に EAV テーブルを 1 つ作成することです。クラス テーブルの継承を検討しましたが、アドレスの属性の最終的なセットがないため、ここでは適切ではありません。2 番目のオプションは、カスタム属性を格納するために XML 列を使用することでしたが、そのデータ型を使用したことがなく、パフォーマンスについてはわかりません。EAV が標準のリレーショナル デザインではないことはわかっていますが、ここでは問題ないように見えます。しかし、私が言ったように、私はこの解決策のいずれについても 100% 確信があるわけではなく、他のアイデアを聞きたいと思っています.
前もって感謝します。