問題タブ [database-design]

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 投票する
4 に答える
3806 参照

sql - 多くのデータベースビューがあっても大丈夫ですか?

Microsoft SQL Server 2005データベースビューを使用して、数百のCrystal Reportsレポートを生成することはめったにありません(月次/四半期)。それらのビューは、私がそれらから読み取っていない間、CPUサイクルとRAMを浪費していますか?ビューから読み取ることはめったにないので、代わりにストアドプロシージャ、一時テーブル、または短期間の通常のテーブルを使用する必要がありますか?

私はDBAではないので、データベースサーバー内の舞台裏で何が起こっているのかわかりません。

データベースビューが多すぎる可能性はありますか?ベストプラクティスとは何ですか?

0 投票する
6 に答える
5755 参照

design-patterns - データベースパターン

論文/本などを知っている人はいますか。データベースのそのドキュメントパターン?たとえば、一般的な経験則の1つは、すべてのテーブルに主キーが必要であり、そのキーには情報コンテンツが含まれていない必要があるというものです。では、リレーショナルデータベースを設計するためのデザインパターンに関する本を書いたり、論文を発表したりした人はいないでしょうか。


@ガイウス、

これは、データベース設計者が検討する必要のある質問です。データベース構造の安定性はどの程度でしょうか。十分に長い期間を考えると、安定したものはありません。または、逆に言えば、十分な期間が与えられている場合、すべてが変更される可能性があります。代理キー(理論上)は、そもそも意味がなかったため、その意味を変更してはなりません。

その特定の設計シナリオで考慮すべきもう1つのことは、主キーが表示されるのは誰ですか?主キーがエンドユーザーが実際に参照する必要があるものである場合、それを理解できるものにすることは理にかなっています。しかし、エンドユーザーが主キーを確認する必要がある多くのケースは考えられません。通常、主キーはDBエンジンが特定の操作を高速化できるようにするために存在します。

質問をする際の私の当初の考えは、うまくいけば、簡単に回避できるエラーを回避するために、私よりも経験豊富なデータベース設計者によって体系化されたデータベース設計の設計パターンを見つけることでした。誰かがデータベース設計のアンチパターンを成文化したことがあれば、読むのは興味深いでしょう。

0 投票する
13 に答える
26827 参照

database-design - データベースのポリモーフィズムにどのように対処しますか?

Person、、、がSpecialPersonありUserます。PersonただのSpecialPerson人です。サイトにユーザー名やパスワードはありませんが、記録を保持するためにデータベースに保存されます。ユーザーは、サイトに登録されているユーザー名とパスワードに加えて、すべて同じデータを持っているPerson可能性があります。SpecialPerson


この問題にどのように対処しますか?Person人に共通するすべてのデータを格納し、キーを使用してデータを検索するSpecialPerson(特別な人の場合)およびユーザー(ユーザーの場合)、またはその逆のテーブルがありますか?

0 投票する
4 に答える
8242 参照

database-design - Webアプリケーションでのデータベース設計のヒント

誰かがWebアプリケーションのデータベース設計に関するヒント/アドバイスを持っていますか?私が取り組んでいるアプリケーションが離陸して多くの使用を開始した場合に、将来的に多くの時間/労力を節約できるようなものです。

もう少し具体的に言うと、このアプリケーションは戦略ゲーム(ブラウザベース、テキストのみ)であり、ほとんどの場合、データベースに保存されて後で処理される「注文」を発行するプレーヤーが関与し、結果もそこに保存されます(履歴「注文」とそれに対応する結果はおそらくかなり大きくなるでしょう)。

詳細を追加するために編集(要求に応じて):

プラットフォーム:Django

データベースエンジン:MySQLの使用を考えていました(別のデータベースを使用することに大きな利点がない限り)

スキーマ:私が今持っているのはいくつかのDjangoモデルだけですが、ここに投稿するには詳細が多すぎます。そして、スキーマの投稿を開始すると、これは具体的になりすぎて、一般的なヒントを探していました。たとえば、後で処理される「注文」を発行し、ある種の「履歴」を表示するために保存する必要のある結果を返すとします。この場合、「履歴」用に別のテーブルを作成する方がよいのでしょうか、それとも「注文」と結果の両方を集計するテーブルを作成する方がよいのでしょうか。「履歴」テーブルをキャッシュできると思いますが、集計テーブルで新しい行を変更するのではなく、常に新しい行を作成する必要があるため、データベース内のスペースとデータベース操作が多くなります。

0 投票する
13 に答える
7418 参照

database-design - データベースをどこまで正規化するかをどのように決定しますか?

データベース構造を作成するとき、従うべき適切なガイドライン、またはデータベースをどこまで正規化する必要があるかを判断するための適切な方法は何ですか? 正規化されていないデータベースを作成し、プロジェクトの進行に合わせて分割する必要がありますか? 完全に正規化して作成し、パフォーマンスのために必要に応じてテーブルを結合する必要がありますか?

0 投票する
11 に答える
85590 参照

sql - タグ付けのためのデータベース設計

