国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

MySQL以用戶為本 構建SNS網站的核心數據庫

數據庫 MySQL 數據庫運維
本文將為大家介紹的是如何用MySQL構建以用戶為核心的SNS網站,包括具體的數據庫設計以及對于cache的相關處理。

1 前言

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

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

本文從 數據庫實體及關系處理,數據持久化及緩存處理,這3個方面來進行闡述

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

點擊查看詳細大圖

2 實體及關聯處理

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

實體表

goods 商品

communicate 群

say  我說

comment 評論

url  站點

brand 品牌

compaign 活動

用戶表user

關系表

userandmodel  用戶模型關系

modelandmodel 模型模型關系 aactionandmodel 頁面實體關系

tags  TAG實體關系

資源表

image 圖片

album 相冊

群組表

group 小組

topic  話題

post   回復

userandgroup  用戶群組關聯

 

 

站點常用表

systemtree 系統樹

content 內容

ad 廣告

report 舉報

district 地區

log 日志

services 客服人員

mail 站內信

 

以用戶為中心,user表放在中間,關聯其他的實體

實體表 可以進行擴展 添加相關的應用實體

關系表  主要包含4個表

用戶和模型關聯表 比如: 張三 喜歡 IPOD   李四 想買 IPOD linktype="like/buy"  

模型模型關聯表  比如商品評論關聯 modela 商品 modelb 評論  

actionandmodel 頁面模型關聯表  tag關鍵字及實體關聯表

資源表  主要包含了 image ablum  image表包含了系統實體類關聯的圖片

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

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

#p#

3 數據持久化及緩存處理

數據持久化

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

數據持久化

 點擊這里查看大圖

DbMysql 繼承自Db,  AdvModel,ViewModel,RelationModel繼承自Model類,Model類調用DB類進行具體的數據庫操作

比如查詢所有用戶操作

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

比如添加用戶操作

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

