1

自分が取り組んでいるプロジェクトを整理しておくのに役立つデータベースシステムを作成したいと思っています。私の目的は、自分が行っているプロジェクトごとにテーブルを作成することです。このテーブルから、自分が誰と取引したか、そのプロジェクトで何をしたかを知ることができます。

私の見方では、プロジェクトには複数のコンテンツを含めることができ、コンテンツは複数のクライアントから送信できますが、1人のクライアントが1つのプロジェクトだけで作業することに制限はありません。

物事が複雑になる可能性があるので、ここで提案したテーブルデザインの写真を含めます。

データベース用に提案されたテーブル

MS Accessでは、プロジェクトテーブルを開き、+をクリックしてそのプロジェクトで作業したユーザー(クライアントテーブル)を確認し、別の+をクリックして各ユーザーが送信した作業(コンテンツテーブル)を確認しました。例えば。

Projects Table: id 1, project #1, client #1
    + Clients Table: id 1, client #1, user #1
            + Content Table id 1, Project #1, Logo Design, Client #1
                            id 2, Project #1, Create Website, Client #1
      Clients Table: id 2, client #2, user #2
                     id 3, client #3, user #3

2番目のクライアントに関連付けられた3番目のプロジェクトを追加しようとすると、データの重複、またはそれらの線に沿った何かがあると言われました。

プロジェクト名とクライアント名をプロジェクトテーブルでリンクするのが解決策だと思います。そうすれば、1つのプロジェクトに2つ以上のクライアントを関連付けることができても、同じプロジェクトにクライアントを2回割り当てることはできません。また、1つのクライアントを複数のプロジェクトに割り当てることもできます。

同じプロジェクト名とクライアント名のインスタンスがない限り、データを受け入れる必要があります

だから私の質問は、私のソロレーションは正しいものですか?もしそうなら、私はそれをどのように暗示しますか?私も物事を正しい方法で行っていますか?

私が入力した内容が誰かに何らかの意味を与え、誰かが私にこれについての助け/アドバイスを提供してくれることを願っています。

乾杯ベン

4

1 に答える 1

1

プロジェクトとクライアントの間の多対多の関係を説明しているようです。その場合、標準的なアプローチは、プロジェクト用のテーブル、クライアント用のテーブル、そして各プロジェクト/クライアントの組み合わせのペアを保持するジャンクションテーブルを用意することです。

ジャンクションテーブルのプロジェクトとクライアントに一意の制約(インデックス)を追加して、同じプロジェクト/クライアントのペアに対して1つの行のみを受け入れるようにします。複合主キーを使用して、一意の制約を満たすことができます。

于 2012-10-16T17:07:27.200 に答える