2011-04-04 83 views
0

我有一個問題,決定在哪裏把我的數據庫中的某個表字段。 該數據庫是託管分類廣告網站。 我希望註冊用戶和非註冊用戶能夠發佈廣告。如果一個未註冊的用戶發佈一個廣告,該網站應該要求他提供聯繫電話,如果用戶已經註冊,那麼應該使用存儲在用戶表中的聯繫人電話。MySQL表架構幫助需要

現在我的問題是,是否可以將聯繫人電話註冊和未註冊的用戶存儲在同一個表字段? 如果是這樣,該字段放在哪裏,分類廣告表或用戶表中(注意表中的每個用戶都有一個唯一的ID,因此用未註冊的用戶填充用戶表以獲得他們的聯繫電話將只填寫無用的數據表)

在此先感謝!

回答

0

您可以將未註冊用戶的電話號碼存儲在同一張表的同一列中,而且您可能應該這樣做。它使從未註冊用戶到註冊用戶的過渡變得簡單 - 您不必移動或重新輸入電話號碼。如果有用戶更改電話號碼,則只需在一個地方更新。 (你知道每天有多少人不小心把手機丟在馬桶裏嗎?這是驚人的)

如果你現在依靠電話號碼來識別註冊用戶,你需要修復那首先。 (我不認爲你這樣做,但如果你是,解決這個問題第一。)

你說

填充 未註冊用戶的用戶表只是爲了讓他們 聯繫電話將只填充表 與無用的數據

如果它是無用的,不要存儲它。如果你需要存儲它,這不是無用的。

當分類廣告終止時,您可以隨時刪除未註冊的用戶。但是。 。 。

需要聯繫電話號碼而不是讓用戶選擇留下電話號碼還是電子郵件地址是否有意義?就個人而言,我更喜歡使用一個丟棄的電子郵件地址這樣的事情。

+0

感謝您的回答 我的意思是「無用的信息」,是註冊用戶在他們的個人資料中有比未註冊用戶更多的信息(姓名,電子郵件,用戶名,密碼等) 因此創建一個整體表格行中插入一個未註冊用戶的電話號碼對我來說似乎是一個壞主意,導致整行只是在其中插入1個字段,而剩下約8個其他字段爲空。 你確實有一點關於在一個地方填寫所有信息 我會等待一些更多的答案來決定:) – 2011-04-04 10:39:17

+0

創建一個包含8個值的行和包含1個值和7個空值的行之間的成本差異是可以忽略不計。但是你必須使用戶名可以爲空或自動分配。 (StackOverflow自動爲未註冊的用戶分配一個用戶名,我認爲這是一個好主意。) – 2011-04-04 10:58:31

1

好的,你可以把手機放在廣告表中,裏面有一個is_registered字段。然後通過PHP你檢查is_registered,然後你知道在哪裏搜索電話號碼。

問候

+0

我喜歡這個答案很多,我可能會這樣做!非常感謝Alex的幫助! – 2011-04-04 10:49:23

+0

很高興幫助:) – alex88 2011-04-04 10:57:18

0

我會找靈活性,在您的設計,但如果你的邏輯將用戶大多是獨立的,他們是否登記過,我會使用相同的表,只是完成用戶的數據的其餘部分註冊的。我不會將用戶數據存儲在廣告表上,即使僅僅爲了清晰的數據組織。

我想你的註冊用戶都有一個用戶名和密碼,所以你可以檢查這些存在以知道他們是否已註冊。如果你以後不想改變你的邏輯,你當然應該仔細選擇這個區別。

一種不同的方法:爲什麼不使註冊變得如此簡單以至於沒有註冊用戶就沒有意義?我已經在所有情況下要求提供電話號碼,只需添加一個密碼字段或自動生成一個密碼字段,並且您已註冊了所有用戶。

我會要求一封電子郵件,以便您可以發送密碼,並可能要求進行帳戶驗證(現在或將來)。

+0

感謝您的回答AJweb。註冊很簡單,但我覺得很多互聯網用戶在註冊一項簡單的服務時會感到很煩惱,因爲很多競爭對手已經向未註冊用戶提供服務。此外,電話號碼字段僅僅是爲了簡化,實際上我有3個字段,未註冊的用戶每次發佈廣告時都必須填寫。除了廣告ID之外,我正在考慮創建一個包含這3個字段的「客人」表格。在廣告表中放置is_registered字段以確定哪些用戶表(來賓或用戶)從中提取信息。說得通? – 2011-04-04 10:48:56