2

データベース設計に正規化を取り入れようとしていますが、インターネットで入手できる説明のいくつかは少し混乱しました - そして、ここで正しい方向に進んでいるかどうかわかりませんか?

これまでのところ、私は持っています:

ユーザー:

id 
username 
password 

ユーザープロファイル設定:

id 
userid 
active 
dateofreg 

ユーザービジネス情報:

id 
userid 
businessname 
tags 

連絡先情報:

id 
userid 
address 
postcode 
email 
tel 

カテゴリタグ:

id 
userid 
services 
4

3 に答える 3

1

アドレスは独自のテーブルを取得します

contactinfo
==========
id
userid
idaddress
postcode
email
tel

address
==========
idaddress
street
houseNumber
postalCode
city
country

...

良い基本: http://databases.about.com/od/specificproducts/a/normalization.htm

于 2012-06-27T20:17:50.363 に答える
0
**userbusinessinfo**
id
userid
businessname
tags

タグには何が保持されますか? 複数の値のように聞こえますが、その場合はUserBusinessInfoTagsテーブルが必要です。また、読みやすくするために、フィールドにはキャメルケースを使用し、テーブル名には適切なケースを使用する必要があります。

**UserBusinessInfoTags**
id
userBusinessInfo_id
tag

何がUserProfileSettings保持されますか?ユーザーと 1 対 1 の関係である場合、テーブルはユーザーとマージできます。

ContactInfo分割することができます。ユーザーは、複数の住所、複数の電子メール、複数の電話番号を持つことを許可されていますか? それぞれに独自のテーブルが必要です。そうでない場合は、 と組み合わせるUsers。たとえば、複数の電話番号と住所を持つことができるが、電子メールを持たない場合、次のようになります。

**Users**
id
username
password
email

**UserAddresses**
id
userId
addressLine1
addressLine2
city
state
zipCode
country

**UserPhoneNumbers**
id
userId
phoneNumber
phoneNumberType
于 2012-06-27T20:22:26.890 に答える
0

正規化とは、特定のデータが保存される回数を減らすことです。データベースの正規化が進むほどパフォーマンスが低下するため、正規化を使いすぎる可能性があります。

フラット ファイルと完全に正規化された極端なケースでは、1 つの SQL ヒットから 1 つのレコードを取得するのに対し、他のテーブルからは 10 または 20 またはそれ以上のレコードを取得する可能性があります。

どこまで正規化するか (第 3 正規形が理想的な IMO ですが、他の人は同意しないでしょう) は、アプリとその複雑さに完全に依存します。

@ duffy356 によって指摘されたアドレスを除いて、あなたはほぼ正しいと思います。

于 2012-06-27T20:26:19.587 に答える