私のデータベースには、CompanyIdとNameの列を持つ企業のリストがあります。 さらに、ユーザーがおり、ユーザーは製品を追加できます。 テーブル:userおよびuser_products 製品を定義する商品テーブルはありません。ユーザごとに一意です。したがって、「user_product」データベース関係の問題
ユーザーが商品を追加すると、会社の名前を入力します。その会社名が会社のテーブルに存在する場合は、user_productに名前のみを保存するのではなく、会社のテーブルに接続したいと考えています。これまでのところとても良い..私は単にCompanyIdをuser_productテーブルに保存するだけです。
問題は、ユーザーが会社のテーブルに存在しない名前を入力した場合です。名前をvarcharとして保存するのではなく、user_companyというテーブルに新しいレコードを作成します。 テーブルにはカラムがあります:UserCompanyId(PK)、UserId、Name。 NameとUserIdの組み合わせがすでに存在する場合、私はもちろんこのIDへの参照だけを新しい行には作成しません。
良いデータベース設計を維持するにはどうすればよいですか?このレコードと、UserCompanyIdという新しい列をuser_productに追加する必要があります。 CompanyIdまたはUserCompanyIdは、新しい行を追加するときに常に設定されます。これはより良い方法でこれができるように感じます。誰もがアイデアを持っていますか?
私はもちろん、テーブル "company"を1つしか持たず、システムによって追加されたグローバル企業である場合にnullの列UserIdを持つことができます。または、ユーザーIDが、世界中に存在した。これはどちらかというと気分が良くない...
おそらく、製品のテーブルがないという事実があなたの問題の一部です。そして、統合失調症のテーブルではなく、企業の明確なリストを持っているべきです。新しく追加された会社には、管理プロセスによって正しいと判断されるまで「暫定」としてマークすることができます。また、エントリを追加したUserIDをメモすることもできます。または、CompaniesテーブルにもUserID列が必要です。すべての企業はユーザー定義であり、表には(CompanyID、UserID)と(Name、UserID)の2つの固有の制約があります。また、ユーザーが自分のユーザーIDに対して会社のエントリのみを使用するように要求することもできます。 Aconventional、but ... –
世界中に多くの異なるランゲージと非常に多くの企業が加わっているので、それを管理する方法はありません。はい、ユーザーは自分の会社だけでなく、グローバルに追加されたUserIdのないユーザーも使用できます。 – Andreas