主鍵的故事,風趣描述

2021-04-18 21:50:52 字數 2142 閱讀 9258

如何理解主鍵,我們用故事來描述

2023年8月8日,在北京****降生了乙個漂亮的小女孩。接生的阿姨說,她的聲音這麼大,好象想要全世界的人都聽到。

後來,她的父親為她取了乙個很好聽的名字,叫「王菲」。於是,所有的小朋友就叫她「王菲」,「王菲」就是她童年的主鍵。

在她上初二的時候,認識了二班另乙個叫「王菲」的同學,而且和她同一天生日。不過,同學們常常將她倆弄錯,後來,就分別叫她們「大王菲」和「小王菲」。「大王菲」就是她在同學們心目中的主鍵。

在大王菲18歲的那一年,她領到了她的身份證。從此,她有了新的身份標識「100321690808022」,這一標識可以唯一區別中國大陸的每乙個人。同時,原來二班的「小王菲」也領到了她自己的身份證,「100321690808006」。於是,人們就可以用身份證號,唯一標識兩個「王菲」了。身份證號就是她成年後的主鍵。

由於她的歌唱的非常好,沒多久就成了歌星。後來她去了香港發展,娛樂公司非要將她的名字更改為「王靖雯」,雖然她並不喜歡這個名字,但為了事業的發展還是同意了。「王靖雯」就成了她在娛樂圈裡的主鍵。

「王靖雯」的歌打動了許許多多的歌迷,很快就成了歌壇天後。歌迷們將「王靖雯」這一主鍵與無數條動聽的歌曲記錄關聯在了一起,並形成了乙個龐大的歌迷資料庫。

沒多久,王靖雯和乙個彈電結他的小子相愛了。那小子說,還是「王菲」這個名字好聽,於是,「王靖雯」又變回「王菲」了。主鍵被那小子修改了,這下麻煩大了。歌迷們都糊塗了,是將她的歌關聯到「王菲」還是「王靖雯」呢?這一主鍵的修改,導致歌迷資料庫的一次大混亂。

再後來呢,她和那個彈電結他的小子結婚了,香港**將他們的身份證號碼,用結婚證書關聯起來。這本也算一樁好事,可是,月老在酒醒之後發現了這一錯誤,就將關聯的記錄刪除了。陰差陽錯,命運使然,她和那個彈電結他的小子只好分手了。

但是,正如接生的阿姨說的那樣,她的聲音的確讓全世界的人都聽到了!

講完這個故事之後,我們是否能領悟到資料庫設計的一些哲理呢?

什麼是主鍵?

關聯式資料庫說,為了唯一區分表的每一行記錄,必須為表確定乙個主鍵。主鍵可以是乙個或多個列組成,這些主鍵列的值不能重複。主鍵是兩個表進行關聯的基礎,所謂「關係」體現的是乙個表的字段與另乙個表的主鍵的關聯。

在日常的應用專案開發中,我們常常都會面臨「該拿什麼欄位來做主鍵」的難題。

用名字做主鍵?一班的「王菲」和二班的「王菲」可能重複。

用身份證號做主鍵?在大陸也許不會重複,去香港後,人家卻不認。本不相信第二代身份證號會重複,但俺的一位同事正好撞上!

同樣,主鍵值的更新也是麻煩事兒。「王靖雯」變成「王菲」那段日子,貨架上一張唱片是王靖雯的,另一張又是王菲的,許多歌迷還以為又有新人出現了。

請不要說可以級聯更新,將你那個做主鍵的字段加長兩位試試?想當年,當身份證號從15位增加到18位時,給銀行、**、**、企業...等多條戰線上的兄弟們製造了怎樣的痛苦啊!

為什麼會出現這些問題呢?

原因就是:錯誤地把物件屬性當作物件標識!

物件屬性和物件標識都是物件資料庫中的概念。

什麼是物件屬性呢?

就是業務邏輯上涉及的任何可變資訊,什麼「姓名」、「性別」、「身份證號」、「訂單號」...通通都是物件屬性。物件屬性總會變化的,只是有些變得快,有些變得慢而已。

物件標識是啥?就是唯一區分資料物件的鑑別符,物件標識存在的唯一目的就是區分物件,除此之外沒有任何業務邏輯上的意義。

不管王菲的屬性值怎樣變化,但王菲還是王菲,不是二班的那個「王菲」。也就是說,王菲的靈魂未變,她是不會改變的,就象哲學上所說的「不以人的意志為轉移」。這種唯一表示物件本身的東西,就是物件標識!

物件標識是唯一的。也就是說,即使兩個物件,他們的屬性完全一樣,但它們的物件標識是不同的。畢竟,同名同姓甚至同一天出生的大王菲和小王菲是兩個不同的人。

物件的標識是永恆不變的。一旦物件產生,它的標識就自然地、唯一地產生了。儘管王菲換了名,身份證號也變過,但王菲的物件標識未變。即使到了下個世紀,她的物件標識也將依然存在於歌迷們的們的心中。

物件的標識是描述關係的基礎。王菲唱的歌是王菲唱的,不是初二二班的那個「王菲」唱的。王靖雯唱的歌就是王菲唱的歌,有的歌迷只將歌曲和歌手的人名關聯起來,難怪會出混亂。香港**也犯相同的錯誤,將王菲的身份證號碼這一內部屬性,跟那個彈電結他的小子關聯起來,也許就是命運的錯誤。

那麼,我們在設計資料庫結構時,到底該用什麼來做主鍵呢?

物件資料庫說,主鍵只能是物件標識!

很風趣的段子

大家喝的是啤酒。這時你入座了。你給自己倒了杯可樂,這叫低配置。你給自已倒了杯啤酒,這叫標準配置。你給自己倒了杯茶水,這茶的顏色還跟啤酒一樣,這叫木馬。你給自己倒了杯可樂,還滴了幾滴醋,不僅顏色跟啤酒一樣,而且不冒熱氣還有泡泡,這叫超級木馬。你的同事給你倒了杯白酒,這叫推薦配置。人到齊了,酒席開始了。...

用 Promise 描述乙個悲傷的故事

那天我正在學習 promise,突然家裡打 過來說,家裡蓋房子要錢。我工作這麼多年了,從事著別人眼中高薪工作,於是滿口答應下來。但是由於我並沒有錢,於是我跟家裡說,等過幾天我再打錢過去。我也好乘著這幾天想想辦法。首先我找到我的同學李雷,他現在乙個部門經理了,我想應該他應該有錢。我跟他說明了借錢的意向...

乙個能描述erp系統的小故事。

妻子 當然可以,來幾個人,幾點來,想吃什麼菜?丈夫 6個人,我們7點左右回來,準備些酒 烤鴨 番茄炒蛋 冷盤 蛋花湯 你看可嗎?商務溝通 妻子 沒問題,我會準備好的。訂單確認 妻子記錄下需要做的選單 mps計畫 具體要準備的東西 鴨 酒 番茄 雞蛋 調料 bom物料清單 發現需要 1只鴨蛋,5瓶酒,...