對于數據單表操作,使用ThinkPHP框架的Model進行處理相對比較簡單.對于關聯查詢,可以使用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.    // 自動驗證設置    
  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','英文名只能由數字,字母,下劃線組成',1,'',1),    
  24.    array('enname','','名稱已被使用',1,'unique',1),    
  25.    array ('birthday','date','生日必須輸入格式如 1980-01-01',2,'',2),    
  26.    array ('qq','qq','QQ號不能為空或者 位數不正確',2,'',2),    
  27.    array ('mobile','mobile','手機不能為空,或格式不正確',2,'',2),    
  28.    );    
  29.    // 自動填充設置    
  30.    protected $_auto     =     array(    
  31.    array('image_id','1'),//設置默認頭像,使得評論可以成功    
  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. ?>  

這里的返回用戶信息,執行了一條SQL查詢,對多表進行關聯查詢,返回用戶的信息數據集,操作也比較方便

調用如下

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

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

先看下cache的類圖

cache類圖

具體cache實現類繼承自cache類

使用如下

自定義model類  DistrictModel 繼承自 MetaModel , MetaModel繼承自Model , 在MetaModel類中實現緩存調用

  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.  * 提供了緩存操作功能及基本的CRUD操作功能    
  14.  * @author xinqiyang    
  15.  *    
  16.  */   
  17. class MetaModel extends Model    
  18. {    
  19.    //緩存實例    
  20.    protected $cache;    
  21.    /**    
  22.     * 返回一個緩存操作實例    
  23.     */   
  24.    function _initialize()    
  25.    {    
  26.      //如果未設置則設置緩存實例    
  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緩存為例來實現緩存的獲取及調用

  1. <?php    
  2. class DistrictModel extends MetaModel    
  3. {    
  4.    /**    
  5.     * 獲取省市區    
  6.     * TODO:現在先用文件緩存,部署memcache后用 內存緩存就好了    
  7.     */   
  8.    public function getDistrict()    
  9.    {    
  10.      //獲得數據    
  11.      if(!$this->cache->get('district'))    
  12.      {    
  13.          //寫入cache,5000多條的時候就掛掉了,數據不能超過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. ?>  

調用過程,在調用過程中,先創建cache實例,在進行調用,緩存數據,如果緩存數據則直接讀取數據

4 結語

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

原文標題:以用戶為中心的SNS站點數據庫設計及實現

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

【編輯推薦】

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

 

責任編輯:彭凡 來源: 博客園
相關推薦

2010-07-23 13:39:19

SNS網站

2012-12-04 17:50:23

2010-08-13 09:58:15

Gooele

2012-04-29 10:56:34

APP

2015-09-09 14:18:54

高端存儲稅務信息化構建華為

2022-06-20 09:17:02

數據查詢請求數據庫

2014-11-14 11:06:17

醫療華為

2021-03-24 14:13:51

數據分析架構大數據

2011-08-04 09:57:03

dbmonsterMySQL

2016-06-27 14:01:15

存儲初志科技

2011-05-11 17:24:27

浪潮八路遵義銀行

2015-10-23 17:05:07

響巢看看創星空間

2010-04-23 17:55:25

Oracle數據庫

2012-08-10 09:44:06

2021-12-13 22:59:23

MySQL數據庫SQL

2015-11-02 15:46:26

云夢

2017-05-04 11:01:16

諸葛io數據分析

2018-03-08 18:00:21

數據庫MySQL數據庫軍規

2020-09-14 13:59:24

數據

2023-11-13 16:58:40

數據庫系統
點贊
收藏

51CTO技術棧公眾號

91亚洲天堂| 精品国产乱码一区二区三区四区| 国产精品午夜视频| 精品无码久久久久久久动漫| 成人h动漫在线| 国产综合色在线观看| 亚洲美女视频一区| 男女激情免费视频| 日韩不卡一二三区| 欧洲精品久久| 日本午夜一区二区| 一本一道久久a久久精品综合| 玖玖在线精品| 欧美不卡1区2区3区| 亚洲在线观看| 午夜精品一区二区三区四区| 日本亚洲三级在线| 米仓穗香在线观看| www.性欧美| 国产偷人视频免费| 国产日产欧美一区二区视频| 日韩网址在线观看| 国产欧美日韩中文久久| 嫩草影院国产精品| 亚洲欧美视频在线观看视频| julia京香一区二区三区| 亚洲成a人v欧美综合天堂下载| 最新av在线| 欧美亚洲综合色| 91ph在线| 日韩电影中文字幕一区| 草美女在线观看| 精品亚洲夜色av98在线观看 | 国产精品一二三四区| 国产69精品久久777的优势| 91国产福利在线| 日韩欧美的一区二区| 日韩理论片在线观看| 国产激情视频在线| 欧美日韩亚洲综合| 国内福利写真片视频在线| 1024成人网| 国产真实生活伦对白| 成人午夜看片网址| 欧美这里只有精品| 葵司免费一区二区三区四区五区| 国产视频在线一区二区| 91在线视频导航| 欧美亚韩一区| 亚洲国产欧美一区二区三区不卡| 国产高清亚洲一区| www.日日操| 在线影院国内精品| 自拍视频在线看| 538国产精品视频一区二区| 欧美激情亚洲| 屁屁影院ccyy国产第一页| 中文字幕精品一区二区三区精品| 丝袜+亚洲+另类+欧美+变态| 亚洲成人久久一区| 极品国产人妖chinesets亚洲人妖| 国产日韩亚洲欧美| 韩国欧美国产一区| 交换国产精品视频一区| 欧美日韩久久久久久| 91麻豆精品一二三区在线| 91福利入口| 99精品久久只有精品| 日韩欧美电影在线观看| 亚洲欧美色婷婷| 亚洲精品二区三区| 黄色免费观看视频网站| 欧美性xxxx| 精品国产亚洲一区二区三区大结局| 91亚色免费| 久久网这里都是精品| 黄色免费在线观看| 欧美在线视频观看免费网站| 日本欧美韩国一区三区| 成视频年人免费看黄网站| 日韩三级在线免费观看| 亚洲另类av| 污污污污污污www网站免费| 色综合欧美在线| 蜜臀av一区| 日韩免费在线观看av| 色综合天天做天天爱| 日本免费一区二区视频| 亚洲国产精品视频一区| 欧美性xxxxxxxxx| 久久九九热re6这里有精品| 中文字幕一区二区三区最新| 欧美视频在线看| 日韩精品免费一区二区夜夜嗨| 日本精品福利视频| 日韩一区二区免费在线电影| 天天综合亚洲| 九色免费视频| 97色在线播放视频| 久久久久综合网| 极品av在线| 欧洲亚洲一区二区| 欧美午夜精品电影| 神马久久一区二区三区| 人妻av中文系列| 日韩av在线看| 久久亚洲二区| 在线免费看黄| 成人黄色av播放免费| 日本一区二区视频在线| 99久久这里有精品| 久久综合九色综合88i| 亚洲激情电影中文字幕| 男人天堂欧美日韩| 超碰免费97在线观看| 成人久久一区二区| 亚洲成av人片一区二区三区| 欧美三级电影在线| 我看黄色一级片| 久99九色视频在线观看| 91日韩在线专区| 9.1麻豆精品| 欧美在线观看成人| 久久九九热免费视频| 成人免费视频网站在线观看| 男女羞羞在线观看| 国产高潮呻吟久久久| 日韩黄色在线免费观看| 国内不卡的二区三区中文字幕| 极品视频在线| 黄色一级在线视频| 欧美乱大交xxxxx| 亚洲欧洲国产日韩| 精品视频黄色| 黄网站在线观看| 国产精品久久一区二区三区| 欧美日韩久久久久久| 久久国产精品久久w女人spa| 黄色在线看片| 国产激情片在线观看| www.欧美精品一二三区| 国产欧美日韩麻豆91| 中文字幕中文字幕精品| 最色在线观看| 精品一区二区三区自拍图片区| 欧美一级生活片| 国产在线精品免费av| 高清一区二区中文字幕| 国产男女爽爽爽| 国产精品裸体一区二区三区| 欧美成人bangbros| 国产成人av一区二区三区在线 | 免费福利在线视频| 国产亚洲欧美另类一区二区三区| 91精品一区二区三区久久久久久| 蜜臀久久99精品久久久画质超高清| 丝袜美腿一区| 五月婷婷激情久久| 亚洲xxxxx性| 亚洲精品在线电影| 91亚洲国产成人精品一区二区三| 色综合久久中文| av网站在线免费观看| 成年人黄色在线观看| 欧美巨大黑人极品精男| 亚洲午夜在线电影| 免费亚洲婷婷| 国产视频一区二| 欧美色视频免费| av中文字幕av| 奇米4444一区二区三区| 91麻豆精品国产91久久久使用方法 | 日韩精品免费| sese一区| 人妻无码一区二区三区四区| 免费不卡av| 秋霞蜜臀av久久电影网免费| 福利片在线一区二区| h网站在线免费观看| 国产精品系列在线播放| 亚欧成人精品| 色婷婷一区二区三区| 免费看久久久| 国产探花一区在线观看| 香蕉视频一区| 婷婷开心久久网| 天天成人综合网| 日本超碰一区二区| 裸体一区二区三区| 亚洲在线成人精品| 第一福利永久视频精品| 一区二区三区中文字幕精品精品 | 欧美精品自拍视频| 久久国产日韩欧美| 欧美国产视频日韩| 国产精品久久久av| 国产精品久久久久久久久久东京 | 在线成人h网| 亚洲国产清纯| 懂色中文一区二区在线播放|