成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

MySQL以用戶為本 構(gòu)建SNS網(wǎng)站的核心數(shù)據(jù)庫

數(shù)據(jù)庫 MySQL 數(shù)據(jù)庫運維
本文將為大家介紹的是如何用MySQL構(gòu)建以用戶為核心的SNS網(wǎng)站,包括具體的數(shù)據(jù)庫設(shè)計以及對于cache的相關(guān)處理。

1 前言

最近項目開發(fā)過程中,遇到數(shù)據(jù)庫設(shè)計方面的問題,參考了多個數(shù)據(jù)庫,總結(jié)了一些相關(guān)的數(shù)據(jù)庫實體及關(guān)系的表示 3月份的時候也寫過一篇MySQL數(shù)據(jù)庫設(shè)計復(fù)習筆記及項目實戰(zhàn) ,現(xiàn)在再次進行總結(jié),并添加了在項目中的數(shù)據(jù)庫設(shè)計及具體的持久化及cache實現(xiàn).

數(shù)據(jù)庫作為底層,命名規(guī)范和變動都會直接影響到上層,所以在設(shè)計上更需要謹慎.

本文從 數(shù)據(jù)庫實體及關(guān)系處理,數(shù)據(jù)持久化及緩存處理,這3個方面來進行闡述

先看下本次 我是買家 開源項目設(shè)計軟件 采用的是 MySQL Workbench

點擊查看詳細大圖

2 實體及關(guān)聯(lián)處理

篩選實體,從圖中我們可以看到,圖中主要分成了6個部分

實體表

goods 商品

communicate 群

say  我說

comment 評論

url  站點

brand 品牌

compaign 活動

用戶表user

關(guān)系表

userandmodel  用戶模型關(guān)系

modelandmodel 模型模型關(guān)系 aactionandmodel 頁面實體關(guān)系

tags  TAG實體關(guān)系

資源表

image 圖片

album 相冊

群組表

group 小組

topic  話題

post   回復(fù)

userandgroup  用戶群組關(guān)聯(lián)

 

 

站點常用表

systemtree 系統(tǒng)樹

content 內(nèi)容

ad 廣告

report 舉報

district 地區(qū)

log 日志

services 客服人員

mail 站內(nèi)信

 

以用戶為中心,user表放在中間,關(guān)聯(lián)其他的實體

實體表 可以進行擴展 添加相關(guān)的應(yīng)用實體

關(guān)系表  主要包含4個表

用戶和模型關(guān)聯(lián)表 比如: 張三 喜歡 IPOD   李四 想買 IPOD linktype="like/buy"  

模型模型關(guān)聯(lián)表  比如商品評論關(guān)聯(lián) modela 商品 modelb 評論  

actionandmodel 頁面模型關(guān)聯(lián)表  tag關(guān)鍵字及實體關(guān)聯(lián)表

資源表  主要包含了 image ablum  image表包含了系統(tǒng)實體類關(guān)聯(lián)的圖片

群組表  包含了group,topic,post userandgroup ,群組作為系統(tǒng)獨立模塊獨立出來

常用表  常有表從實體表中分離出來,放站點需要的表

#p#

3 數(shù)據(jù)持久化及緩存處理

數(shù)據(jù)持久化

THINKPHP處理數(shù)據(jù)機制簡單的說,直接實例化model類得到model示例即可進行數(shù)據(jù)庫語句的相關(guān)操作,如下圖所示

數(shù)據(jù)持久化

 點擊這里查看大圖

DbMysql 繼承自Db,  AdvModel,ViewModel,RelationModel繼承自Model類,Model類調(diào)用DB類進行具體的數(shù)據(jù)庫操作

比如查詢所有用戶操作

  1. $user = newModel('User');    
  2. $result =$user->select();    
  3. var_dump($result);//輸出所有的用戶  

比如添加用戶操作

  1. //接收POST過來的表單數(shù)據(jù),創(chuàng)建數(shù)據(jù)    
  2. if($user->create())    
  3. {    
  4.   if($user->add())    
  5.    {    
  6.      echo '添加成功';    
  7.  
  8.     }    
  9. }  

