自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

開發(fā)者如果理解ER圖(實體-聯(lián)系圖)?

開發(fā) 開發(fā)工具
E-R圖也稱實體-聯(lián)系圖(Entity Relationship Diagram),提供了表示實體類型、屬性和聯(lián)系的方法,用來描述現(xiàn)實世界的概念模型。

E-R圖也稱實體-聯(lián)系圖(Entity Relationship Diagram),提供了表示實體類型、屬性和聯(lián)系的方法,用來描述現(xiàn)實世界的概念模型。

用矩形表示實體型,矩形框內(nèi)寫明實體名;用橢圓表示實體的屬性,并用無向邊將其與相應(yīng)的實體型連接起來;用菱形表示實體型之間的聯(lián)系,在菱形框內(nèi)寫明聯(lián)系名,并用無向邊分別與有關(guān)實體型連接起來,同時在無向邊旁標(biāo)上聯(lián)系的類型(1:1,1:n或m:n)。

實體聯(lián)系模型,是概念數(shù)據(jù)模型的高層描述所使用的數(shù)據(jù)模型或模式圖,它為表述這種實體聯(lián)系模式圖形式的數(shù)據(jù)模型提供了圖形符號。

下面是一個最常見的ER圖,基本上只要講解ER圖就會碰到它。

通俗的講,ER圖是把現(xiàn)實生活中的各種關(guān)系,以圖片的形式,抽象出來,形成一個思維導(dǎo)圖,通過ER圖可以了解現(xiàn)實中的各種關(guān)系,比如一個班有很多學(xué)生組成。

ER圖的應(yīng)用,最最難的地方我覺得是抽象思維能力,你需要把現(xiàn)實生活中各種關(guān)系映射到大腦里面,然后以ER圖的形式輸出可分析和可視化的東西。

通過實例來拆解ER圖

一、學(xué)校里的那點事兒

現(xiàn)實生活

一個班級有N多的學(xué)生組成,每個班級有一個班級號,每一名學(xué)生有一個學(xué)號;學(xué)生可以根據(jù)自己的興趣愛好選修課程,對于選修的課程需要考試,然后出成績有學(xué)分;一名老師可以教授幾門課程。

ER圖

通過現(xiàn)實的描述分解出幾個實體,分別為班級、學(xué)生、課程、教師。出現(xiàn)了幾組關(guān)系,分別為一個班級由多名學(xué)生組成(1對多)、一名學(xué)生可以選多門課程,同時一門課程可能被多名學(xué)生選修(多對多)、一名教師可傳授多門課程,同時一門課程可能被多名教師傳授(多對多)。這個場景里面沒有一對一的關(guān)系。

關(guān)系數(shù)據(jù)庫

ER圖畫出來以后,如何映射到關(guān)系數(shù)據(jù)庫中的表呢?這一步就非常簡單了,分步驟進(jìn)行創(chuàng)建:把實體映射為表、把關(guān)系映射為表。實體映射為表,比較簡單,不再贅述。

關(guān)系映射為表,相對來說比較復(fù)雜,以這里的ER圖為例,存在1對多和多對多兩類關(guān)系。

1對多或者多對1時,在多方添加一個外鍵,對應(yīng)到1方,如學(xué)生表里的所在班級這個外鍵。多對多時,需要新增一個關(guān)系表,把兩個實體間的關(guān)系記錄下來,比如下面的學(xué)生選課關(guān)系表、教師任課關(guān)系表。根據(jù)ER圖創(chuàng)建表如下:

班級表(主鍵:班級號 )

  • 班級號 班級名 專業(yè) 人數(shù)
  • C001 動漫一班 動漫設(shè)計 60
  • C002 動漫二班 動漫設(shè)計 80
  • C003 計算一班 計算機(jī)應(yīng)用 70

學(xué)生表(主鍵:學(xué)號,外鍵:所在班級 )

  • 學(xué)號 姓名 性別 年齡 所在班級
  • S001 小明 男 20 C001
  • S002 小王 女 19 C002
  • S003 小朱 男 21 C003

課程表(主鍵:課程號)

  • 課程號 課程名 課時 學(xué)分
  • K001 PS 20 5
  • K002 瑪雅 25 6
  • K003 數(shù)據(jù)庫 30 10

教師表(主鍵:編號)

  • 編號 職稱 姓名 性別 年齡
  • T001 助教 李老師 男 30
  • T002 講師 朱老師 女 33
  • T003 教授 王老師 男 43

學(xué)生選課關(guān)系表

  • 編號 學(xué)號 課程號 成績
  • SK001 S001 K001 80
  • SK002 S001 K002 76
  • SK003 S002 K001 89
  • SK004 S003 K002 90

教師任課關(guān)系表

  • 編號 教師號 課程號 時間
  • TK001 T001 K001 16:00
  • TK002 T001 K002 14:00
  • TK003 T002 K001 10:00
  • TK004 T003 K002 15:00

二、說說電商

現(xiàn)實生活

我打開淘寶,登錄我的賬戶,查看了一下昨天下的單快遞到哪里了,然后又逛了逛,把幾個中意的小家電放到購物車?yán)锩妫@次錢不夠了,下次再買,嘿嘿。

ER圖

通過上面簡短的描述分解出幾個實體,分別為用戶、訂單、購物車、商品、供應(yīng)商。出現(xiàn)了幾組關(guān)系,分別為一個用戶會有多個訂單(1對多)、一名用戶只有一個購物車(1對1),一個購物車選購多種商品,同時一個商品可能存在多個用戶的購物車中(多對多)、一個供應(yīng)商可以供應(yīng)多種商品,一個商品只能屬于一個供應(yīng)商(多對1)。

關(guān)系數(shù)據(jù)庫

