2010-04-20 46 views

回答

1

假設你有電話號碼錶和用戶表,則需要同時存儲表的主鍵一起

你可以這樣做:

  • 在用戶表,但後來你會能夠只將一個電話號碼連接到用戶(並且稍後如果你將不得不添加更多的話,則可能最終添加諸如phone_number_1,phone_number_2等的字段......這是非常可怕的)
  • 在電話號碼錶,但是你只能將一個用戶連接到一個電話號碼(同樣的問題可能會出現在頁面中) oint一個)
  • 在一個單獨的表,但隨後你將不得不使用一個連接每一次你需要獲得一個用戶或電話號碼

正確的選擇取決於你的數據之間的關係時試圖建模。

0

因此,數據庫將使用組合構造。保留phone_numbers表w/phone_number_id,users表w/user_id,然後customer_phone_numbers表將user_ids映射到phone_number_ids。然後你的PHP代碼會做這樣的事情:

<?php 

$user->save(); // save normal user data 
$phoneNumbers = array(); 
foreach($user->getPhoneNumbers() as $phoneNumber) { 
    $phoneId = getPhoneNumberId($phoneNumber); // get the phone number, or save a new record if necessary, and return that number 
    $phoneNumbers[] = $phoneId; 
} 

$user->savePhoneNumbers($phoneNumbers); // adds or removes phone numbers as necessary 

編輯:基於您的反饋,它聽起來並不那麼像你只是尋找一種方式將數據關聯。如果我理解正確,用戶將通過他們的電話註冊您的網站,然後在網站上註冊。發生這種情況時,您希望將兩個註冊組合在一起。

用戶是否正在通過手機創建完整的配置文件?您是否有過程來驗證用戶提供的電話號碼實際上是他們的?

如果用戶沒有通過創建手機的完整的個人資料,這聽起來像有兩種類型的「配置文件」中存儲,一個完整的網站的個人資料,電話等個人資料。這樣,您將擁有一個電話配置文件w/a phone_profile_id和一個常規用戶記錄w/a user_id。然後,讓用戶驗證他們的電話信息,並使用上述一個成分表其關聯到一個phone_profile_id

這是否更接近?

謝謝, 喬

+0

怎麼會協會的工作......我不完全得到它。請詳細解釋一下。 讓我解釋一下......所以我有SMS服務...基本上它會說你好,你怎麼樣?舉個例子...那麼如果用戶在網站上註冊,它會說約翰你好,你好嗎? 因爲我保留用戶信息。 所以在用戶註冊之前我想我只想檢查已經通過電話選擇了用戶的數據庫。 – lifeiscontent 2010-04-22 10:19:45

相關問題