問題タブ [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.
database-design - データベースにメタテーブルテーブルを作成する
データベースにメタテーブルを作成するための提案はありますか?これらのテーブルは、データベースを使用して、データベース内のテーブルをエミュレートするために使用されます。これは、関連するすべての技術を気にすることなく、その場でデータベースに構造(より多くのフィールド)を簡単に追加したい場合に使用します。私が持っている唯一の例は次のようになります:
テーブル:MetaTablesフィールド:tableName、tableDescription
テーブル:MetaFieldsフィールド:tableName、fieldName、fieldDesc、fieldDesc
テーブル:MetaCodesフィールド:tableName、fieldName、codeName、codeValueなど...
私はこれまでこのようなものを実際に使用したことがなく、注意すべき「落とし穴」があるかどうか疑問に思っていました。
このようなものは合理的に保守可能ですか、それとも反対にアドバイスしますか?
sql - アドレス帳テーブルの設計に関する SQL データベースの問題
現在、ソフトウェアのアドレス帳モジュールを作成しています。非常に柔軟なアドレス帳構成をサポートするように、データベースをセットアップしました。
必要なすべてのタイプの n エントリを作成できます。タイプとは、ここでは「メール」、「住所」、「電話」などのデータを意味します。
「contact_profiles」という名前のテーブルがあります。
これには 2 つの列しかありません。
そして contact_attributes というテーブルがあります。これはもう少し複雑です:
たとえば、ユーザーのテーブルから、これらのプロファイルにリンクできるようになりました。しかし、ここから問題が発生します。
現時点では、取得する値ごとに JOIN を作成する必要があります。何らかの方法でビューを作成する可能性はありますか?それにより、タイプの as 列で結果が得られますか?
だから今、私は次のようなものを得るでしょう
しかし、次のような結果が得られるとよいでしょう。
最初にこのようなテーブル レイアウトを作成したくない理由は、追加するものが常にある可能性があり、同じタイプの複数の属性を持つことができるようにしたいからです。
これを動的に変換する可能性があるかどうか知っていますか?
より良い説明が必要な場合は、お知らせください。
sql - カテゴリのタグ付けをサポートするデータベース スキーマを設計する方法は?
各タグがカテゴリにグループ化されていることを除いて、タグ付けのためのデータベース設計のようなものにしようとしています。
たとえば、車両に関するデータベースがあるとします。実際には車両についてあまり知らないとしましょう。そのため、すべての車両にある列を指定することはできません。したがって、車両に情報を「タグ付け」します。
ご覧のとおり、すべての車が製造元とモデルでタグ付けされていますが、他のカテゴリはすべて一致しているわけではありません。車は各カテゴリの 1 つだけを持つことができることに注意してください。すなわち。車には 1 つのメーカーしかありません。
すべてのメルセデスの検索をサポートするデータベース、またはすべてのメーカーを一覧表示できるデータベースを設計したいと考えています。
私の現在のデザインは次のようなものです:
各車のメーカーが 1 つしかない場合を除いて、適切な主キーと外部キーがすべて適切に配置されています。それともできますか?
vehicleTags の複合主キーに外部キー制約を追加できますか? すなわち。複合主キー (vid、tid) を vehicleTags に追加できるのは、同じ vid に対して既に tid が存在しないような行がまだ vehicleTags にない場合に限るような制約を追加できますか?同じシド?
私の推測ではノーです。この問題の解決策は、cid 列を vehicleTags に追加し、新しい複合主キー (vid、cid) を作成することだと思います。次のようになります。
これにより、自動車に 2 つのメーカーが存在することはなくなりますが、tid が cid にあるという情報を複製しました。
私のスキーマはどうあるべきですか?
Tom は、私のデータベース スキーマにあるこの問題に、以前の質問であるHow do you do many to many table outside join?で気付きました。
編集
例では、製造は実際には車両テーブルの列である必要があることを知っていますが、それができないとしましょう。例はほんの一例です。
database - ユーザー プロファイルを保存する方法を選択しますか?
私は Web サイトのユーザー プロファイル システムに取り組んでおり、より良い (スケーラブルな) アプローチを検討しています。私は 2 つの解決策を思いついたので、私が見逃したかもしれない何かへの入力またはポインタを探しています。
次の create table ステートメントは、実行可能にすることを意図したものではなく、関連するテーブルのレイアウトのアイデアを提供するためのものです。
私の最初の考えは次のようなものでした:
明らかに、これはまったくスケーラブルではなく、追加のプロパティを追加するのは面倒です。1 つの利点は、特定のプロパティ セットに一致するユーザーをすばやく検索できることです。私は少し調べてみましたが、これはかなり一般的なアプローチです (Wordpress など)。
私の2番目のアプローチ(私が現在遊んでいるアプローチ)ははるかにスケーラブルですが、パフォーマンスが少し心配です:
このアプローチを使用すると、すべての使用に一連のキーと値のペアが関連付けられているため、追加のプロパティを簡単に追加したり、ログイン時にユーザー プロファイルをロードしたりできます。ただし、最初のアプローチで持っていたすべての型情報が失われるため (たとえば、DATETIME は書式設定された文字列として格納されるようになりました)、一部の検索が煩わしくなります。これにより、ユーザーが公開したいプロパティをより細かく制御できます。
両方の方法の長所と短所のバランスを取るには、ハイブリッド アプローチの方がよいでしょうか? SO はどのような方法を使用しますか? 私が考えていない、または見逃していない、これに対する別のアプローチはありますか?
拡張:ハイブリッド アプローチでは、user テーブルのプロパティを user_profile テーブルに挿入して、他のユーザーへの可視性を制御することも有利でしょうか?それとも追加のオーバーヘッドと見なされる可能性がありますか?
sql-server - ワークフロー/ビジネス プロセス アプリケーションのデータモデル
ワークフロー アプリケーションのデータ モデルとは? 現在、SQL Server 2000 でエンティティ属性値ベースのモデルを使用しており、ユーザーは (asp.net で) 動的フォームを作成できますが、データが大きくなるにつれてパフォーマンスが低下し、レポートを生成するのが難しくなり、レポートが多すぎるとさらに悪化します。ユーザーは同時にデータを照会します (EAV)。
sql-server - SQLで「Property Bag」テーブルを検索するにはどうすればよいですか?
プライマリ テーブル「カード」に関する属性を格納する基本的な「プロパティ バッグ」テーブルがあります。したがって、カードの高度な検索を開始したい場合は、次のようにすることができます。
私がする必要があるのは、このアイデアをある種のストアド プロシージャに抽出することです。これにより、理想的には、プロパティと値の組み合わせのリストを渡して検索結果を取得できるようになります。
最初は、これは結果がクエリ内のすべての要素と一致する必要があることを意味する「厳密な」検索になりますが、クエリ内のすべての結果と一致するように「緩い」クエリも必要です。
私はこれについて頭を包むことができないようです。以前のバージョンでは、大量の AND/OR 句を使用して実行する大規模な SQL クエリを生成することでしたが、今回はもう少し洗練されたものにしたいと考えています。どうすればこれを行うことができますか?
database - EAV データベース モデルを理解するための最良の初心者リソースは?
EAV モデルに基づいたデータベース設計を持つ Magento でカスタム作業を行っています。EAV データベース モデルを説明する優れたリソース/チュートリアルが必要です。ウィキペディアをリソースとして提供しないでください... 初心者にフレンドリーな方法で EAV を教えてくれるものを探しています。