最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

mysql神功 1.2 表的構(gòu)成

2022-06-30 09:58 作者:孫興華zz  | 我要投稿

從上一篇文章中,我們了解到什么是關(guān)系數(shù)據(jù)庫,我們要講的MySQL就是關(guān)系數(shù)據(jù)庫。

https://www.bilibili.com/read/cv17294961

關(guān)系數(shù)據(jù)庫定義:是由多張能互相聯(lián)接二維行列表格組成的數(shù)據(jù)庫。

如果這些表都是獨(dú)立存在,沒有相互聯(lián)接的意義,那就談不上數(shù)據(jù)庫了,最多就是個(gè)工作簿,關(guān)于能互相聯(lián)接這個(gè)問題,我們今后就默認(rèn),不再重復(fù)去提了。


# 為什么不先講軟件的安裝?

答:會講的!不要著急,現(xiàn)在還沒到那一步。


# 為什么我不先講數(shù)據(jù)庫的組成?

答:會講的!組成都需要你先理解表的結(jié)構(gòu),好比一個(gè)國家可以什么都沒有,但是至少要有一個(gè)人,一個(gè)人都沒有的就不能稱為國家。講了一堆齊家治國平天下的大道理,結(jié)果一個(gè)人都沒有,那還有什么意義嗎?有人會問:國家不需要土地嗎?比如《海賊王》中的空島就建立在空中,魚人島就建立在海底。這些知識可以通過百度百科查詢到。如圖1-13


圖1-13
如圖1-14

如圖1-14,上一篇文章中我們提到了每個(gè)綠圈都是一張表,他們之間可以根據(jù)自己的目的去建立聯(lián)系。例如,我們想得到「說別人發(fā)音不正確」同時(shí)「說不講原理坑人誤導(dǎo)人」的名單。如圖1-15

圖1-15

曾經(jīng)很多人在VBA課程中問我,兩張表取共同部分,用循環(huán)慢,用數(shù)組和字典怎么實(shí)現(xiàn)?萬一兩表的位置變了怎么辦?如果你會寫SQL語句,一句話搞定,而且SQL語句可以在大多數(shù)軟件中使用,包括ExcelVBA。


一、什么是二維表

很多人喜歡用高大尚的名詞,那我們先解釋一下名詞,防止你將來在書籍或網(wǎng)上看到名詞時(shí)"懵圈"。

1、名詞解釋

<1> 數(shù)組:前面我們了解到關(guān)系數(shù)據(jù)庫是由多張二維表組成的,你可能還會聽到關(guān)系數(shù)據(jù)庫是由多個(gè)二維數(shù)組組成的。

在這里二維數(shù)組就是我們說的二維表,在VBA的課程中,我們提到過維度,如圖1-16所示:

# 你不用去看VBA課程,我在這里提到VBA,只是告訴你我曾經(jīng)講過

圖1-16

<2> 集合:關(guān)系數(shù)據(jù)庫是由多張二維表組成的,你也會聽到關(guān)系數(shù)據(jù)庫是多張二維表的集合。

上學(xué)時(shí),老師說同學(xué)們自由活動……? 一段時(shí)間后,老師吹哨:“集合”!? 所有同學(xué)聚集到一起。

所以這里的組成與集合是一個(gè)意思。

2、二維表的構(gòu)成

二維表由橫向的行與縱向的列組成。每一行被稱為一條記錄,每一列被稱為一個(gè)字段,列名又叫字段名。如圖1-17

圖1-17

大家知道為什么這里沒有提到單元格嗎? 關(guān)系數(shù)據(jù)庫與Excel不同,它有一特點(diǎn):以行為單位讀寫數(shù)據(jù)。所以,在關(guān)系數(shù)據(jù)庫的二維表中,不能使用合并單元格、也不能在一個(gè)單元格寫多個(gè)數(shù)據(jù)。以下兩種情況(圖1-18)都是錯(cuò)誤的,如果你想這樣做怎么辦?回到Excel中,你可以隨心所欲。

# 如果你強(qiáng)行在一個(gè)格子里寫雙行,看看可以,但是將來操作的時(shí)候會遇到各種麻煩

圖1-18

二、什么是數(shù)據(jù)類型

我們都知道,教師和商人是不一樣,教師隊(duì)伍中是不能讓商人混入的,因?yàn)榻處熓窍扔嗽儆?,正牌教師看到網(wǎng)絡(luò)上優(yōu)秀且免費(fèi)的學(xué)習(xí)資源,會推薦給同學(xué)們。但是,商人只會在免費(fèi)資源下冒充學(xué)生留言,貶低免費(fèi)優(yōu)質(zhì)的學(xué)習(xí)資源,潛移默化的推薦根本不知道質(zhì)量的收費(fèi)課程。圖1-19

圖1-19

我們看病要去正規(guī)醫(yī)院,千萬拿自己和家人的生命安全開玩笑,杜絕那些沒有從醫(yī)資格但是擅自從醫(yī)的黑診所。圖1-20

