2011-06-28 35 views
1

我正在使用PHP和MyISAM,目前我有一個用戶配置文件頁面,我不確定我應該如何精確佈局表格。我應該分別存儲用戶標識和配置文件數據(10-15列)嗎?

我有用戶的表格(以及他們的個人資料的每一位,包括一對MEDIUMTEXT字段爲他們的長描述或自定義樣式表),朋友表(用戶名+ friendid),當然還有一張表被放置在他們的頁面上。

從用戶表中分離配置文件/額外的用戶數據並純粹用它來檢查其他表是否明智?

如果我正在檢查他們的朋友在其他頁面上顯示或顯示某些內容,我不確定每行中的很多/或某些長字段是否不合適。

+0

你可以發佈你的表模式,並且要分開到底是什麼? –

+0

可能重複:http://stackoverflow.com/q/6418154/367456 – hakre

回答

2

簡而言之,也許是。分開表格將節省空間,因爲如果字段未被使用,空間將不會被分配。空間可能不會成爲問題(取決於服務器和用戶基礎),但連接表可能會降低性能,但這又取決於用戶和服務器。我認爲主鍵索引存儲在內存中,因此查找不應受列數/行大小的影響。

速度/性能...非規範化

空間正常化

+0

這對我來說更有意義(並且用戶id確實是主鍵) - 我更有信心,因爲我應該是一個簡單而小巧的應用程序。 –

2

基本上你的問題不能得到真正的回答,因爲它是非常主觀的,所以這是多了還是少了一些意見幫腔:

難道是明智的配置文件/額外的用戶數據與用戶分離列,並純粹用它來檢查其他表?

看起來是這樣,因爲你稱之爲額外用戶數據。所以它不屬於用戶,應該被分開。

如果我只是檢查他們的朋友顯示或其他頁面上的東西,我不確定每行中的很多/或一些長字段是不合適的。

這很難回答以及您提供的信息。如果你只是在做SELECT * FROM TABLE;查詢,那麼它肯定是不合適的。

+0

我很抱歉,我只是想知道如果我只是要求表中的用戶ID,我是否會有大量的列,如果它在那裏提供所有的數據是適當的。 –

+0

你想實現真正的標準化嗎?你的目標是什麼? – hakre

+0

正常化對我來說很重要,但是我似乎真的需要閱讀更多關於如何在應用程序中定義關係之前,我在這裏以某種方式去做(即使它是正確的),我想我會問一個不可能的問題,我很抱歉。 –

1

我認爲爲配置文件/額外的用戶數據創建一個單獨的表是很好的。將經常使用的列保留在用戶表中,並移動新的user_profile表中的其他列。目前你有10-15列,但將來它可能增長到50列。所以最好現在分開。

HTH,

相關問題