鍍金池/ 問(wèn)答/PHP  數(shù)據(jù)庫(kù)/ mysql 數(shù)據(jù)庫(kù)設(shè)計(jì)中用戶信息部分怎樣設(shè)計(jì)好?

mysql 數(shù)據(jù)庫(kù)設(shè)計(jì)中用戶信息部分怎樣設(shè)計(jì)好?

在日常數(shù)據(jù)庫(kù)用戶信息部分怎樣設(shè)計(jì)好.

假設(shè)結(jié)構(gòu)如下:

CREATE TABLE users(
    `id` INT(11) PRIMARY KEY AUTO_INCREMENT,
    `nickname` char(20) COMMENT '昵稱',
    `age` INT(4) COMMENT '年齡',
    `phone` char(11) COMMENT '手機(jī)號(hào)',
    `password` char(100) COMMENT '密碼',
     ....
    `other` text COMMENT '其他'

)

疑惑點(diǎn)是在 other 里。里面存放用戶的其他信息。結(jié)構(gòu)如:{"birthday":"2018-06-06","place":"陜西"}

這樣做有什么好處以及不好的地方。更好的設(shè)計(jì)是怎樣的。謝謝指導(dǎo)!

回答
編輯回答
不二心

other 里存放的數(shù)據(jù)應(yīng)該只是單純地用于記錄,絕對(duì)不會(huì)被用于 搜索排序、 統(tǒng)計(jì)聯(lián)表的字段。

birthday、place這樣的字段我一般還是會(huì)分別使用一個(gè)字段進(jìn)行存儲(chǔ)的,這兩個(gè)字段很容易被用于類似不同年齡段的用戶占比,不同地區(qū)的用戶占比 的統(tǒng)計(jì)功能,存在other中的話會(huì)很不方便。

當(dāng)然,具體怎樣存儲(chǔ)還是需要根據(jù)實(shí)際需求來(lái)定。

2018年5月7日 02:59
編輯回答
伴謊

這樣的設(shè)計(jì)我個(gè)人認(rèn)為挺不錯(cuò)。
這樣做的好處:

  1. 容易擴(kuò)展字段,不需要為了添加屬性就去添加字段

壞處:

  1. 不方便對(duì)某個(gè)屬性搜索,比方說(shuō)要搜索出某段時(shí)間內(nèi)生日的用戶,那么可能會(huì)對(duì)生日的字段記錄在other里面,可能存在其他日期的屬性。
  2. 不利于索引的創(chuàng)建。other里面的屬性不確定

具體來(lái)說(shuō),我認(rèn)為需要根據(jù)需求來(lái)確定other里面的信息,不能把所有其他的屬性都放入other里面。

2017年2月3日 18:28