使用者表和使用者資訊表,為什麼要分兩個表呢,一般都是什麼欄位呢?

來源:互聯網
上載者:User
儲存使用者資訊一般用兩張表
user
Profile

我想知道一般這兩個表存什麼呢?
user(id,name,email,^……)
Profile(id,????)

什麼內容存到user中呢,什麼內容又放到Profile中呢?比如密碼使用者名稱之類的放在user中是吧,這個有什麼標準沒有呢?

或者乾脆所有的用一張表就可以嘛

糾結!!!

回複內容:

儲存使用者資訊一般用兩張表
user
Profile

我想知道一般這兩個表存什麼呢?
user(id,name,email,^……)
Profile(id,????)

什麼內容存到user中呢,什麼內容又放到Profile中呢?比如密碼使用者名稱之類的放在user中是吧,這個有什麼標準沒有呢?

或者乾脆所有的用一張表就可以嘛

糾結!!!

是為了將來考慮,這是一個典型的垂直分表的例子。把text等大欄位 和不做排序過濾的一些欄位 放到副表中。這樣的設計能保證資料量增長的時候主表的效能下降不是非常的嚴重。

在資料庫的設計中,還要考慮引擎的最佳化問題,分表的一個主要目的是加快大資料量時的訪問速度,比如index表包括主鍵idx,帳號密碼使用者等級這些基本的定長欄位,注意是定長,detail表有關聯的idx和其他變長的,或blob欄位,mysql訪問只含定長欄位的錶速度是最快的

個人理解,user是給登陸系統用的資訊表,內容簡單,使用者名稱,密碼,另一個則是客戶單位的人員資訊,這裡儲存使用者基本資料,年齡,住址等等,這裡的人主要用於系統業務使用,不一定是登陸使用者,僅供參考。

根據業務不同設計就好

每張表代表一個主題(subject),有一個主鍵(primary key),主鍵在功能上決定其他列,主鍵唯一確定一條記錄。user和profile是同一個東西嗎?它們的主鍵是什嗎?弄清楚這些你就知道怎麼設計了。

人工id是在資料庫實體設計後期引入的概念,在邏輯設計過程中只有使用關係主鍵才能建立合符邏輯的模型。一開始就把表名想好,貼上id的標籤,就很難看出資料本身的關係。

因此,首先要弄清需求,需要記錄哪些事實,之後再考慮怎樣建表。

表?關係?資料庫設計?
資料庫設計的原則請參考"資料庫設計三範式",基本目標就是減少冗餘資訊

使用者User表和資料Profile表?
這麼設計的唯一可能正確的原因就是1個使用者會有多份資料。

簡單點說好了:
1對1的關係(假定1個使用者只有1個郵箱),應該儲存在同一個表裡(使用者表裡面的郵箱列)。
1對多或者多對多的關係(假定1個使用者可以有N個好友),應該另外建一個關聯的表(表裡有本使用者的ID,好友的ID)。

1個格子只表示一個資訊,1個表裡的都是唯一相關的東西,盡量不要把資訊重複儲存在多個表裡,這就是標準。

另外,是誰說"儲存使用者資訊一般用兩張表"的?

覺得,主要還是為何把不定長的資料拆到另外一個表裡面,這個表裡面的資料總長度固定,引擎找起來很快

使用者表分成兩份的情況不是一定的,這要視乎系統商務邏輯,有為了一對多的情況,也有資料庫效率的原因,當對資料進行修改的時候就必須進行行級以上 的鎖表(視乎引擎)這對於系統經常進行大量訪問操作來說是致命的。所以有垂直分割表,把並不常用的資訊分割出去這一做法

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.