同理,根據(jù)ER圖映射到數(shù)據(jù)庫表,實體首先映射,然后再映射關(guān)系,1對1、1對多以及多對1以主外鍵的形式進(jìn)行關(guān)系映射,多對多以新增一個關(guān)系表來進(jìn)行關(guān)系映射。根據(jù)ER圖創(chuàng)建表如下:

用戶表(主鍵:用戶ID)

  • 用戶ID 用戶名 密碼 昵稱 身份證
  • U001 USER01 *** 小馬哥 3729***
  • U002 USER02 *** 購物狂 1010***
  • U003 USER03 *** 買買買 3302***

訂單表(主鍵:訂單ID,外鍵:用戶ID)

  • 訂單ID 用戶ID 金額 狀態(tài)
  • D001 U001 500¥ 完成
  • D002 U001 600¥ 派送中
  • D003 U003 700¥ 待評價

購物車表(主鍵:購物車ID)

  • 購物車ID 用戶ID 總價 優(yōu)惠價
  • C001 U001 50¥ 45¥
  • C002 U002 150¥ 120¥
  • C003 U003 50¥ 40¥

供應(yīng)商表(主鍵:注冊號)

  • 注冊號 名稱 聯(lián)系人
  • G001 xx電器公司 高先生
  • G002 yy洗化公司 李先生
  • G003 zz服裝公司 王先生

商品表(主鍵:編碼,外鍵:供應(yīng)商注冊號)

  • 編碼 名稱 分類 重量 單價 供應(yīng)商注冊號
  • P001 熱水壺 家電 1kg 50¥ G001
  • P002 洗衣粉 洗化 3kg 20¥G001
  • P003 毛衣 服裝 400g 150¥G002

選購關(guān)系表

  • 編號 購物車ID 商品編碼
  • X001 C001 P001
  • X002 C001 P002
  • X003 C002 P001
  • X004 C003 P002

三、你真的理解1對1、1對多和多對多嗎?

要想徹底理解這三類關(guān)系,不能只讀理論定義,而是從SQL查詢結(jié)果出發(fā),來從實踐層面加深理解。

1對1,在任意一張表中添加外鍵

1對1的意思是指第一張表中的某條記錄,根據(jù)主外鍵關(guān)聯(lián),只能查詢到另一張表中的0條或者1條記錄,同時表中的所有其他記錄都滿足這個特性,反之亦然。

1對1時,需要添加一個外鍵,外鍵添加到任何一張表中都可以。

1對多,1方屬于主表,多方屬于從表,在從表添加外鍵

1對多的意思是指第一張表中的某條記錄,根據(jù)主外鍵關(guān)聯(lián),能查詢到另一張表中的0條、1條或者N條記錄,同時表中的所有其他記錄都滿足這個特性,反之是多對1。

1對多時,以1方為主表,多方為從表,在多方添加一個外鍵。

多對多,新增一張關(guān)系表

多對多的意思是指第一張表中的某條記錄,根據(jù)主外鍵關(guān)聯(lián),能查詢到另一張表中的0條、1條或者N條記錄,同時表中的所有其他記錄都滿足這個特性,反之亦然。

多對多時,要新增一張關(guān)系表,以記錄多對多的數(shù)據(jù)關(guān)系,舉個栗子:

課程表(主鍵:課程號)

  • 課程號 課程名 課時 學(xué)分
  • K001 PS男 20 5
  • K002 瑪雅 25 6
  • K003 數(shù)據(jù)庫 30 10

教師表(主鍵:編號)

  • 編號 職稱 姓名 性別 年齡
  • T001 助教 李老師 男 30
  • T002 講師 朱老師 女 33
  • T003 教授 王老師 男 43

教師任課表(多對多關(guān)系衍生出來的表)

  • 編號 教師號 課程號 時間
  • TK001 T001 K001 16:00
  • TK002 T001 K002 14:00
  • TK003 T002 K001 10:00
  • TK004 T003 K002 15:00

如果大家有興趣,可以試著分析下面ER圖如何建表,下篇文章公布答案。

【本文為51CTO專欄作者“朱國立”的原創(chuàng)稿件,轉(zhuǎn)載請通過作者微信公眾號“開發(fā)者圓桌”獲取聯(lián)系和授權(quán)】

戳這里,看該作者更多好文

 

責(zé)任編輯:武曉燕 來源: 51CTO專欄
相關(guān)推薦

2011-11-16 16:12:33

信息圖手機(jī)游戲移動游戲

2010-07-05 17:44:31

ER圖與UML圖

2011-08-08 09:09:44

蘋果iCloud

2013-05-29 10:58:28

移動開發(fā)者Node.js信息圖

2017-06-27 14:32:06

大數(shù)據(jù)繪制統(tǒng)計圖數(shù)據(jù)可視化

2011-03-23 14:44:32

開發(fā)者游戲Android

2010-12-31 11:10:32

iDatacenter蘋果

2012-06-13 01:23:30

開發(fā)者程序員

2014-07-07 09:44:05

前端前端渲染

2023-02-03 09:52:10

開發(fā)者框架GoFrame

2019-09-09 14:33:17

開發(fā)者技能算法

2015-07-13 10:23:23

Java圖解

2013-03-11 11:20:05

2017-03-31 20:16:53

華為開發(fā)者聯(lián)盟

2018-06-13 10:08:05

蘋果數(shù)據(jù)開發(fā)者

2010-06-28 15:53:34

UML圖

2011-03-31 15:31:18

PayPalAndroid

2022-05-09 11:15:05

RocketMQPULL 模式PUSH 模式

2022-07-20 11:05:24

Dockerfilebuildpack云原生

2013-10-30 12:51:34

點贊
收藏

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