2009-06-07 18 views
1

私は連絡先テーブル(どこに私が姓、名字などを格納する)に関連する新しいテーブルを作成しています。フィールド(とテーブル)の名前を付けるのに助けが必要

表はあります

int Id (PK, Identity) 
int ContactId (FK) 
int Type (this identifies whether the following is an email, tel, fax etc.) 

nvarchar(40) [I need a name for this one] 

nvarchar型のフィールドは、基本的にはどちらか[email protected]、または+1 567 555から2934×12を保存する、または任意の他の誰かが誰かに連絡する方法として入力していますelse。メール、電話番号、IM名、ファックス番号など

このフィールドやこのようなものを含むテーブルの名前を付ける方法はわかりません。私はそれが電話番号かもしれないので、 "emailAddress"と名前をつけることはできません。そして、私はもちろんそれを "emailOrPhoneOrXYZ"と名づけたくありません。

答えて

1

「Id」と「タイプ」の名前を変更することから始めることもできますが、それはあまり説明的ではありません。 「ContactInfoID」と「ContactInfoType」はどうですか?最終的なフィールドは、 "ContactInformation"という合理的なタイトルが付けられます。

「emailOrPhoneOr ...」のような愚かな名前は使用しないでください。これにより、後で追加の種類の連絡先情報を保存することが禁止されているためです。

また、rdbmsがtinyintsをサポートしている場合、tinyintは "type"フィールドに十分な大きさがあると考えられます。

+0

私はDTOとLINQを使用しているので、IdとContactIdを使用しています。これは既に名前(クラス名)となっていて、ContactInfo.ContactInfoIdはそれを複製します。 ContactInfo.Idが優れています。 tinyintについては、実際にはtinyintを使用していますが、質問には関係しないので、例を混乱させるようなことはありません。とにかく、ありがとう!今私はちょうど私が尋ねたそのフィールドに名前を付ける方法に関する答えが必要です:) – Alex

+0

そう、あなたはそれを "ContactInformation"と呼ぶことでOKですか?これは非常に説明的で、フィールドに含まれる内容を明確に示しています。私は、 "Value"や "Detail"などのような一般的な列名に反対する傾向があります。彼らはあなたがどのような価値や細部を見ているかを正確に説明していないし、誤って "Value"この表は別の表の「値」に関連しています。ほとんどの場合そうではありません。 –

3

私は現在開発中のsysytemのテーブルに同様の問題がありました。

テーブルContactComplementsとフィールドを単にValueという名前にしました。

+0

+1私は '価値'と、単純で単純な目的を果たしていきます。 –

1

Contactsテーブルの文脈では、Detailをフィールドとして考えることができます。

0

私はそれを連絡先という名前にします。それはそれに含まれている実際の情報の種類にかかわらず適用できるだけの一般的なものですが、それは誰かに連絡するために使用されることを意味します。

0

CONTACTテーブルに関連付けられているキーと値のペアを維持しているので、CONTACT_PROPERTIESという名前を付けることができます。 'Value'は、問題のフィールドの名前と同じくらい良い名前になります。

1

理想的には、リレーショナルデータベースを設計するときは、可能であれば同じタイプの情報を別のタイプのフィールドに保存しないでください。

あなたのデータを非正規化することが理にかなっている場合があります。この状況では、それを考慮する必要があります。 (http://en.wikipedia.org/wiki/Denormalizationを参照してください)

最低でも、少なくとも2つのテーブルを使用することが理にかなっています.1つはEmail/IM用、もう1つは電話用です。電子メール/ IMテーブルの場合、yahooなどが電子メールをIM IDとして使用するため、アドレスが電子メールかIMか(フラグが両方とも設定されている場合は両方)を示すフラグを追加します。

1
--table-per-class strategy: 

--baseclass 
table ContactItem 
    column Id --pkey 

--subclass 
table ContactItemEmail 
    column Id --pkey, fkey ContactItem.Id 
    column Email 

--subclass 
table ContactItemPhone 
    column Id --pkey, fkey ContactItem.Id 
    column Phone 
+0

+1この方法では、長さに任意の制限を設ける必要はありません(電話番号は12、メールは255(?)など)、テーブルごとに異なる検証制約を実装することもできます。タイプ識別器が必要です。 ContactItemがContactItemEmailまたはContactItemPhoneを1つだけ持たなければならないという事実を強制するのは難しいでしょう。 –

1

私はテーブルContactDetailsとフィールドContactStringを指定するといいでしょう。

0

おそらく、関連するドメイン値の検証なしのフリーテキスト要素です。ユーザーはここに何かを入力することができ、それは容認できる値になります。私たちのデータ辞書では、これらの「ノート」と呼ぶ傾向があります。

関連する問題