顧客がサプライヤーから製品を注文できるマーケットプレイスを設計しています。データベース スキームを定義する際に助けが必要です。
顧客とサプライヤーの 2 種類の会社があります。サプライヤーは独自の顧客を持つことができます (そして、1 つの顧客が多くのサプライヤーに属することができます)。顧客とサプライヤーの両方が独自の従業員を持つことができます。マネージャーとアシスタントは、アプリケーションにログインし、ユーザーの役割に基づいてテーブルにアクセスでき、所属する会社のレコードのみにアクセスできます。
アプリケーションに登録する場合、ユーザーは登録フォームでユーザー タイプ (顧客またはサプライヤー) を選択する必要があります。登録後、ユーザーは自動的に「管理者」の役割を取得します。その後、マネージャーとして会社情報と従業員を追加できます。システムに会社情報と従業員を追加できるのはマネージャーのみです。
顧客とサプライヤーは異なる会社属性を持つことができるため、2 つのテーブルに分けました。
このシナリオのために以下のスキーマを作成しましたが、これが正しい方法かどうかはわかりません。より良い解決策は何ですか?
このシナリオは別の問題を引き起こします: マネージャーが登録すると、マネージャーは Employee テーブルに追加されますが、この時点では、会社情報を追加していないため、まだどの会社にも属しておらず、customer_id または supply_id がありません。従業員テーブル。会社情報を追加する場合にのみ、新しい会社の顧客 ID またはサプライヤー ID (会社 ID) を取得します。ただし、従業員を会社に関連付けるためには、この会社 ID を従業員テーブルのマネージャーのレコードに追加し直す必要があります。これはどうあるべきかではないと思いますが、より良い解決策を思い付くことはできません。Customers テーブルと Suppliers テーブルの両方で「employee_id」を使用してこの問題を解決しようとしています。このように、マネージャーが会社情報を追加すると、彼らの「employee_id」会社情報と共に Customers または Suppliers テーブルに保存されます。このようにして、マネージャーは会社と 1 対 1 で関連付けられます。つまり、マネージャーは、自分が所有する 1 つの会社にのみアクセスできます。後でマネージャーが従業員を会社に追加するとき、会社が既に存在するため、サプライヤーまたは顧客 ID が従業員レコードと共に保存されるため、簡単になります。
これを正しい方法で行う方法は?
表:
従業員:
- ID
- customer_id NULL (顧客の FK)
- Supplier_id NULL (サプライヤーの FK)
- fname
- 名前
- Eメール
- パスワード
- user_type (顧客またはサプライヤー)
- 役割 (マネージャーまたはアシスタント)
顧客:
- ID
- employee_id (Employees の FK)
- 会社名
- 連絡先
サプライヤー:
- ID
- employee_id (Employees の FK)
- 会社名
- 連絡先
ありがとうございました