1

こんにちは、次の mysql 関係があります。

ここに画像の説明を入力

ご覧のとおり、companys テーブルは members テーブルと 1:n の関係にあります。ただし、これは暗黙のように思われます。つまり、メンバーをデータベースに保存しようとすると、会社に関連付けられている必要があります。そうしないと、挿入が行われません。

基本的に、ユーザー サインアップ プロセスのアーキテクチャは、個人または会社として署名できるというものです。データベースの設計にこれを反映させるにはどうすればよいので、2 つのテーブル間の関係は必須ではありません。

4

2 に答える 2

2

これは素晴らしいデザインではありません。

パーティモデルテーブル継承を読んで、長持ちするように構築された設計を確認する必要があります。スケルトン:

PARTY
id

ORGANIZATION : PARTY
name
doing_business_as

INDIVIDUAL : PARTY
first_name
last_name

PARTY_RELATIONSHIP
from_party_id references party(id)
to_party_id references party(id)
from_date
to_date

ORGANIZATION_CONTACT_RELATIONSHIP : PARTY_RELATIONSHIP
于 2013-01-21T18:57:17.700 に答える
0

あなたのスキーマと実際のビジネス ドメインの間に矛盾があると思います。一部のユーザーがビジネスに関連付けられていない場合、1:n の関係ではなく、0:n の関係になります。

実際には、これをモデル化するいくつかの方法を見てきました。もちろん、最も単純なのは、外部キー関係を作成しないことです。これは、ビジネス ドメインが示唆しているように見えます (個々のユーザーは企業に関連付けられていません)。

「ビジネス」顧客と「個人」顧客の間に大きな違いがある場合は、個別の列を別々のテーブルに分割することができます。そのため、「ユーザー」と、ビジネス情報が存在する「ビジネス ユーザー」 (会社 ID へのリンクを含む) が含まれる可能性があります。 )、および個々のデータが存在する「individual_users」。

于 2013-01-21T16:17:30.577 に答える