#【mysql的設計與優化專題(1)】ER圖,數據建模與數據字典
標簽(空格分隔): Mysql
---
> 需求分析是做項目中的極為重要的一環,而作為整個項目中的'血液'--數據,更是重中之重。viso,workbench,phpmyadmin等軟件可以幫我們更好的處理數據分析問題~
## ER圖

E-R方法是“實體-聯系方法”(Entity-Relationship Approach)的簡稱。它是描述現實世界概念結構模型的有效方法。是表示概念模型的一種方式,**用矩形表示實體型,矩形框內寫明實體名;用橢圓表示實體的屬性,并用無向邊將其與相應的實體型連接起來,屬性如果有下劃線的話,就表示該屬性為主鍵屬性;用菱形表示實體型之間的聯系,在菱形框內寫明聯系名(實體和實體之間的關系),并用無向邊分別與有關實體型連接起來,同時在無向邊旁標上聯系的類型(1:1,1:n或m:n)**

### 實體之間聯系
聯系可分為以下 3 種類型:
(1) 一對一聯系(1 ∶1)
例如,一個部門有一個經理,而每個經理只在一個部門任職,則部門與經理的聯系是一對一的。
(2) 一對多聯系(1 ∶N)
例如,某校教師與課程之間存在一對多的聯系“教”,即每位教師可以教多門課程,但是每門課程只能由一位教師來教
(3) 多對多聯系(M ∶N)
例如,圖1表示學生與課程間的聯系(“學”)是多對多的,即一個學生可以學多門課程,而每門課程可以有多個學生來學。聯系也可能有屬性。例如,學生“ 學” 某門課程所取得的成績,既不是學生的屬性也不是課程的屬性。由于“成績” 既依賴于某名特定的學生又依賴于某門特定的課程,所以它是學生與課程之間的聯系“學”的屬性。
> 推薦使 **億圖圖示專家或viso** 來畫ER圖
## 數據建模

> 使用workbench軟件可以很方便的建立數據模型,當然workbench不僅僅可以用來建模,還可以用來管理數據庫.但通常我們只用來建模,管理數據庫用navcate等更為方便的工具;
> 軟件很簡單,只不過是英文版本的,貌似市面上還沒有出現中文版的,其實軟件能用英文版的盡量使用英文版的
### 簡單的圖示使用說明







#### 中文亂碼的問題
![1348760556_1222.png-75.2kB][1]
### 數據字典
在使用數據字典前,要保證sql的注釋務必要詳情
```sql
CREATE TABLE `sc_role` (
`id` smallint(6) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(20) NOT NULL DEFAULT '角色名稱',
`parentid` smallint(6) NOT NULL COMMENT '父角色ID',
`status` tinyint(1) unsigned NOT NULL COMMENT '狀態',
`remark` varchar(255) NOT NULL COMMENT '備注',
`create_time` int(11) unsigned NOT NULL COMMENT '創建時間',
`update_time` int(11) unsigned NOT NULL COMMENT '更新時間',
`listorder` int(3) NOT NULL DEFAULT '0' COMMENT '排序字段',
PRIMARY KEY (`id`),
KEY `parentId` (`parentid`),
KEY `status` (`status`)
) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 COMMENT='角色信息列表';
```
然后可以通過phpmyadmin來導出數據字典
phpAdmin是一個用php語言寫的B/S架構,其配置文件在其應用的根目錄config.inc.php;在該文件中可以設置數據庫鏈接的一些信息

> ER圖,數據模型,數據字典是對分析數據結構和維護數據庫非常有幫助的,千萬不要怕麻煩
[1]: http://static.zybuluo.com/a5635268/rxwl36lc0mnhojdpthr4w4e8/1348760556_1222.png
- 【mysql的編程專題①】流程控制與其他語法
- 【mysql的編程專題②】觸發器
- 【mysql的編程專題③】內置函數
- 【mysql的編程專題④】存儲過程
- 【mysql的編程專題⑤】自定義函數
- 【mysql的編程專題⑥】視圖
- 【mysql的設計與優化專題(1)】ER圖,數據建模與數據字典
- 【mysql的設計與優化專題(2)】數據中設計中的范式與反范式
- 【mysql的設計與優化專題(3)】字段類型與合理的選擇字段類型
- 【mysql的設計與優化專題(4)】表的垂直拆分和水平拆分
- 【mysql的設計與優化專題(5)】慢查詢詳解
- 【mysql的設計與優化專題(6)】mysql索引攻略
- 【Mysql問題集錦(1)】mysql不能使用innodb存儲引擎
- 【Mysql進階技巧(2)】利用mysql生成唯一序號
- 【Mysql進階技巧(1)】MySQL的多表關聯與自連接
- 【Mysql高可用架構(1)】基于日志點的主從復制
- 【Mysql高可用架構(2)】主從管理的系統視圖
- 【Mysql高可用架構(3)】基于GTID的主從復制
- 【Mysql高可用架構(4)】在線變更復制類型
- 【Mysql高可用架構(5)】多源復制(多主一從)
- 【Mysql高可用架構(6)】多線程復制
- 【Mysql高可用架構(7)】在線設置復制過濾
- 【Mysql高可用架構(8)】解決主從不一致
- 【Mysql高可用架構(9)】初識mycat以及制作mycat鏡像
- 【Mysql高可用架構(10)】mycat配置mysql讀寫分離
- MyCat 集群部署(HAProxy + MyCat)
- 常用復雜sql語句整理