圖1-20

很明顯,不是一回事,就不能放在一起。那我問你,姓名和性別是一回事嗎?圖1-21

圖1-21

你肯定會說,誰會寫成這個(gè)樣子,這明顯是寫錯(cuò)了,那下面的就是你“故意”了。圖1-22

圖1-22

你知道很多單詞的發(fā)音,你知道程序員規(guī)則用英文變量,難道你不知道阿拉伯?dāng)?shù)字和漢字是不一樣的嗎?阿拉伯?dāng)?shù)字可以進(jìn)行四則運(yùn)算,漢字不可以。規(guī)范二維表的數(shù)據(jù)類型是最重要的工作。在后面的課程中,我們會重點(diǎn)講解這方面的知識。你如果做不到數(shù)據(jù)類型的規(guī)范 等同于 醉酒駕車,最終害人害己。

# 在數(shù)據(jù)庫中,數(shù)據(jù)類型會約束你的行為,當(dāng)一列(字段)被定義成數(shù)值類型后,你就不能再寫入文本型數(shù)據(jù)了。

三、主鍵與外鍵

手拉手,是一方是主動,另一方是被動。雙方都主動那叫握手。圖1-23

圖1-23

在數(shù)據(jù)庫中,一對多關(guān)系叫拉手,一對一關(guān)系叫握手。

多對多關(guān)系常用方法是一個(gè)小朋友主動拉手兩個(gè)小朋友變成兩個(gè)一對多關(guān)系(或者反過來,兩個(gè)小朋友主動拉一個(gè)小朋友),當(dāng)然方法有很多種。圖1-24

圖1-24

什么是一?什么是多?一會兒我們就知道了。

主動去拉對方手的叫主鍵,被動被對方拉手的叫外鍵。

好比,我們有花名冊成績表這兩張表,想得到一張目標(biāo)表。圖1-25

圖1-25

花名冊成績表是沒有關(guān)系的,要拉手才可以建立關(guān)系。

圖1-26

從圖1-26,我們看到了什么?對!DAX中的擴(kuò)展表,DAX是基于SQL思維研發(fā)的,如果SQL是馬里奧賽車,那么DAX可以稱為跑跑卡丁車。

1、主鍵:是表中的唯一標(biāo)識 , 特點(diǎn):不為空不重復(fù)、不易發(fā)生改變。圖1-27

學(xué)號不易發(fā)生改變,且不為空不重復(fù),所以學(xué)號可以做主鍵。但是姓名、科目、成績不行。很多人在VBA課程中問我問題,如果同名怎么辦?學(xué)號、商品編碼、身份證號、護(hù)照號..... 了解一下唄。如果你是學(xué)校、單位,肯定不牽扯這個(gè)問題,但是有一種特殊情況,就是"隨份子",你去參加婚禮,張三1000元,李四500元,王五2000元,沒有登記身份證號的。我的建議是,男方女方分兩個(gè)賬簿登記,遇到同名,能知道是誰的親戚朋友。再復(fù)雜點(diǎn),你就留手機(jī)號碼吧。

圖1-27

有些小伙伴會問,如果學(xué)號有重復(fù),那怎么設(shè)置主鍵?圖1-28

圖1-28

# 主鍵并不是非要不可,可以從業(yè)務(wù)需求和查詢效率上來權(quán)衡。后面我們會詳細(xì)講解。

2、外鍵:

確定好主鍵后,我們來找外鍵。外鍵的字段名可以與主鍵不一致,但是內(nèi)容不行。如圖1-29,護(hù)照號和學(xué)號沒關(guān)系,除非你有一張表,可以展示每個(gè)學(xué)號對應(yīng)的護(hù)照號,否則我怎么知道哪個(gè)學(xué)號對應(yīng)哪個(gè)護(hù)照號呢?學(xué)號和學(xué)生編號就可以。

圖1-29

# 有一種特殊情況,外鍵連接外鍵,這種多對多關(guān)系是本人強(qiáng)烈反對使用的,這件事以后再說。幾乎全部有教師資格證的老師在講數(shù)據(jù)庫時(shí),都會跟學(xué)生說,不要直接將兩個(gè)多端表連在一起。例如:安為霞老師

外鍵還有一個(gè)問題,一般情況下外鍵中的項(xiàng)目是不能超過主鍵的品種數(shù)(名詞:參照完整性)。如圖1-30,學(xué)生編號A04在學(xué)號中沒有,將來在你的操作過程中肯定會出現(xiàn)問題,沒這個(gè)學(xué)生哪來的成績?雖然我們可以處理它,但是,你應(yīng)該根據(jù)自己的業(yè)務(wù)邏輯創(chuàng)建你的表格,把一切可能發(fā)生的錯(cuò)誤,扼殺在搖籃中。你就這樣想,華為專賣店買不到小米手機(jī),左圖就好比華為專賣店的商品,右圖就好比銷售記錄,如果銷售記錄中出現(xiàn)了自己沒有經(jīng)營的商品,那就是系統(tǒng)亂套了。當(dāng)然,這需要與你的業(yè)務(wù)邏輯相關(guān)聯(lián),我再舉個(gè)例子,假設(shè)左表為刑滿釋放人員名單,右表是剛剛抓獲的嫌疑人,不可能這次抓的所有嫌疑人都是刑滿釋放人員。

