タグ付けされた質問 「database-design」

データベースの設計とは、データベースの構造、つまりデータベースの論理的な側面を指定するプロセスです。データベース設計の目標は、データベースがモデル化しようとしている事実の種類、ビジネスルール、およびその他の要件である「談話の世界」を表現することです。

6
タグまたはタグ付けに推奨されるSQLデータベース設計[終了]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善してみませんか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 4年前休業。 この質問を改善する タグ付けを実装するいくつかの方法を聞いたことがあります。TagIDとItemIDの間のマッピングテーブルを使用します(私には理にかなっていますが、それはスケールしますか?)クレイジーですが、動作する可能性があります)。誰かが疎行列を推奨することさえ聞いたことがありますが、タグ名はどのようにして優雅に成長しますか? タグのベストプラクティスがありませんか?

6
リレーショナルデータベースの設計パターン?[閉まっている]
休業。この質問には、より焦点を当てる必要があります。現在、回答を受け付けていません。 この質問を改善してみませんか?質問を更新して、この投稿を編集するだけで1つの問題に焦点を当てます。 2か月前に閉鎖。 この質問を改善する デザインパターンは通常、オブジェクト指向のデザインに関連しています。リレーショナルデータベースを作成およびプログラミングするための設計パターン はありますか? 多くの問題には、必ず再利用可能な解決策が必要です。 例には、テーブルデザイン、ストアドプロシージャ、トリガーなどのパターンが含まれます。 martinfowler.comのような、そのようなパターンのオンラインリポジトリはありますか? パターンが解決できる問題の例: 階層データの保存(例:タイプが1つのテーブルと1:1のキーと相違がある複数のテーブル...) 可変構造でデータを保存する(例:汎用列vs xml vs区切り列...) データを非正規化する(影響を最小限に抑える方法など...)


4
データベースの標準形式とは何ですか?例を挙げられますか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。私たちは回答が事実、参考文献、または専門知識によってサポートされることを期待しますが、この質問はおそらく議論、議論、投票、または拡張された議論を誘います。この質問を改善でき、再開できると思われる場合は、ヘルプセンターにアクセスしてください。 7年前休業。 リレーショナルデータベースの設計には、データベースの正規化または単に正規化という概念があります。これは、列(属性)とテーブル(関係)を編成して、データの冗長性を減らし、データの整合性を向上させるプロセスです。(ウィキペディアに書かれているように)。 ほとんどの記事はやや技術的で理解が難しいため、1NF、2NF、3NF、さらには3.5NF(Boyce-Codd)の意味についての例に基づいて、理解しやすい説明を書いてほしいと思っています。

3
エンティティフレームワークの1対1の関係における関連付けの主な終わりは何を意味します
public class Foo { public string FooId{get;set;} public Boo Boo{get;set;} } public class Boo { public string BooId{get;set;} public Foo Foo{get;set;} } エラーが発生したとき、私はエンティティフレームワークでこれをやろうとしていました: タイプ 'ConsoleApplication5.Boo'と 'ConsoleApplication5.Foo'の間の関連付けの主な終了を判別できません。この関連付けの主要な端は、リレーションシップFluent APIまたはデータアノテーションを使用して明示的に構成する必要があります。 StackOverflowでこのエラーの解決策に関する質問を見てきましたが、「プリンシパルエンド」という用語の意味を理解したいと思います。

30
外部キーの何が問題になっていますか?
私は聞いた覚えジョエル・スポルスキの中で言及をポッドキャスト014(私は記憶が正しければ)彼はやっと今までに外部キーを使用したいということ。しかし、私にとっては、データベース全体で重複やそれに続くデータの整合性の問題を回避するために非常に重要なようです。 理由については、確かな理由がありますか(スタックオーバーフローの原則に沿った議論を避けるため)。 編集: 「外部キーを作成する理由がまだないので、実際に設定するのはこれが最初の理由かもしれません。」

