sql >> データベース >  >> RDS >> Mysql

DB設計:メンバーテーブルは個別ですか、それともすべて1つのテーブルにありますか?

    それはそれらの「他の」詳細が何であるかに大きく依存します。これは一般的で興味深い質問であり、一見したところ「難しい」答えはありません。しかし、この問題をより抽象的に考えると、表現したい特定のものの属性(「詳細」)間の実際の関係について、ある程度明確になる可能性があります。

    あなたの質問では、友達は「最小限」と「その他」の詳細を持っていると述べています。これらの詳細を「最小」または「その他」に分類するのではなく、友人をユニークにするものによって個々の(「原子」)詳細を完全に決定できるかどうかによって分類しましょう。

    FriendIDや電子メールアドレスなどの主キー(PK)があると思います。この一意の識別子を考慮して、次のように自問してください。「FriendID(または電子メールまたはPKとして使用しているもの)が1つだけ与えられた場合、その友人の詳細は絶対に確信できますか?たとえば、FriendID =2112が与えられた場合、私は絶対にその友人の名、姓、生年月日は知っていますが、私は知りません 友達の電話番号は複数あるので、絶対に知っておいてください。

    PKを指定すると、明確にわかっているすべての詳細を1つのテーブルにグループ化します。より多くのデータが必要な詳細(電話番号の場合は「自宅」や「職場」など)を「子」テーブルに入れ、PKの「親」テーブルに外国キーで戻します。 (注:子テーブルのPKは複合である可能性が非常に高いです。つまり、親テーブルのPKと差別化要因(この例では「自宅」や「職場」など)で構成されます)。多面的な複合キー。 1-Mの関係は非常に良好です。)

    データベースオタクは、この分解を機能依存性に基づいて呼び出します。 。



    1. SQL Serverで無効になっているすべての制約を返す(T-SQLの例)

    2. mysqlデータを使用した高低価格での並べ替え

    3. MariaDB用にMaxScaleをインストールして構成する方法

    4. PL / SQLDeveloperを使用してリモートOracleDBに接続するにはどうすればよいですか?