圖1-30

# 關(guān)于主鍵與外鍵的創(chuàng)建和使用,今后課程中會詳細(xì)講解

四、一端(維度表)與多端(事實(shí)表)區(qū)別

并不是說一端表永遠(yuǎn)是一端,多端表永遠(yuǎn)是多端。只是將關(guān)系連在一起,才能確定誰是一端誰是多端。圖1-31,表1的組織連接表2的組織,表1是一端,表2是多端(表1主鍵不為空不重復(fù));表2用學(xué)號連接表3學(xué)號時(shí),表2就變成了一端,表3是多端(表2主鍵不為空不重復(fù));我們試想一下,表1的性別,如果有另一張性別不重復(fù)的表與它相連接,它是不是變成了多端?同理,表3的ID字段也是一個(gè)道理。

圖1-31

一端和多端表有如下區(qū)別:

1、多端表包含一端表的屬性的值。(例如成績表包含花名冊中參加考試人員的成績,圖1-32

2、多端表包含更少的屬性和更多的記錄,而一端表包含更少的記錄和更多的屬性。(仍然可以理解為花名冊和學(xué)生成績的關(guān)系,圖1-32)

圖1-32

你設(shè)想一下,學(xué)生信息可以包含:學(xué)號、姓名、性別、身份證號、籍貫、電話、身高、體重、地址、緊急聯(lián)系人....................你就想吧,我至少能寫出50種以上。如果將這些數(shù)據(jù)反復(fù)的出現(xiàn)在成績表中,那你的數(shù)據(jù)庫容量會越來越大。圖1-33

圖1-33

造成的結(jié)果:a. 無限買服務(wù)器上的硬盤,同時(shí)還要不停的升級服務(wù)器其它硬件。? b.因?yàn)閿?shù)據(jù)太大,你從自己電腦上訪問數(shù)據(jù)時(shí),會增加大量的時(shí)間,甚至你的電腦跑不動。

3、多端表垂直增長,而一端表水平增長。(招生完畢后,學(xué)生花名冊不會再大量增加人員,增加學(xué)生是個(gè)例,例如轉(zhuǎn)學(xué),但是學(xué)生資料可以隨需求增加,比如以前沒有統(tǒng)計(jì)學(xué)生地址。成績表每次考試都會增加記錄,也就是增加行數(shù))

4、多端表包含一個(gè)外鍵,而一端表包含一個(gè)主鍵。(復(fù)合主鍵也就是多主鍵以后再講)

5、建議在創(chuàng)建多端表之前先創(chuàng)建一端表。(沒有學(xué)生哪里來的成績呢?)

6、如果想化繁為簡,盡量遵循更多的一端表和更少的多端表。(這是過來人的忠告,不僅是容量低,多端表越多,你將來拆表的機(jī)會就越大,你對業(yè)務(wù)充分理解還行,可是現(xiàn)在,大多數(shù)新人都對自己的業(yè)務(wù)不理解,你根本就不會拆表,你把多對多關(guān)系直接建立以后,就只會飆名詞了:內(nèi)層、外層、隱形、顯形、篩選覆蓋、數(shù)據(jù)沿襲、循環(huán)依賴.......)

圖1-34 一對多關(guān)系,擴(kuò)展表簡單明了,多對多現(xiàn)在你能看懂,因?yàn)閿?shù)據(jù)簡單,當(dāng)表與表之間關(guān)系復(fù)雜且數(shù)據(jù)較多時(shí),出錯(cuò)概率就是大幅提升。

圖1-34

前五點(diǎn),你現(xiàn)在必需謹(jǐn)記!第六點(diǎn),我們今后會用事實(shí)證明。

mysql神功 1.2 表的構(gòu)成的評論 (共 條)

分享到微博請遵守國家法律
图木舒克市| 连江县| 赤城县| 汝阳县| 黔东| 南投市| 托克托县| 道真| 博野县| 鄄城县| 德格县| 滕州市| 虎林市| 瑞安市| 瑞金市| 祁连县| 建宁县| 泾阳县| 文山县| 湘阴县| 明光市| 信丰县| 台中县| 台南县| 澎湖县| 崇文区| 汾西县| 芦山县| 德州市| 淳安县| 千阳县| 阳原县| 彰化县| 大渡口区| 元阳县| 富锦市| 东辽县| 苍梧县| 元谋县| 客服| 佳木斯市|