5
「テーブルの再作成を必要とする変更の保存を防ぐ」マイナスの影響
前文 今日SQL Server 2008で列を変更し、データ型をcurrency(18,0)などから(19,2)に変更しました。 SQL Serverから、「行った変更には、次のテーブルを削除して再作成する必要があります」というエラーが表示されました。 解答する前に、以下をお読みください。 [ ツール]► [オプション] ►[デザイナー]►[テーブルおよびデータベースデザイナー ]にオプションがあることをすでに知っています。 ...だから答えないで! 実際の質問 私の実際の質問は、次のように何か他のものです: これを行うことの悪影響/考えられる欠点はありますか? このボックスをオフにすると、テーブルは実際に削除されて自動的に再作成されますか? その場合、テーブルはソーステーブルの100%正確なレプリカをコピーしていますか?

4
列がnullの一意制約を作成する
このレイアウトのテーブルがあります: CREATE TABLE Favorites ( FavoriteId uuid NOT NULL PRIMARY KEY, UserId uuid NOT NULL, RecipeId uuid NOT NULL, MenuId uuid ) 次のような一意の制約を作成します。 ALTER TABLE Favorites ADD CONSTRAINT Favorites_UniqueFavorite UNIQUE(UserId, MenuId, RecipeId); ただし、これにより、同じ(UserId, RecipeId)場合に複数の行が許可されますMenuId IS NULL。メニューが関連付けられていないお気に入りを保存できるようNULLにMenuIdしたいのですが、ユーザー/レシピのペアごとにこれらの行の最大1つだけが必要です。 私のこれまでの考えは次のとおりです。 nullではなく、ハードコードされたUUID(すべてゼロなど)を使用します。 ただし、MenuId各ユーザーのメニューにはFK制約があるため、ユーザーごとに特別な「null」メニューを作成する必要があり、面倒です。 代わりにトリガーを使用して、nullエントリの存在を確認してください。 これは面倒で、トリガーをできるだけ避けたいと思います。加えて、私は彼らが私のデータが決して悪い状態にあることを保証することを信頼していません。 それを忘れて、ミドルウェアまたは挿入関数にnullエントリが以前に存在するかどうかを確認してください。この制約はありません。 Postgres 9.0を使用しています。 私が見落としている方法はありますか?

11
初めてのデータベース設計:私はオーバーエンジニアリングしていますか?[閉まっている]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善してみませんか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 2年前休業。 この質問を改善する バックグラウンド 私はCSの1年生で、父親の中小企業でアルバイトをしています。実世界でのアプリケーション開発の経験はありません。私はPythonでスクリプトを書き、Cでいくつかのコースワークを書いていますが、このようなものはありません。 私のお父さんは小規模なトレーニング事業を行っており、現在すべてのクラスがスケジュールされ、記録され、外部のWebアプリケーションを介してフォローアップされています。エクスポート/「レポート」機能がありますが、それは非常に一般的であり、特定のレポートが必要です。クエリを実行するために実際のデータベースにアクセスすることはできません。カスタムレポートシステムを設定するように求められました。 私の考えは、一般的なCSVエクスポートを作成し、オフィスでホストされているMySQLデータベースに(おそらくPythonで)毎晩インポートし、そこから必要な特定のクエリを実行できるようにすることです。私はデータベースの経験はありませんが、基本を理解しています。データベースの作成と通常のフォームについて少し読みました。 国際的なクライアントがすぐに始まる可能性があるので、それが発生した場合にデータベースが爆発しないようにしてください。現在、クライアントとしていくつかの大企業があり、部門が異なります(例:ACME親会社、ACMEヘルスケア部門、ACMEボディケア部門)。 私が思いついたスキーマは次のとおりです: クライアントの観点から: クライアントはメインテーブルです クライアントは彼らが働いている部門にリンクされています 部門は国中に散らばっています。ロンドンの人事、スウォンジーのマーケティングなどです。 部門は会社の部門にリンクされています 部門は親会社にリンクされています クラスの観点から: セッションはメインテーブルです 教師は各セッションにリンクされています statusidは各セッションに与えられます。例0-完了、1-キャンセル セッションは、任意のサイズの「パック」にグループ化されます 各パックはクライアントに割り当てられています スキーマを「落書き」のように「設計」し、3番目の形式に正規化するようにしました。私は、MySQLのワークベンチにそれを差し込むと、それはかなり私のためにすべてをした:(フルサイズのグラフィックはこちら) (ソース:maian.org) 実行するクエリの例 クレジットが残っているクライアントは非アクティブです(将来的にクラスがスケジュールされていないクライアント) クライアント/部門/部門ごとの出席率はどのくらいですか(各セッションのステータスIDで測定) 教師が1か月に行った授業の数 出席率の低いクライアントにフラグを立てる 部門の出席率を示す人事部門のカスタムレポート 質問 これは過剰設計ですか、それとも正しい方向に進んでいますか? ほとんどのクエリで複数のテーブルを結合する必要があるため、パフォーマンスに大きな影響がありますか? おそらく一般的なクエリになるので、クライアントに「lastsession」列を追加しました。これは良い考えですか、それともデータベースを厳密に正規化しておくべきですか? 御時間ありがとうございます

