2016-04-27 11 views
0

私はSQL Serverでデータベースを構築していますが、テーブルの関係に問題があります。私は、下の図の現在の設定と、それが設定されている理由を説明します。このエンティティ/テーブルの関係は正しく設定されていますか?

tblPrimaryCustomer:このテーブルには2種類の顧客タイプがあります。ビジネスと消費者。それらは、フィールド "intType"に接続されたルックアップテーブルによって識別されます。

tblSecondaryCustomer:tblPrimaryCustomerの各顧客(ビジネスまたはコンシューマー)は、tblSecondaryCustomerに格納されている多くの許可ユーザーを持つことができます。

tblSecondaryAccount:tblSecondaryAccount:PrimaryCustomerが "Business"であるtblSecondaryCustomerの認定ユーザーは、tblSecondaryAccountに格納されている多くのアカウントを持つことができます。 「コンシューマ」であるtblSecondaryCustomersの認定ユーザーには、セカンダリアカウントはありません。

tblPrimaryAccount:tblPrimaryCustomerの「消費者」タイプの顧客は、tblPrimaryAccountに格納されている多くのアカウントを持つことができます。 tblPrimaryCustomerの "Business"タイプの顧客にはプライマリアカウントはありません。

2つの異なるアカウントテーブルを持たずにこれを設定する方法があるように感じます。私は間違って何をしていますか?

enter image description here

答えて

0

あなたはこの方法でそれを設定したくない理由があります: enter image description here

私はその後、プライマリ顧客に戻って許可されたユーザをリンクintCustomerと呼ばれるフィールドを追加する追加します

。顧客と許可されたユーザーを保持するCustomerテーブルは1つだけで、アカウントを保持するテーブルは1つだけ必要です。

コンシューマータイプの顧客をアカウントで取得するのは簡単です。あなたはintCustomer =顧客IDにリンクするので、同様に、テーブルを繰り返してしまう彼らのビジネスの顧客情報で許可されたユーザーのリストを照会するには、次の

私はこれがあなたのニーズに合わせて動作しないことが理解enter image description here

が、もし顧客と許可されたユーザー情報は似ています。

関連する問題