對于數(shù)據(jù)單表操作,使用ThinkPHP框架的Model進行處理相對比較簡單.對于關(guān)聯(lián)查詢,可以使用TP的RelationModel 也可以自己在自定義模型中定義,比如查詢用戶及頭像信息,這里自定義了Model UserModel.class.php

  1. <?php    
  2. //+----------------------------------------------------------------------    
  3. // | WoShiMaiJia Projcet    
  4. // +----------------------------------------------------------------------    
  5. // | Copyright (c) 2010 http://woshimaijia.com All rights reserved.    
  6. //+----------------------------------------------------------------------    
  7. // | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )    
  8. //+----------------------------------------------------------------------    
  9. // | Author: xinqiyang <517577550@qq.com>    
  10. //+----------------------------------------------------------------------    
  11. /**    
  12.  * 用戶模型文件    
  13.  * @author xinqiyang    
  14.  * @date   2010-4-9    
  15.  *    
  16.  */   
  17. class UserModel extends MetaModel {    
  18.    // 自動驗證設(shè)置    
  19.    protected $_validate     =     array(    
  20.    array('email','email','郵箱沒填或格式不正確',1,'',1),    
  21.    array('email','','郵箱已被使用',1,'unique',1),    
  22.    array('password','require','密碼必須輸入',0,'',1),    
  23.    array('enname','charecter','英文名只能由數(shù)字,字母,下劃線組成',1,'',1),    
  24.    array('enname','','名稱已被使用',1,'unique',1),    
  25.    array ('birthday','date','生日必須輸入格式如 1980-01-01',2,'',2),    
  26.    array ('qq','qq','QQ號不能為空或者 位數(shù)不正確',2,'',2),    
  27.    array ('mobile','mobile','手機不能為空,或格式不正確',2,'',2),    
  28.    );    
  29.    // 自動填充設(shè)置    
  30.    protected $_auto     =     array(    
  31.    array('image_id','1'),//設(shè)置默認頭像,使得評論可以成功    
  32.    array('password','md5',1,'function'),    
  33.    array('createtime','time',1,'function'),    
  34.    array('registerip','get_client_ip',1,'function'),    
  35.    array ('lastloginip','get_client_ip',2,'function'),    
  36.    array ('lastlogintime','time',2,'function'),    
  37.    );    
  38.    /**    
  39.     * 返回用戶信息    
  40.     * @param $arr    
  41.     */   
  42.    function getUsers($arr)    
  43.    {    
  44.      return $this->query("selectsz_user.id,sz_user.cnname,sz_user.city,
  45. sz_user.gogonum,sz_user.shownum,sz_image.filename,sz_image.url,sz_image.model  
  1. from sz_user,sz_image    
  2. view sourceprint?   
  3. where sz_image.id = sz_user.image_id and sz_user.id in".$arr);    
  4.    }    
  5.    function getUserTotal()    
  6.    {    
  7.      $total =$this->query("    
  8.      select count(*) fromsz_user;    
  9.      ");    
  10.      return $total[0]['count(*)'];    
  11.    }    
  12. }    
  13. ?>  

這里的返回用戶信息,執(zhí)行了一條SQL查詢,對多表進行關(guān)聯(lián)查詢,返回用戶的信息數(shù)據(jù)集,操作也比較方便

調(diào)用如下

  1. $u = newModel('user');    
  2. $lst =$u->getUsers($ids); //帶入需要調(diào)用的ID  

本類沒有使用到緩存,以下以Memcache緩存的使用為例來講解項目中的應(yīng)用

先看下cache的類圖

cache類圖

具體cache實現(xiàn)類繼承自cache類

使用如下

自定義model類  DistrictModel 繼承自 MetaModel , MetaModel繼承自Model , 在MetaModel類中實現(xiàn)緩存調(diào)用

  1. <?php    
  2. //+----------------------------------------------------------------------    
  3. // | WoShiMaiJia Projcet    
  4. // +----------------------------------------------------------------------    
  5. // | Copyright (c) 2010 http://woshimaijia.com All rights reserved.    
  6. //+----------------------------------------------------------------------    
  7. // | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )    
  8. //+----------------------------------------------------------------------    
  9. // | Author: xinqiyang <517577550@qq.com>    
  10. //+----------------------------------------------------------------------    
  11. /**    
  12.  * 元數(shù)據(jù)基類    
  13.  * 提供了緩存操作功能及基本的CRUD操作功能    
  14.  * @author xinqiyang    
  15.  *    
  16.  */   
  17. class MetaModel extends Model    
  18. {    
  19.    //緩存實例    
  20.    protected $cache;    
  21.    /**    
  22.     * 返回一個緩存操作實例    
  23.     */   
  24.    function _initialize()    
  25.    {    
  26.      //如果未設(shè)置則設(shè)置緩存實例    
  27.      if(!isset($this->cache))    
  28.      {    
  29.         $this->cache= Cache::getInstance('Memcache');    
  30.      }    
  31.    }    
  32.    /**    
  33.     * 刪除緩存    
  34.     * @param$cachename 緩存名稱    
  35.     */   
  36.    protected function rm($cachename)    
  37.    {    
  38.      $this->cache->rm($cachename);    
  39.    }    
  40. }    
  41. ?>  

這里以城市表信息的memcache緩存為例來實現(xiàn)緩存的獲取及調(diào)用

  1. <?php    
  2. class DistrictModel extends MetaModel    
  3. {    
  4.    /**    
  5.     * 獲取省市區(qū)    
  6.     * TODO:現(xiàn)在先用文件緩存,部署memcache后用 內(nèi)存緩存就好了    
  7.     */   
  8.    public function getDistrict()    
  9.    {    
  10.      //獲得數(shù)據(jù)    
  11.      if(!$this->cache->get('district'))    
  12.      {    
  13.          //寫入cache,5000多條的時候就掛掉了,數(shù)據(jù)不能超過1M    
  14. $this->cache->set('district',$this->where('level=2 or id in (1,2,9,22)')- >select(),0,-1);    
  15.      }    
  16.      return $this->cache->get('district');    
  17.     }    
  18. }    
  19. ?>  

調(diào)用過程,在調(diào)用過程中,先創(chuàng)建cache實例,在進行調(diào)用,緩存數(shù)據(jù),如果緩存數(shù)據(jù)則直接讀取數(shù)據(jù)

4 結(jié)語

本文主要是從大家設(shè)計過程中常見的問題進行討論,對于數(shù)據(jù)庫設(shè)計方面還存在很多的不足,大家是否在項目中也是自己設(shè)計的呢?

原文標題:以用戶為中心的SNS站點數(shù)據(jù)庫設(shè)計及實現(xiàn)

鏈接:http://www.cnblogs.com/scotoma/archive/2010/08/08/1794964.html

【編輯推薦】

  1. SNS網(wǎng)站數(shù)據(jù)庫技術(shù)分析
  2. MySQL 修改密碼的6個好用方案
  3. MySQL數(shù)據(jù)庫訪問妙招在Linux之下
  4. 從MySQL數(shù)據(jù)庫表中來檢索數(shù)據(jù)并不難
  5. 圖解MySQL數(shù)據(jù)庫安裝與實際操作

 

責任編輯:彭凡 來源: 博客園
相關(guān)推薦

2010-07-23 13:39:19

SNS網(wǎng)站

2012-12-04 17:50:23

2010-08-13 09:58:15

Gooele

2015-09-09 14:18:54

高端存儲稅務(wù)信息化構(gòu)建華為

2022-06-20 09:17:02

數(shù)據(jù)查詢請求數(shù)據(jù)庫

2012-04-29 10:56:34

APP

2014-11-14 11:06:17

醫(yī)療華為

2021-03-24 14:13:51

數(shù)據(jù)分析架構(gòu)大數(shù)據(jù)

2011-08-04 09:57:03

dbmonsterMySQL

2011-05-11 17:24:27

浪潮八路遵義銀行

2016-06-27 14:01:15

存儲初志科技

2015-10-23 17:05:07

響巢看看創(chuàng)星空間

2010-04-23 17:55:25

Oracle數(shù)據(jù)庫

2012-08-10 09:44:06

2017-05-04 11:01:16

諸葛io數(shù)據(jù)分析

2015-11-02 15:46:26

云夢

2021-12-13 22:59:23

MySQL數(shù)據(jù)庫SQL

2018-03-08 18:00:21

數(shù)據(jù)庫MySQL數(shù)據(jù)庫軍規(guī)

2020-09-14 13:59:24

數(shù)據(jù)

2010-11-09 10:22:19

開放數(shù)據(jù)中心云計算
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 国精品一区二区 | 久久91av| 国产一区www| 成人一级黄色毛片 | 精品一区精品二区 | 亚洲欧洲成人av每日更新 | 成人欧美一区二区三区黑人孕妇 | 欧美日韩综合 | 亚州精品天堂中文字幕 | 欧美日韩国产传媒 | 精品国产乱码久久久 | 亚洲国产精品久久 | 狠狠躁躁夜夜躁波多野结依 | av一区在线观看 | 美女福利视频网站 | aa级毛片毛片免费观看久 | 911影院| 国产一级成人 | 国产伦精品一区二区三区视频金莲 | 欧美日韩三区 | 色资源站| 国产日韩久久 | 久久国产亚洲 | 成人在线观看免费 | 欧美精品第一区 | 日韩综合在线 | 亚洲精品成人av久久 | 成人在线免费网站 | 欧美日韩在线一区二区 | 久久精品99久久 | 国产欧美一区二区三区久久手机版 | 激情网站在线 | 91成人在线视频 | 久久久久久国产精品免费免费狐狸 | 欧美一区二区三区久久精品 | 精品国产伦一区二区三区观看体验 | 黄色av免费网站 | 视频一区在线观看 | 亚洲大片在线观看 | 午夜精品福利视频 | 久久综合久色欧美综合狠狠 |