4
ON [PRIMARY]の意味?
私はSQLセットアップスクリプトを作成し、他の誰かのスクリプトを例として使用しています。スクリプトの例を次に示します。 SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[be_Categories]( [CategoryID] [uniqueidentifier] ROWGUIDCOL NOT NULL CONSTRAINT [DF_be_Categories_CategoryID] DEFAULT (newid()), [CategoryName] [nvarchar](50) NULL, [Description] [nvarchar](200) NULL, [ParentID] [uniqueidentifier] NULL, CONSTRAINT [PK_be_Categories] PRIMARY KEY CLUSTERED ( [CategoryID] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = …

8
データベースで継承をどのように表すことができますか?
SQL Serverデータベースで複雑な構造を表現する方法について考えています。 オブジェクトのファミリの詳細を格納する必要があるアプリケーションを考えてみてください。これらのオブジェクトは、いくつかの属性を共有しますが、他の多くの属性は一般的ではありません。たとえば、商業保険パッケージには、同じ保険証券レコード内の負債、モーター、財産、および補償の補償が含まれる場合があります。 セクションのコレクションでポリシーを作成できるため、C#などでこれを実装するのは簡単です。セクションは、さまざまなタイプのカバーに必要に応じて継承されます。ただし、リレーショナルデータベースでは、これを簡単に行うことができないようです。 主に2つの選択肢があることがわかります。 Policyテーブルを作成し、次にSectionsテーブルを作成します。可能なすべてのバリエーションについて、すべてのフィールドが必須であり、ほとんどがnullになります。 カバーの種類ごとに1つずつ、ポリシーテーブルと多数のセクションテーブルを作成します。 特に、すべてのセクションにまたがるクエリを記述する必要があるため、これらの方法はどちらも不十分であるように見えます。 このシナリオのベストプラクティスは何ですか?

11
多言語データベースのスキーマ
多言語ソフトウェアを開発しています。アプリケーションコードに関する限り、ローカライズ性は問題ではありません。言語固有のリソースを使用し、それらとうまく機能するあらゆる種類のツールを使用できます。 しかし、多言語データベーススキーマを定義するための最良のアプローチは何ですか?たくさんのテーブル(100以上)があり、各テーブルにローカライズ可能な複数の列があるとします(nvarchar列のほとんどはローカライズ可能でなければなりません)。たとえば、テーブルの1つに製品情報が含まれている場合があります。 CREATE TABLE T_PRODUCT ( NAME NVARCHAR(50), DESCRIPTION NTEXT, PRICE NUMBER(18, 2) ) NAME列とDESCRIPTION列で多言語テキストをサポートするための3つのアプローチを考えることができます。 言語ごとに個別の列 システムに新しい言語を追加するときは、次のように、翻訳されたテキストを格納する追加の列を作成する必要があります。 CREATE TABLE T_PRODUCT ( NAME_EN NVARCHAR(50), NAME_DE NVARCHAR(50), NAME_SP NVARCHAR(50), DESCRIPTION_EN NTEXT, DESCRIPTION_DE NTEXT, DESCRIPTION_SP NTEXT, PRICE NUMBER(18,2) ) 各言語の列を含む翻訳テーブル 翻訳されたテキストを保存する代わりに、翻訳テーブルへの外部キーのみが保存されます。translationsテーブルには、各言語の列が含まれています。 CREATE TABLE T_PRODUCT ( NAME_FK int, DESCRIPTION_FK int, PRICE NUMBER(18, 2) ) …

25
メールアドレスを主キーとして使用しますか?
自動インクリメントの数値と比較した場合、電子メールアドレスはプライマリの候補として不適切ですか? 私たちのウェブアプリケーションは、システムで一意である電子メールアドレスを必要とします。そこで、メールアドレスを主キーにしようと考えました。ただし、私の同僚は、文字列の比較は整数の比較よりも遅くなることを示唆しています。 電子メールを主キーとして使用しないのは正当な理由ですか? 使用していPostgreSQLます。

30
すべての開発者がデータベースについて知っておくべきことは何ですか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。私たちは回答が事実、参考文献、または専門知識によってサポートされることを期待しますが、この質問はおそらく議論、議論、投票、または拡張された議論を誘います。この質問が改善され、場合によっては再開できると思われる場合は、ヘルプセンターにアクセスしてください。 7年前休業。 好むと好まざるとにかかわらず、ほとんどの開発者は、データベースを定期的に使用するか、いつかデータベースを使用する必要があるかもしれません。そして、実際の悪用や乱用の量、および毎日出てくるデータベース関連の質問の量を考えると、開発者が設計または操作しなくても、知っておくべき特定の概念があると言っても過言ではありません。今日のデータベース。そう: 開発者や他のソフトウェア専門家がデータベースについて知っておくべき重要な概念は何ですか? 対応のガイドライン: リストは短くしてください。 回答ごとに1つのコンセプトが最適です。 具体的に。 「データモデリングは、」重要であるかもしれないスキルが、正確にはそれがどういう意味? 根拠を説明してください。 なぜあなたのコンセプトは重要ですか?「インデックスを使う」とだけ言ってはいけません。「ベストプラクティス」に陥らないでください。視聴者を説得してもっと学びましょう。 同意する回答に賛成票を投じます。 最初に他の人の答えを読んでください。ランクの高い回答1つは、ランクの低い回答2つよりも効果的なステートメントです。さらに追加する必要がある場合は、コメントを追加するか、オリジナルを参照してください。 個人的に当てはまらないからといって、反対投票しないでください。 私たちは皆、異なるドメインで働いています。ここでの目的は、データベースの初心者がデータベース設計とデータベース駆動型開発について十分に根拠のある包括的な理解を得るための方向性を提供することです。

4
電話のSQL varchar(length)で考慮すべき世界最長の電話番号は何ですか
SQL varchar(length)for phoneで考慮すべき世界最長の電話番号は何ですか。 考慮事項: +国コード ()市外局番 エクステンションエクステンションのx + 6の数字(8にする{スペース}) グループ間のスペース(つまり、アメリカの電話では+ x xxx xxx xxxx = 3スペース) ここに私はあなたの助けが必要です、私はそれが世界的になりたいです 私の特定のケースでは、カードなどは必要ないことを考慮してください。番号は国コードで始まり、内線番号で終わります。FAX/電話などのコメントも、通話カードの必要もありません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.