0

は、以下のデータベースの例を考えてみます。二つの長離れテーブルをリンクする外部キーまたはnull値

  • 多くarticles
  • supplierarticleとの間の関係は、多くの多いを有します((1、n) - (1、n))

    私はclinic's idと私があるとしましょうそれをすべて取得するにはsuppliers、それを行うには、最善の方法は何ですか?それぞれのサプライヤの"null" articlearticle_supplierに作成するか、をsupplierに作成して、適切なを参照してください。

後者の解決策は、最も単純で簡単なように思えるかもしれませんが、大きなテーブルチェーンがあるとどうなりますか?私は何かのリストが必要なたびに外来キーを追加し続けますか?例えば:診療所は医師が

  • を与えた処方箋の
  • リストを使用しています医薬品の

    • リスト...

    それは違いを行った場合、私はLaravelの雄弁ORMに

  • +0

    診療所と診療所の間の線はどういう意味ですか?他の人はどういう意味ですか?ダイアグラムにはどのようなリファレンスを使用していますか? *どのようなリファレンスを*デザイン*に使用していますか? PSダイアグラムはすばらしいですが、[必ずすべてのテキストを画像/リンクではなくテキストとして含めてください](https://meta.stackoverflow.com/questions/285551/why-not-upload-images-of-code-on-尋ねるときの質問/ 285557#285557)。 – philipxy

    答えて

    1
    を使用しています

    テーブルは値の関係を表します。 (一部の値はエンティティを識別します)。各テーブルのベースまたはクエリの結果がの場合は、を意味することがわかるまで、データベースを使用することはできません。 (すなわち、その(特性)述語とは何ですか?)あなたのテーブルの関係は何ですか?

    クエリには、基本関係の関係を表現し、対応する基本表に関してその表を表現します。例:joinは、1つの関係を満たす行を返します。また、ビジネス/アプリケーションの用語でテーブルの関係を知る必要があります。

    カーディナリティ&制約は、どのような状況が発生する可能性のある関係のプロパティです。更新や照会には必要ありません。彼らは完全性のために使用されるデザイン&を導くことができます。

    診療所では、「その」サプライヤについて話すときに、あなたは何を意味するのかを言いません。すべての意味ははありません。 - これらは関連するエンティティを参照していますが、はビジネスの面でどのように関連しているかについては言及していません。 /アプリケーション。このデザインには、クリニックに関する明確な関係はありません&記事。もしそうなら、何も言わずに正しい行を入れたり、行を見て&の状況を知ることができます。それでも、サプライヤが特定のクリニックに「持っている」記事がある場合は、クリニックサプライヤの行を引き出すことができます。しかし、それはあなたが意味する関係ですか?例えば、診療所がであるペアを希望する場合は、はサプライヤに「記事」を「持っている」ことがあります。これはあなたが持っているものから派生することのできない新しい関係/テーブルです。article_supplier

    その関係/テーブル内の各サプライヤのための「ヌル」の記事を作成

    はarticle_supplier &今説明関係/テーブルの特定の組み合わせです。しかし、それらの2つだけを持つ方が簡単です。サプライヤーが複数の診療所を「持っている」場合には、その後だけが異なる新しいバージョンの行が存在することができることを意味して適切な診療

    を参照するサプライヤーで外部キーを作成

    他のすべての列。 正規化理論では、元のデザインとclinic_supplierの関係/テーブルより悪いとのことです。そしてそれは、サプライヤがクリニックを持っていない場合、あなたはnull可能なFK(外来キー)のような何かを必要とすることを意味します。

    したがって、おそらくclinic_supplierテーブルが必要です。しかし、実際にあなたが話しているビジネス/アプリケーションの関係を言う新しい質問を投稿するべきです。あなたは、情報モデリングを読む必要が
    How do I find relations between tables that are long-distance related?
    Required to join 2 tables with their FKs in a 3rd table
    Best Solution - Ternary or Binary Relationship

    ご質問&次は、基本的に基本原則/概念は明らかにそれらに答えるために適用することで重複しているが、すべて同じです&データベース設計の教科書。

    +0

    最後の文はそれをすべて言います。データベースddesignは文法を理解するだけではありません。 –

    +0

    [これは初めてでした!](https://stackoverflow.com/revisions/46385211/1)「構文」について何を言っているのか分かりません。私は「表現」の意味ではなく「意味」の意味で「述語」を使用しています。 (もちろん、何らかの表現で示されています。)私の答えはすべて意味論に関するものです。 – philipxy

    +0

    私のコメントはあなたの回答ではなくOPに向けられています。私はあなたの応答に全面的に同意します。 –

    1

    あなたのデザインで: サプライヤーはテーブルです。 記事は表です。 サプライヤは記事を提供するので、サプライヤは記事をリンクする表の形で表現されます。したがって、supplier_articleテーブルがあります。

    クリニックはテーブルです。 Clinicは記事を使用しています。 上記と同じ原則で、クリニックとアーティクルの関係は表の形で表現する必要があります。これはclinic_articleのテーブルである必要があります。

    あなたは言及していませんが、発生する他の依存関係を調べる必要があります。例えば、診療所は手技を行い、手技が記事を使用する。適切な クリニック

    これは、1つのサプライヤが永遠に一つだけの診療所に供給できることを前提としていますを参照しているサプライヤーで外部キーを作成することによって、

    。今日でもそうだとしても、明日は真実ではありません。なぜなら、同じ場所にある複数の診療所を計画したり、同じアプリケーションやデータベースを使用したりしたいからです。

    関連する問題