次のタグ付け機能をサポートするデータベースをどのように設計しますか。

  • アイテムには多数のタグを付けることができます
  • 特定のタグセットでタグ付けされたすべてのアイテムの検索は高速である必要があります(アイテムにはALLタグが必要であるため、OR検索ではなくAND検索です)
  • アイテムの作成/書き込みは、迅速な検索/読み取りを可能にするために遅くなる可能性があります

理想的には、(少なくとも)n個の指定されたタグのセットでタグ付けされたすべてのアイテムのルックアップは、単一のSQLステートメントを使用して実行する必要があります。検索するタグの数とアイテムのタグの数は不明であり、高い可能性があるため、JOINを使用することは実用的ではありません。

何か案は?


これまでのすべての回答に感謝します。

しかし、私が間違っていなければ、与えられた答えはタグのOR検索を行う方法を示しています。(n個のタグが1つ以上あるすべてのアイテムを選択します)。効率的なAND検索を探しています。(すべてのn個のタグを持つすべてのアイテムを選択します-そしておそらくそれ以上。)

0 投票する
8 に答える
2824 参照

sql - リレーショナルデータベースでの地理的位置のモデリング

私は連絡先管理システムを設計していますが、地理的な場所を一貫した方法でモデル化することに関して興味深い問題に遭遇しました。特定の人に関連付けられた場所(職場、学校、自宅などの住所)を記録できるようにしたいと思います。私の考えは、次のようなロケールのテーブルを作成することです。

自律ロケーション(米国などの国など)が自身の親であるロケール(ID、LocationName、ParentID) 。このようにして、「政治単位」を任意に深くネストすることができます(COUNTRY>STATE>CITYまたはCOUNTRY>STATE>CITY> UNIVERSITY)。一部のクエリには、必然的に再帰が含まれます。

そのような計画で遭遇する可能性のある予測可能な問題に関する他の推奨事項またはおそらくアドバイスをいただければ幸いです。

0 投票する
8 に答える
12636 参照

sql - 短いテキスト文字列を SQL Server データベースに格納するにはどうすればよいですか?

varchar(255)、varchar(256)、nvarchar(255)、nvarchar(256)、nvarchar(max) など?

256 は、スペース効率の良い丸みを帯びた素敵な数のようです。しかし、私は 255 がよく使われているのを見てきました。なんで?

varchar と nvarchar の違いは何ですか?

0 投票する
2 に答える
538 参照

asp.net - ダイナミック ナビゲーションを使用してダイナミック コンテンツを作成するにはどうすればよいですか?

すべてのページがデータベース主導のツリー階層にぶら下がっている ASP.NET Web サイトを作成しています。通常、ページには HTML コンテンツが表示されます。ただし、プログラミングを実行する人もいます。

例:

  1. 「お問い合わせ」フォーム
  2. レポート ジェネレータ

データベース内のプログラミングをどのように表現/参照すればよいですか? Web ユーザー コントロール (.ascx) 名の varchar 値を使用する必要がありますか? それとも Web フォーム (.aspx) 名ですか? 他の何か?それとも、アプリケーション内の辞書にある整数またはその他の ID にする必要がありますか?

この構造で ASP.NET サイト マップ プロバイダーを作成できますか?

詳細については、こちらを参照してください:私のナビゲーションに最適なデータベース スキーマはどれですか?

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

.net - ナビゲーションに最適なデータベース スキーマはどれですか?

すべてのページがデータベース主導のツリー階層にぶら下がっている Web サイトを作成しています。

1 つを除くすべてのノードに親ノードがあります。ノードには、役割ベースの読み取り権限がある場合があります。一部のノードには特別なルールがある場合があります (ナビゲーション メニュー内に表示しないなど)。

ノードは、他のノードへのリンクを表す場合があります (Windows のショートカットのように)。通常、ノードはページを表します。

ページは、HTML コンテンツを表示するか、プログラミングを実行します。一部のページは、サブツリー (代替マスターページとスタイルシート) のルートになる場合があります。

Linq to SQL で使用するために、Microsoft SQL Server でノード データベースをセットアップするのを手伝ってください。

私は3つのアイデアを持っています:

  1. nullalbe フィールドがほとんどない多数の軽量テーブル。

    #1 nullalbe フィールドがほぼゼロの軽量テーブルが多数ある

  2. 多くの nullalbe フィールドを持つ重量ノード テーブル。

    #2 nullalbeフィールドが多い重量級ノードテーブル

  3. 両方の最良 (または最悪): 多くの軽量テーブルへの多数の nullalbe 外部キー。

    #3多くの軽量テーブルへのnullalbe外部キーがたくさん

データを最もよく表しているのはどれですか? Linq to SQL で最も使いやすいのはどれですか?

データベース内のデータ整合性ルールを維持するにはどうすればよいですか? プログラミング内でそれらを強制するにはどうすればよいですか?

  • ノードは、リンクまたはページのいずれか (両方ではない) である必要があります。

  • ページは、html またはコードのいずれか (両方ではない) である必要があります。

  • リンクは、ルート、html、またはコードであってはなりません。

このような構造の ASP.NET サイト マップ プロバイダーを作成できますか? するべきか?


更新:より一般的な質問をしました:

SQL で 1 対 1 の関係を処理する最良の方法は何ですか?


関連する質問:
データベースにデータ整合性ルールを適用するにはどうすればよいですか?