0

データベースに慣れるために、php と SQL でちょっとしたサイド プロジェクトを行っています。データベースに関する正式なトレーニングは受けていません。SQL の実用的な知識があるだけです。

オブジェクト テーブルでオブジェクトを追跡し、プロパティ テーブルでプロパティを追跡する予定です。100件の物件があるとしますが、それはおそらく将来的に拡大するでしょう。これらのテーブルはどちらも 2 つの列だけが必要です。

単純に、どのオブジェクトがどのプロパティを持っているかを、列がプロパティ ID で行がオブジェクト ID であるテーブルに記録します。エントリは、オブジェクトがプロパティを持っているかどうかに応じて、単純に「true/false/null」のブール値になります。新しいオブジェクトが追加されるたびに、100 列の行を 1 つ追加する必要があります。新しいプロパティが追加されると、各オブジェクトの行を含む 1 つの列を追加する必要があります。

ただし、列の数を気にしている場合は、設計上の問題があることを以前に読みました。別のテーブルが友人から提案されました。これには 3 つの列があり、エントリはオブジェクト ID、プロパティ ID、および対応するブール値だけで構成されます。このスキームでは、新しいオブジェクトを追加すると、このテーブルに 100 個の新しい行を追加する必要があります。

誰かが 2 つのデザインのどちらが優れているか、またその理由を明確にすることができますか? 何らかの理由で、多くの行を持つよりも多くの列を持つ方が問題がありますか?

これが重複した質問であったとしても、私はまったく驚かないでしょう。その場合、私にとって正しい質問を指摘してくれてありがとう. ありがとう!

4

2 に答える 2

2

Many-to-Manyオブジェクトは多くのプロパティを持つことができ、同時にプロパティは多くのオブジェクトに属しているため、これは関係のように見えます。(そうですか?そう願っています)私の提案するデータベーススキーマは

テーブル オブジェクト

  • オブジェクト ID (PK)
  • オブジェクト名 (一意)

テーブル プロパティ

  • プロパティ ID (PK)
  • プロパティ名 (一意)

Table Object_Property (これはマッピングテーブルです)

  • オブジェクト ID (外部キー)
  • プロパティ ID (外部キー)

レコードとクエリの例、

于 2013-02-03T16:09:30.977 に答える
0

まず、オブジェクトの種類と同じ数のテーブルを作成し、テーブル内の各オブジェクトの特定のプロパティを列として配置することをお勧めします。複雑なリレーショナル データベースを構築している場合、これらのプロパティの一部は他のテーブルに引き出されますが、単純な場合は問題になりません。

オブジェクトとプロパティの観点からドメインを説明するだけでは、何をしているのかを理解するのは困難です。基本的に、データベースを使用して、表現しているドメインの論理ビューを作成しています。

たとえば、単純な Orders データベースには、顧客、製品、および注文のテーブルがある場合があります。名前、住所、電話番号などの顧客のプロパティは、顧客テーブルの列になる場合があります。ただし、請求先住所と配送先住所と同じ住所を使用する顧客がいる可能性があるため、住所を別のテーブルに分割する方が簡単な場合があります。

より具体的な言葉でデザインについて話し合う方が簡単だと思います。基本を理解して機能するシステムを作成できるようになった後、データベースを完成または最適化することについて心配します。

Amazon でThe Pragmatic Programmerをチェックしてください。

于 2013-02-03T16:21:49.110 に答える