2

これらのリレーショナルデータベースをモデリングして作成するのは初めてのことです。データモデリング - 電話番号用の個別のテーブル?多対多関係

私は連絡先のテーブルを作成しています。これらのテーブルは現在あり: ベンダー、 primarycontacts

主接点の列には、次のようになります。

table contacts: id, name, vendor, phone 

今時々、接触は、複数の電話機など(セル、オフィス、家庭、スカイプを持っています私は、ID、名前、電話の列を持つ別のテーブル「電話」を作ることを考えていました。 また、一部の連絡先が同じ電話番号を共有する場合があります。

これは多分多くの関係になります。多くの連絡先が電話番号を共有しているため、すべて同じベンダーまたは異なるベンダーで動作します。 W

連絡先にPh1、Ph2、Ph3列を置くのではなく、これを行うとよいでしょうか(別の電話番号表)もっと数字があればどうなりますか?電話番号が1つだけの場合はどうなりますか?これは無駄なスペースになります。電話機のテーブルにはIDとphone_numberのみ、またはID、Phone_Number、およびPhone_Nameも含める必要がありますか?

答えて

1

それはあなたのプロジェクトによって異なりますが、多くの場合、多くのアイデアは個人情報の場合は意味がありません。誰かが電話番号を編集したときにどうなるか考えてみてください。他のすべてのユーザーは、その情報を変更したいと思っています。連絡先でのPh1、Ph2は、Ph3を列を持つ のではなく、

table phones: id, contact_id, phone 
table contacts id, user_id, firstname, lastname etc. 
+0

ああ、おかげで、私はそのことを考えているはず、優れた点は非常に簡単です! 1対多(電話番号への連絡先)の音がより適切に聞こえますか? – user1185860

+0

はい、私はそのように行くでしょう。または、イエローページのいくつかの種類を構築する必要があります;) –

1

が、この(洗面所独立電話番号テーブル)を行うことが良いでしょう:

のようなものを試してみてください?

はい、別の "PhoneNumbers"テーブルを作成することができます。その後、「連絡先」から「電話」フィールドをすべて削除することができます。 (連結キーなど)contacts_idPHONE_NUMBER

あなた「の電話番号」テーブルには、二つのフィールドを持っているとしています。これにより、連絡先が複数の電話番号を持つことができるように柔軟に設計することができます。

+0

Primarycontacts_idがPKになると言っていますか?または、id(pk)、primary_contacts_id、phone_numberの3つのフィールドが必要ですか? – user1185860

+1

PKは、contacts_idとphone_numberを基にした連結キーになります。それを行うならば、別のidフィールドはまったく必要ないはずです。 – Aaron

+0

OPの質問に基づいてPhone_type、自宅、仕事などが必要かもしれません。 – Ben

0

あなたは多対多の関係を成し遂げることができますが、電話番号の変更が複数の連絡先に影響を与える可能性があることに気づく必要があるとBryceは述べています。電話番号テーブルだけを挿入したり更新したりすることが保証されていれば、大丈夫でしょう。これらの関係を管理するために、マッピングテーブルに挿入、更新、および削除を行います。

3つのテーブルがあります。 Contact、Phone_Number、およびContact_Phone_Number。 Contact_Phone_Numberは連絡先IDと電話番号IDだけを持っています。これはあなたに多対多の関係を与えるでしょう。

たとえば、ユーザーが番号を変更した場合、Contact_Phone_Numberの番号と連絡先の間のマッピングを削除し、新しいマッピングを設定します。番号が新しい場合は、Phone_Numberに挿入します。既に存在する場合は、既存の電話番号レコードにマップするだけです。

これは、論理電話番号ごとに1つのレコードしか存在しないため、どの連絡先が電話番号を共有しているかを簡単に照会できる利点があります。この決定は、データの使い方によって異なります。

+0

3つのテーブルが私の最初の考えでした。しかし、彼が実際に保管しているのは電話番号そのものです。そして、それは良い自然なキーを作るので、ブリッジテーブル(Contact_Phone_Number)は本当に彼がここに必要なすべてです。 – Aaron

+0

有効な点ブライス。 – nolt2232

+0

これはいいと言いますか? : テーブル:連絡先:ID、fname、lname、メールなど テーブル:contact_phone:contact_id、contact_phone – user1185860

0

それは古いポストかもしれないが、誰かがそれを読めば...

あなたは、連絡先、ベンダー、携帯電話を持っています。連絡先は同じベンダーで働くことができ、連絡先によっては同じ電話番号を共有する人もいます。私はどうなるのか

、単純に3つのテーブルを作成します

contacts: 
    id, name, vendor_id, phone_id 
vendors: 
    id, vendor 
phone: 
    id, phone 

それらのテーブル間の関係は、実際に...