嘿，大家怎麼了？
所以對於那些不認識我的人，我的名字 是 Caleb，來自視頻製作者 Caleb，
也。和 kill crate comm 所以我做了一個設計 系列不久前是我的第一個視頻系列
在 YouTube 上，大約有 25 個視頻。然後 我繼續製作了一個 67 部分的視頻系列
在 MySQL 上。我還做了一些其他的 ，我有 100 多個數據庫視頻，我想要
為了，我想再次嘗試解決這個問題 ，試圖讓你更好地解釋事情，
並把你帶到一個新的技能水平 。那麼這門課的難度是多少
將？這將是為初學者。那你為什麼 要使用你最喜歡的系列
平台、程序、應用程序依賴於後端 數據庫。這就是我們存儲信息的方式
在這個世界上，我們所做的一切都是 由數據庫驅動的。所以重要的是你
知道如何正確實施數據庫概念 設計，知道如何正確構建
數據。這樣，您就可以獲得最佳優化 的數據庫，這將使您與眾不同
IT 團隊的其他成員或您的其他同學，它 將為您提供獲得所需的技能
那個工作或任何你想用它做的事情。 另外，如果你只是一個商人，或者
你有你自己的項目，你需要學習如何 建立一個網站，或者你需要
一個存儲您正在使用的所有信息的數據庫 ，這個系列會很有幫助。基本上，
數據庫設計是數據庫的基礎，你 應該知道如何正確構建
數據，這個系列不會非常具體 地針對某個數據庫的樣本
管理系統。所以這不像 MySQL 數據庫 設計。這不像甲骨文，這
不是 SQL Server，這不是您使用的其他 任何東西，這將是通用數據庫
設計。那麼你就可以掌握這些技能 並將它們應用到任何數據庫中
你正在研究的是相關的，我的 意思是通過這個系列，你會
真正明白這意味著你沒有得到 那個。所以第一部分將是
黑板上的很多概念，我不 會喜歡寫成噸的腳本
在這。所以不用擔心，看不 到代碼的地方不會感到困惑
在屏幕上。因為現實中很多數據庫 設計不是在電腦上完成的
首先，首先，你必須考慮一下 。然後你只是畫你的計劃，
無論是在您的腦海中還是在文檔上。或者 ，如果您使用數據庫設計程序。一世
使用黑板，因為我可以輕鬆地 繪製概念、想法、數據連接方式，
以及所有這些。所以很多這些數據庫 視頻，他們將在這個黑板上
因為這就是你真正需要的。我們不 是我們不是在編寫數據庫，我們是
設計一個數據庫。設計是藝術， 你畫它，你設計它。所以很多
無論您將在數據庫中使用什麼 ，本視頻中的概念都會很有用。
所以數據庫設計。在說數據庫設計 之前，我們先說一個數據庫
因為如果我們不知道數據庫是什麼，我們 就無法設計數據庫，那甚至不知道
有道理。那麼什麼是數據庫呢？這是一 個非常好的問題。我很高興你問。
好吧，我實際上可以告訴你什麼是數據庫 。這就是這個視頻的內容。所以
數據庫是存儲數據的東西。好吧， 另一個模糊的術語數據。而且我要
你們對伙計們，我希望你們所有人都考慮 數據，非常廣泛，不要想得太具體。
將數據視為我們可以存儲的任何東西。在數據庫 或任何我們可以寫下來的東西中。
任何有價值的東西都可以是任何 東西。數據可以是每個客戶的列表
自 1995 年以來您的商店的列表。或者 它可以是在線購物中每筆交易的列表
中央。或者它可以是每個用戶及其用戶名 的列表。或者它可以是一個列表
每一個天氣事件。自 1927 年以來幾乎 可以是任何東西。它沒有
與
具體人物數據是如此廣泛。所以數據庫 顯然也很廣泛，因為數據庫
存儲數據。所以是的，就這麼想吧。 這裡我們有一個鹼基數據庫，其中
我們存儲
數據。很簡單。
好的，現在，這很模糊，我不 確定這是否很有幫助。所以
現在讓我們從技術角度將其分解 為我們所看到的。一切都在
這個世界，不是一切，但幾乎一切都是 從後端數據庫運行的。它是什麼
存儲我們所有的信息。例如，我 喜歡使用網站，非常示例，因為
他們很清楚。他們很容易 理解這個概念。當你
去一個網站，然後你註冊，你，你給 他們一個用戶名，你給他們一個密碼，
然後你給他們發一封電子郵件，所有 這些，當你下次登錄時，它允許你
登錄，好吧，那個網站是如何記住您 的用戶名、電子郵件和密碼的？
那是因為你在註冊時輸入的 所有這些信息，所有這些
值被提供給數據庫。所以這裡可以 說是我們的數據庫。對不起我的瘋狂
手寫，但不要擔心。這 就是所謂的前端。
據說這是後端。那是因為我們不 一定能看到後面發生了什麼
在這裡，我們可以輸入我們的電子郵件、我們的 用戶名和密碼，然後它們就可以被存儲起來
在這個數據庫中。這樣，當我們再次回來 並登錄時，我們會給他們一個用戶名
和一個密碼，它需要那個值，它與 數據庫一起檢查以允許您進入
帳戶。這是一個完美的數據庫示例 。所以數據庫可以存儲
信息。但它不僅限於註冊， 您可以使用它來存儲所有
您在商店的銷售記錄。也為此 繼續下去。不要把它想成
一個有限的事情，因為你可以用數據庫 做很多事情。這麼多的事情。
您可能會問的下一個問題是它 與電子表格有什麼不同，例如，
所以一個電子表格，
基本上，如果您對電子表格不太了解 ，那麼它基本上就是您所擁有的
列。然後我們有行，我們可以存儲 類似的信息，我們可以輸入
每列的值。
電子表格是
很好，如果這就是您的小公司所 需要的，請看我。但如果你想
達到任何復雜性，你可以想像 ，如果我們想選擇，比方說
這是我所有員工的電子表格，我擁有一 家擁有 100 名員工的龐大企業。
我想選擇每一個缺勤 不到三天的員工
當了至少三年的員工，我想給 他們 100 美元的獎金，嗯，
如果我有電子表格，我 就必須手動檢查每個
單一的價值，這是行不通的，因為 時間就是金錢。但無論如何，與
一個數據庫，我們可以運行查詢 來獲取這些值來找出哪些員工
已經成為會員，三年或三天 或更短的員工。所以那是
它與電子表格有何不同，基本上，如果 您有電子表格，您可以用它做什麼
有 10 名員工，或者像我很抱歉，有 10 個價值觀，這就像你可以想像的
幾秒鐘之內你所有的信息 ，那麼你可能不需要數據庫，
這取決於你。另一件事是 使用電子表格，它要么是
像所有數據或沒有數據。假設 我只是存儲了每個細節
我只有一個員工，我想要的只是 他們的姓名和地址。嗯，我們
使用電子表格無法輕鬆做到這一點。 除非我們把所有這些列都拿走
複製和粘貼以及所有這些額外的垃圾 或找到一些算法來做一些花哨的事情
Lee，如果你知道你在做什麼，你可能 可以用數據庫來做，我們可以有選擇地
選擇哪種顏色。所以我們可以只說 這兩列我們想要返回，我們可以
忽略其餘部分。最重要的是，我們可以 允許不同的用戶訪問不同的信息。
回到網站示例。我們有用戶頁面， 然後我們有一個數據庫。當這裡
你把你的用戶名、電子郵件和密碼 存儲在數據庫中。但這不是
必然是存儲在數據庫中的唯一 內容。用戶可能只能訪問
但是數據庫管理員在註冊 時可能會訪問這些事務
他們在您的購物網站上製作 的內容或觀看的內容
他們發表的評論，
多常
他們訪問網頁，你想用 它做什麼幾乎是無限的
數據庫。所以我們可以看到兩個不同 的用戶，這個人只能查看一些
數據庫中的東西。此人只能使用 電子表格查看幾乎所有內容。
這是一種全有或全無。您可以訪問電子表格 嗎？是的，我願意。嗯，這裡
這是。如果您沒有訪問權限，那麼 太糟糕了，您將一無所獲。以便
棒極了。這也是一個安全功能 ，因為你不想要這個人
獲取存儲在此數據庫中的所有 隱藏信息。所以希望
這讓事情變得非常清楚。下一 個視頻，我將討論數據如何
存儲在數據庫中。因為我不打算 在這個視頻中討論這個，
但我有點沒時間了。但為了 你的理解，如果你決定
不看第二個視頻，你會看我 關係的第二個視頻，那就是
我們得到術語關係數據庫的術語。 所以這個系列是為了所謂的關係
數據庫。
那是一種特定類型的數據庫 。這將是大部分的關係
成為您使用的大多數數據庫。 如果您正在使用數據庫設計。
我們將討論這種關係，非常基本 的。不要害怕，但這是數學，
我們不會深入研究數學，如果 你想了解更多關於數學的知識，
我的網站上有關於這方面的博客。 Caleb curry.com，正斜杠塊，廣告，
不是博客，廣告公司的廣告， 反正基本上，關係只是一種聯繫
數據之間。所以讓我們想一個愚蠢 的例子 如果我們有兩組數字
二、四，然後另一組是六、八 ，然後我們把這些組合起來
套。所以我們有點像穿過這裡 ，然後我們穿過這裡。在哪裡
這些十字架是我們的新組合。所以我們 有六個，兩個的組合，然後我們有
六、四的組合，然後是 八、二的組合，然後
四人組合。就像你可能想 知道，比如，什麼
真他媽的
這與數據庫設計有關嗎？嗯，在 某種程度上，我們做同樣的事情
關係數據庫中的數據庫設計關係 來自於這個數學概念。但
我們不是組合一組數字，而是 組合現實世界事物的屬性。
因此，讓我們將其應用於數據庫。
首先，你需要
要知道兩個術語。第一個是實體。 第二個是屬性。所以一個實體
是我們存儲關於屬性或我們存儲的東西 的數據的任何東西。所以如果一個實體
是一個人，一個屬性是他們的名字，他們 的用戶名，他們的密碼，他們的頭髮
顏色、他們的地址、他們的電話 號碼、他們的關係狀態、他們是誰
在與他們下達的訂單的關係中 ，或者不管是什麼，這取決於
關於您需要為該特定應用程序存儲 的內容。所以實體就是我們存儲的
有關的數據。屬性是我們存儲的內容 。當我們將此應用於此時，這種與
在關係中，我們有屬性類型 和屬性值。所以讓我們說
我們這裡有這個人。我們將他命名為 Caleb， 因為這是一個很棒的名字。全部
正確的。然後我們還會給他一個沒有空格 的用戶名 Caleb curry。我們會給
他一個密碼。 Pi 123. 然後在這裡 ，我們有一個表的屬性集
我們有姓名、用戶名和密碼。我們可以 建立這種數據連接，所以名稱是
Caleb 用戶名 Caleb curry 密碼，pi 123。
那講得通，
雖然從圖形上看它看起來一團糟。 所以我們將這些存儲在表中，這正是
我們對關係做了什麼。所以 我們在我們的專欄中有我們
有名字，然後我們有用戶名，然後 是密碼。不要擔心，如果你
看不懂我的筆跡你懂的。我們將其存儲 在表中。
正確的？所以這些
是我們需要與這裡的這個人聯繫 的東西。我們不小心給了 Caleb 取名
抹掉了它們，
任何。
我們就這樣吧。這就是迦勒。 我們想把這些信息存儲在這個
table，這是一種圖形方式，用於說明我們如何 在數據庫中存儲數據。所以我們
取他的名字，Caleb，我們取他的用戶名，Caleb curry，我們取他的密碼，pi 123。
我們有點明白這個，這個表格的概念， 它幾乎看起來像我們討論過的電子表格
關於上一個視頻。雖然它略有 不同，我們將討論那個
隨著時間的推移。這個傢伙是我們 存儲信息的實體。這些都是
我們需要存儲的關於此人或任何 其他人的屬性。所以我們輸入
這些屬性中的每一個的特定值 以建立屬性之間的關係，
和實體。希望這有點道理。 如果沒有，請不要驚慌
這都是我的意思，這是一個複雜的 想法。而且你不一定需要了解
設計數據庫的每一個細節。所以 我只是想解釋一些事情。和
我們會挺過去的。這些是這個人的 屬性，這個實體，一個實體是
在這種情況下，基本上我們存儲有關它 的數據的任何東西都可以是一個人，
但它也可以是訂單，可以是客戶， 可以是客戶，可以是員工，
雇主，不管是什麼，它甚至不 必是一個人。所以現在，關係
想法，你有點明白我們只是 在屬性之間建立聯繫，
和實體，實體屬性的值， 我們將其輸入到數據庫中。
也就是說，這是一個很弱的解釋 。但老實說，這並不重要
非常適合進入基本的數據庫設計。因此 ，如果您想了解更多相關信息，只需
查閱關係數據庫設計，你會明白 的。所以現在，我們有了實體
這邊。然後我們有屬性。所以就 表格而言，你可能知道，行
和列，您可能不知道它們 是什麼。我要告訴你這個
這裡是一個粗略的。您會看到此處的 空間可能已用完。我認為我們很好。
是的，我們很好。所以這個，所有這些值 都是一行。所以一行是所有的屬性
特定實體的值。所以這一 行會更容易像這樣，這個
行，指向那個實體，那個人。 很簡單。一列是所有的值
特定的屬性類型。所以屬性類型 是用戶名，我們可以有另一個人
Billy Joe，他的名字，他的密碼可以 在你裡面，他的名字可以是bill。
這
是我們桌子上的另一個人。所以這 是在談論一個不同的人，我們有
這邊的這個人。很酷，或者這一 行正在談論這個實體。用戶名
是一列，其中包含所有屬性類型 username、So Caleb curry、Billy Joe、
如果我們將更多的值放入表中，則 更是如此。好吧，又來了，有點亂，
所以我只是要清理一下。
擦除。
所以簡單總結一下，我們有 一個實體類型。就是這樣
你想知道實體類型的詞，它 談論實體我只是我只是告訴
你很快就會知道實體類型是什麼 ，實體類型。然後我們有屬性
類型。所以基本上，類型意味著它是一 個類別。所以這個人是一個特定的實體，
那些名叫 Caleb 的人，那是一個實體 ，那是那個人，然後我們也有
實體，喬或比利或他的名字 。那是分開的兩個人
實體，儘管您可以看出它們 有些相似。他們都在
同一張桌子，他們都在談論 用戶名、密碼等。所以實體
類型是用戶，特定實體可以是 Caleb、bill、Jamie、Jake 或任何人
是。所以實體類型基本上是我們 存儲的實體的類別。類別
是一個用戶，其中的所有實體都應該是 一個用戶。所以我的相機停了下來
由於某種原因自行錄製，這非常 煩人。但無論如何，我們的實體
type 是實體的類別，例如用戶，每個 實體都應該是一個用戶。迦勒
是一個用戶，比利是一個用戶，我們可以 有吉米約翰，我們可以有凱瑟琳，我們
可以有凱特琳，我們可以有卡桑德拉 ，我們可以有，你明白了。屬性
type 基本上是屬性的類別。所以我們 有用戶名，我們有名字，我們
有密碼。這些是屬性類型，因為 我們實際上沒有特定的
價值。如果喜歡，沒有人的名字，他的名字 。當我們實際給出這些特定值時，它們
不再成為類型，而是成為具體的例子。 所以這個傢伙在這裡，這是我們的
實體，我們可以存儲。所以基本上，這 是我們的實體，我們可以存儲關於
這個實體，用戶名可以是 Caleb curry。
名字可以是 Caleb。密碼可以是
圓周率 123。
所以這些是關於那個人的特定屬性 。現在所有這些都像複雜的術語，
等等，等等，等等，等等，誰在乎呢？ 真正重要的是你能不能把它放進去
如果你知道這些術語，人們可以理解 誰真正關心誰，但我的意思是，我是
確保你的教授關心。所以無論如何都要這樣做。
桌子，
列或屬性，所以我們可以有，例如 ，一個 ID、一個密碼、一個用戶
姓名和電子郵件，我們可以繼續使用地址、 電話號碼和其他任何內容。
然後一排
是我們為這些屬性中的每一個賦予 一個值的地方，所有這些都在談論
一個實體。就像這個傢伙，就在這裡的這個 傢伙？嗯，他的ID，比如72，他的用戶名
是 Caleb curry，他的郵箱很酷，guy@hotmail.com
廢話，廢話，廢話，廢話，廢話，所有這 一行都在談論這個人。所以基本上，只是
認為屬性是列。實體是單獨 的行。甜蜜，那麼這整件事
就在這兒。這是表，那是實體 類型。所以實體類型會
成為用戶，因為該表中的每一行都 應該是用戶。哦，還有一件事
我想提一下，數學中的另 一個名字
連續
是一個元組，或元組。我覺得這很可怕 。我真的不知道。但這是另一個術語
你會聽到的。所以是的，tupple 是一行 。謝謝你。再見，抱歉喜歡大喊大叫
一切都激烈，但
樂趣。好的。
這將是關於數據庫管理系統。而且 因為這個系列過於相關
數據庫設計，它會專門是關係型數據庫 管理系統。我們會談談
關於區別。那麼首先，讓我們 籠統地談談，什麼是數據庫
管理系統。所以這通常縮寫為 B dB，S 表示數據庫管理系統。
和關係數據庫管理系統 是一樣的，除了它以
R. 所以我們的 DBMS，所以我會寫它 ，因為它更容易。
好的，所以
我們在上一個視頻中離開的地方，我們學到了什麼 ？嗯，實際上，就像兩個視頻一樣，我們
了解到數據庫可用於存儲大量信息 。所以我們有這個數據庫，
把它想像成一個桶，裡面堆滿 了大量信息。所以喜歡
用戶名，以及密碼和垃圾，以及交易 。所有這些東西都列出來了
在這裡。正如您在上一個視頻中看到的 ，它看起來非常類似於電子表格。所以
是什麼讓它與眾不同，我們擁有所有這些數據 。現在我們該怎麼辦？我們做什麼？只是
看它？不，不知道，顯然我們用 它做很酷的事情。顯然，我不
甚至知道那是什麼。所以我們可以 做的是我們可以運行所謂的查詢。
所以一個查詢，有點像搜索我們的數據 ，用它做一些事情，然後給出
我們很酷的結果。所以一個數據庫管理 系統，使用我們的數據來管理它，允許
我們以人性化的方式看待它，做一些 很酷的事情，比如尋找價值，
改變數據的外觀，改變數據 的存儲方式，等等。例如，
我們有 60 億用戶，好吧，僅舉 個例子。我們想刪除任何人
誰已經一年沒有活動了。好吧，沒有 數據庫管理系統，我們只有
是一堆數據。我們仍然必須手動 完成所有這些並刪除所有這些。
所以數據庫管理系統讓我們可以 輕鬆地運行查詢，好吧，
選擇一年內未上線的所有人 。然後我們可以刪除所有
基本上，基本上只是刪除一年 內沒有x活躍的所有人。基本上，
關係數據庫管理系統只是 數據庫管理的一個子類別
系統，一種設計用於關係數據庫 的特定類型。所以是的，不是
有很大的不同。所以只是這些 數據庫管理的一些東西
系統可以做到。第一個顯然是運行 花哨的查詢來給我們特定的結果，
比如給我們所有在 2011 年 6 月 10 日之前處理的交易。那就是
我們可以用數據庫管理系統做一些 奇特的事情。它還允許我們改變
我們的數據呈現方式。這就是所謂 的視圖機制。
所以基本上，如果你的機制允許我們 改變我們數據的表面外觀。
所以當我們將我們的值存儲在我們的數據庫中時 ，我們可能會把它放在它的位置，我們要去
存儲一個 ID，我們將存儲一個用戶名 ，我只是要縮短這些
很容易。我們要存儲用戶名， 我們要存儲密碼，我們要
存儲電子郵件。然後我們將存儲 街道地址、州、城市等。但
讓我們說這就是現在的情況 。這是實際的表結構
為了
用戶表。所以這裡是我們所有的用戶 屬性。擺脫這個。那麼清楚了嗎？
好吧，通過視圖機制，我們能夠 在表面獲得這些數據的不同視圖
等級。例如，如果我們有兩個人訪問 這些數據，一個，他的名字是什麼
他、吉姆和另一個？讓我們命名她，簡 ，即傑米、吉姆和傑米。
讓我們說吉姆，
他並不真正關心電子郵件，因為 他所做的只是找出信息
關於用戶名和密碼。所以他可能會 做的是他可能會創造一個新的觀點
只有用戶名和密碼。再一次，我只是 縮短這些，只是為了讓事情
簡單起見，我可能不會像那樣 將它們放入數據庫中，除非
你想，但無論如何。
所以這
是具體的視圖，我們可以選擇用戶名 和密碼。
但
數據的內部結構沒有改變 。這仍然是它的存儲方式
數據庫。另一方面，傑米關心 ID 和電子郵件。所以她創造
一個新的觀點。
就這樣。所以這，
這些都稱為視圖。所以視圖機制允許 我們創建不同的視圖。這
可用於數據庫管理員，也可 用於其他應用程序，例如
我們有一個網頁，我們可能想要。我們 可能只希望用戶能夠訪問他們的用戶名，
密碼，和電子郵件。但是諸如他們註冊 的日期之類的東西可能都是私人的
在數據庫上。那麼我們就可以創建 一個視圖，為他們提供他們的信息
可以訪問，這是一個安全層。所以基本上 ，如果我們有一個龐大的數據庫
一個企業，好吧，數據庫管理員 將有權訪問這一切。總統
的公司可能會訪問這一切 。但是做廣告的人，
他們可能只需要知道有關 廣告的信息，監控的人
在您的網站上發表評論，他們 不需要訪問銷售和交易，
他們將需要訪問該表以進行 評論。這是一項安全功能
視圖機制允許我們通過給出不同 的視圖來做。所以不是每個人
使用數據庫的人有創建新視圖 的特權，只是因為您可以
訪問數據庫並不意味著您可以 執行諸如更新數據、更改
它的結構方式等等，這可能 只是管理員的事情
或者企業的所有者將能夠做到。 這意味著我們可以允許用戶
在網站上，他們只能詢問，他們只能 訪問他們特定的用戶名和密碼，
他們不能只訪問每個人的用戶名 和密碼。但如果這個人，吉姆，
誰在公司受僱，他可以訪問 每個人的用戶名和密碼
用戶。那是兩個人之間的 安全差異，不允許用戶
獲取太多信息的網站。同時 ，也不要限制吉姆
信息太少了。所以這是一個非常好 的安全功能。
所以
還有什麼
關係數據庫管理系統允許我們 進行事務，我們將討論
隨著時間的推移，基本上交易就是它聽 起來的樣子，就是我們做某事的時候
用技術術語的數據，基本上 ，它要么一路完整
或者它根本不起作用，如果我們有一個 多步驟的事情，比如把錢轉給
一個帳戶，從另一個人的帳戶 中扣除那麼多錢，等等，更新
數據繁榮得救了。如果在任何時候 停電，並且服務器崩潰並且它沒有
完成，好吧，那麼交易被取消，什麼 都沒有保存。這是你可以的
使用關係數據庫管理系統。 所以這幾乎是關係的基礎
數據庫管理系統，以防萬一你不 太確定，比如術語和東西，
關係數據庫管理系統或僅 數據庫管理系統的示例。
MySQL就是其中之一。它允許我們構建 和運行數據庫。 SQL Server 基本上就像
微軟，如果你喜歡微軟，它在服務器 上運行，然後你訪問它。所以
你有微軟服務器，我們有 Oracle 數據庫，我什至不知道如何
宣布我發布灰色 SQL 或其他內容， 等等，列表還在繼續。但基本上
您在數據庫中聽到的所有重要 術語都是指關係數據庫
管理系統，或數據庫管理系統 ，如果不是關係數據庫，不要
真的不要真的認為數據庫和 關係數據庫是兩個獨立的
事物。它們就是它們被用作一體的東西 。但如果你真的想像概念一樣，
好吧，我們有存儲信息的數據庫 ，然後是關係數據庫
管理系統，它允許我們操縱這些 數據。當我們有諸如
MySQL。我們在這兩者之間沒有真正 的區別。一切都有點像，
好的，我們使用 MySQL 來創建數據。它已 存儲。我的 SQL 有點像我們所做的一切
實際文件，它們存儲在服務器上的 硬盤驅動器或您的家用計算機上
你正在運行你的數據庫。並且 關係數據庫管理取數據
在硬盤驅動器上並將其放入可展示的 表格中，以便人們喜歡管理員
查看因為如果我們有像硬盤一樣的 磁盤，我們就說這是一個硬盤
盤。一些數據將像這裡一樣 存儲。其他部分數據
這將像在這裡一樣存儲，有些 就在這裡。
好吧，如果這是一張桌子
關係數據庫管理系統正在 發展 希望能夠接受並且
把它放在適當的位置以使其易於 展示，所以不要真正考慮它
就像，哦，我們有一個數據庫，然後是 一個關係數據庫管理系統，有點像
他們作為一個整體。所以對於像 MySQL 這樣的東西。另一件事，最後，
我知道，我對這個視頻有點跑題 了。另一件事是關係數據庫管理
系統要做的是創建一致性。 在這裡用更大的粉筆，
始終如一地，它將使前端的一致性 落後。所以在一個網站上，
我們可以讓某人把他們的全名放在 一個盒子裡，然後可以存儲在數據庫中
作為兩個單獨的列。名字姓氏。好吧 ，假設我們更新了這個，我們
出於某種原因決定將其作為一列 ，我不建議這樣做，嗯，前端
沒有改變，因為唯一改變的 是後端。有了數據庫，
我們可以在我們的前端保持一致性， 讓我們的用戶開心，永遠不必擔心
關於事情的變化。在後端，事情可能 會發生變化。例如，我們的方式
存儲日期或我們的時區或我們的字符集 ，嗯，一般來說，那是行不通的
影響前端，除非這裡的數據 是直接影響前端的。為了
例如，如果這是一個用戶名列，我們 刪除了用戶名列，好吧，那就是
會導致問題，因為它不是數據庫 中的列。但基本上，當
我們有數據庫，前端大體 一致，還有服務器端
腳本語言，例如 PHP 或其他任何語言 。嗯，這會隱藏我們的數據庫
甚至更進一步。所以基本上， 而不是說，哦，沒有用戶名
列，它會說類似錯誤，再試一次，稍後 ，一些非常模糊的東西，所以人們
不明白，哦，廢話，我可以打包這個 傢伙，因為我知道他的數據庫結構，
我可以弄清楚如何弄亂他的網站或他的業務 或其他任何東西。所以是的，那個
是一種服務器端腳本語言。我 不會寫出來，因為它很大。
是的，這就是關係數據庫管理系統的 基礎知識。
希望這是有幫助的。在
在本視頻中，我們將討論 SQL。所以 s q, l。 好的，那麼什麼是 SQL？ SQL 是一個
用於與數據庫通信的編程語言 。基本上，我們說英語數據庫
不要這樣SQL有點像計算機數據庫 和人類英語之間的中介，
這麼想吧。這幾乎是英語，非常 簡單。在這個系列中，我們
實際上不會對任何數據庫進行編程 ，儘管我們將討論一般
SQL 概念。因此，了解 SQL 非常重要 。所以 SQL 不像一個特定的關係
數據庫管理系統。編程語言，它 是一種通用語言，用於每一個
關係數據庫管理系統。從供應商到 供應商，例如 MySQL 到 SQL 服務器
或其他東西，它可能會有所不同
少量，
但 SQL 的一般概念保持不變。 所以這將是一個通用的概念
你應該知道。所以首先使用 SQL來定義數據庫結構。然後
它操縱其中的數據。所以基本上 ，我們可以把 SQL 看作兩類
這裡。一，它定義了結構，然後 通過這意味著我們插入
數據，然後我們可以搜索或 刪除或更新它。這是兩個子類別
的 SQL。我們實際上出於某種原因，將這些 命名為他們自己的語言。所以這是數據
DDL 的定義語言，這是數據 操作語言，
或者
DML。有些人可能會說有更多的類別，但 我的意思是這幾乎是一個領域
這麼想。我只是要在這裡抹掉 它。現在我們有了這個。
我們有
數據線
例如，當我們有一張桌子時，DML， 我只想把它寫在這裡。和我們
有列。所以我們有像ID用戶名 ，密碼。嗯，那是數據定義
語。數據操作語言是我們用來 插入新值的語言，例如
72的ID，Caleb curry的用戶名，pi 的密碼123。那是數據操作，
語。所以當你想到一張表 很明顯 如果你有一個大數據庫時
你會有多張桌子。嗯，所有這些 結構和表之間的連接，
這就是所有數據定義語言。所以它得到 了所有的主要
結構體
數據庫的。然後，數據庫中 的數據是數據操作語言。
所以這是兩個主要類別。
我只是想談談這兩種語言 的一些特性。所以基本上，
當我們定義表時，我們有一個 create 語句。所以 基本上，我寫的所有 SQL 都是大寫的
字母。這只是我選擇的一種模式。所以 create 是一個 SQL 命令的例子
用於創建表。我們可以通過這種 方式創建數據庫。那是數據定義
語言，因為我們正在定義我們的數據庫的 結構，一個諸如 update 之類的命令，
或者，是的，我想，如果我們更新 列中的實際值，則更新。嗯，這個
是操縱。語言，因為我們沒有 改變結構，列保持不變
同樣，只是實體的特定屬性發生了 變化。我們正在更新 Caleb Curry 的
Caleb curry 123 的用戶名。嗯，這是 一種數據操作語言。另一件事
SQL 可以做的就是所謂的連接。 並且連接非常重要，非常重要
與關係數據庫管理系統。 因為用關係數據庫管理
系統，我們把事情分成單獨的表，為了簡單 起見，對於一個，對不起，我是
我在那裡添加了場景，我想我是什麼 。而不是有一個類似的電子表格
大量信息，我們按實體分解。所以 這是關於用戶的表格，這是
關於訂單的表格，這是關於客戶的 表格，然後我們可以加入這些值
得到一個新的、更大的桌子，一個新的視圖，看起來 像一個巨大的有組織的桌子。我是說，
基本上，它看起來不像我們把 它分成多個表。因此，如果
我們這裡有一張桌子，然後我們這裡也有 一張桌子。讓我們說我們有，這是
一張銷售表。這是一個用戶表。在銷售表 中，我們有一個銷售 ID，我們有
用戶 ID 購買這些東西的人。 然後我們有他們購買的物品。
我的意思是，這是一個愚蠢的 例子，只是為了讓你理解
一個加入。然後在用戶表中， 我們有姓名、用戶 ID 等等，
我們可以在這裡加入，我們可以拿 他們買的東西，那個人買的東西
購買者，以及購買者 的姓名，由
用戶 ID，我們會再多談這個，然後 我們可以得到一個新的視圖，它有
名字和那個名字的物品，但都 是在談論同一個實體，這個
用戶。所以命名約定只是人們為了 保持事物而做或你做的一種模式
持續的。因此，這種命名約定不僅 有助於使我的數據庫在不同的
表和列。但是這個命名約定不僅 是我的，其他人也使用這個命名
習俗。這意味著當我去找另一個人 查看我的數據庫時，他們已經
了解發生了什麼。現在，很明顯 ，有多種不同的命名約定，
沒有一種方法可以做所有事情， 也不是必需的。這就是我的決定
去做吧。這是因為大多數使用我 的 SQL 的人，這是我首先學到的
使用這個，但是對於不同的關係數據庫 管理系統，你可能有不同的
命名事物的系統。所以我只是要 解釋一下我要做什麼。任何時間
我寫SQL，我把它全部用大寫字母。所以選擇 就是一個例子。幸運的是，我們在
不會做太多的 SQL。所以 我不必全部大寫
一個黑板，因為它，它很複雜。但是 當我們談論任何我命名的東西時
我自己，我全部使用小寫字母，我只 使用所有小寫字母，因為我只是
認為它使它更簡單。所以當我們有一 張桌子時
例如用戶表，我不大寫歐盟。然後 當我有一個ID時，我就把
用戶 ID 或只是 ID 什麼的，但我不大寫， 我只是保持小寫。而對於空間，
我只使用下劃線，所以我不使用任何 空格。所以基本上，這是我的命名約定
我使用的，你的會有所不同。我們還沒有 真正做到這一點。所以你可能不明白
這。但是如果我有一個外鍵，基本上， 如果我在這裡有一個連接的副本，到
我們在這裡有相同的列，我只是 確保他們的名字都是一樣的。
所以我知道他們在說什麼。
是的，
我，有些人會做諸如放置用戶表 之類的事情，或者他們大寫某些
字。如果您想查看特定關係 數據庫的其他命名約定
管理系統，繼續前進。事實上，我 會​​鼓勵它。但只是讓你明白
我在這裡做什麼，我會做另一件事， 當我們談話的時候
關於
現實世界中的東西。有時我 不一定使用該命名約定。因為
如果我正在編寫我需要存儲的關於用戶的 所有內容，那麼，我可能會說，我們需要
存儲用戶的地址，我不會把 下劃線的用戶下劃線地址，
我可能只是把用戶的地址用英文 寫成空格。然後當我轉換時
開始把它變成一個數據庫、結構、模式 ，不管你想怎麼稱呼它，然後
我將把它轉換成只處理小寫 字母。我們將要談論
好的，什麼是數據庫設計？當我們談論 什麼是數據庫時，我們從來沒有真正
談到數據庫設計。為什麼要 設計數據庫？有什麼特別的
關於它，它需要設計它不像我們 在蓋房子什麼的？出色地，
在某種程度上，這有點像我們 正在構建原理圖來構建最好的
數據庫。你如何衡量一個數據庫 的好壞？嗯，這與數據有關
完整性，我們將在即將發布的視頻 中更深入地討論這一點。
所以數據完整性基本上是你所有的 數據都是正確的，它是最新的，有
沒有斷開的數據。例如，如果我們 有兩個表。出於某種原因，這些表
以某種方式相連。好吧，如果由於某種原因 這個鏈接中斷了，那麼，那麼什麼時候
這個表更新，這個表被留下，然後 數據變得不正確。那是
數據完整性問題，因為數據 管理不當。所以有了好的設計
數據庫，我們防止數據完整性問題。所以 我們所有的數據都是最新的。我們不
有，我們沒有重複數據，我們沒有 不應該在那裡的舊數據。
例如，如果您有一個數據庫， 您可以存儲大量信息，例如
很久以前，這很好。但是你不想 要最近改變的數據，而且它沒有
在更新中更改。因此，您希望數據庫 始終是最新的。除非出於某種原因
你像檔案一樣存儲，假設你 有一個商店，你想存儲一個
您曾經製作或出售過的每一個訂單 的存檔，好吧，那麼您就可以
將所有內容存儲在數據庫中。這並不真正 需要更新，因為它是一個檔案。
但是如果你有，如果你的數據庫 中有一個客戶，並且地址已經過時
並且不更新，那麼你有問題。另一 個例子是如果向上的人有四個
所以如果你的數據庫設計得不好並且 你有重複的數據，那麼舉個例子
的數據可以更新，而其他數據則 留在後面。所以現在你有兩個地址
對於一個人，這應該只是一個地址。 這是數據完整性的另一個例子
問題。所以我們將進入數據完整性 問題的特定案例
隨著我們繼續。
但是當我們談論數據設計時，數據庫設計 有整體性，人們通常會打破它
分成三個部分，兩到三個 ，這取決於人們的意思
它，因人而異。好吧，首先， 我們有
概念性的。
然後我們有了邏輯。然後我們 有身體。好了，這些都是
被稱為模式的模式，無論 你想怎麼發音，但這就是
這。好的，所以我們有概念模式 、邏輯模式和物理模式。
一個模式或者我們只是想一個示意圖 ，就像當你在構建某物時，它只是
告訴您數據的結構方式。 概念上的，這是當我們
只是在思考事物，事物之間的 關係。我們不考慮限制
哦，我們不能這樣做，因為 我們只有這麼多的可用性
或者其他的東西。這有點像無限的頭腦 風暴階段。當我們向下移動時，
這對我們說的更具體，好吧，這就 是我們將如何編程我們的數據庫。
所以在這裡，這裡更一般。 這在下面更具體。一旦您
下來，你要開始擔心了，好 吧，什麼樣的關係型數據庫
管理系統我要使用。但是當你在 這裡的時候，你可以想一想
數據如何相關的一般概念 。所以你越深入身體，
更具體的東西搞定。我的意思是， 這很明顯。所以，而不是想
它就像三個步驟，我認為它是一個連續體 ，我們正在採取我們的一般
想法並將它們轉移到特定的實現中。希望 這是有道理的。但基本上，
當我們單獨談論這些時，概念 只是談論數據是如何相關的。
因為在關係數據庫管理系統 中，我們有表之間的關係，
如果你想到了，我們有一個用戶表。 然後我們有一個銷售表。而這些用戶
可以去這個網站，購買產品。這就是 我們的例子。這裡。它可以是任何東西
但這只是一個例子。好吧，每一筆 銷售都必須由某人購買，特別是
一個用戶。所以這意味著用戶和銷售 之間存在聯繫。所以我們有
這個連接在這裡。那是概念設計 的一部分，我們說，這張桌子，
銷量取決於用戶。那是，那是因為 沒有用戶，我們就不能擁有
銷售，因為沒有人買這些 東西。用戶不一定
必須有銷售。所以它以這種方式 依賴。那將是父母，那將
成為孩子。希望這是有道理的。 當我們達到邏輯時，我們開始計劃
離開我們的桌子
結構體。
所以我們有所有這些數據之間的 關係，那麼我們就可以意識到，
我們有一個專門的用戶表， 我們有 X 個列，用戶名，
密碼、ID、地址、電話號碼、 信用卡信息，如果有的話
你需要存儲，任何類似的東西。然後 我們有另一張桌子。是銷售額
所以我們有銷售表。所以我們有用戶 ，使用表，然後我們有銷售表。
然後這個，這以某種方式聯繫在一起。所以 我們有用戶可以有多個銷售，並且
一次銷售只能有一個用戶。這是一個邏輯 數據庫設計，因為我們實際上正在構建
我們的列是數據類型，我們繪製它們 的關係，所以我們有這個邏輯
繪圖或模式，物理的，也就是 我們開始實際將其實現為
數據庫。所以當我們談論只 是設計而不是實際創造時
數據庫，物理設計將弄清楚 什麼是關係數據庫管理
系統將工作得最好。我們的表類型 是什麼？我們要存儲什麼服務器
這個上？人們將如何訪問它？ 它會通過互聯網，它是
將結束計算機程序。所以通常數據庫 將在服務器上，這將
被多個不同的人訪問。那 是因為數據庫就像核心
所有數據中。例如，如果我們只有 這個人使用數據，那麼我們就不會
需要這個龐大的數據庫，我們可以將這些 信息存儲在他們的計算機上，因為
他們是那裡唯一的一個。它甚至沒有 意義。所以通常情況下，一切都是
在服務器上訪問的類型。所以物理上 沒問題，我們使用什麼樣的服務器？
人們將如何訪問我們的數據？它 會使用網絡表單嗎？做那是什麼
我們需要編程嗎？然後當你實際 實施那是你真正的時候
編程數據庫，構建網絡表單，或者 無論你在做什麼，安裝服務器
並測試，構建將要訪問它 的用戶，視圖？什麼是
會有不同的看法嗎？將返回 什麼數據，等等。這是
當您真正關注安全性時也是如此。因為從 邏輯上講，當我們處於邏輯階段時，
我們仍然在想，好吧，沒有人 會試圖打破它，不，每個人
將正確使用數據庫。但在 現實世界中，這行不通
方式，人們，要么試圖破壞事物， 要么就是不知道自己在做什麼。
或者有錯誤或有不正確的數據。好 吧，那就是在這個連續體的某個地方
這就是我們需要開始擔心安全性 的時候。我們不希望人們打破
進入我們的數據庫。我們不希望我們的數據庫 崩潰並出現數據完整性問題。
所以希望這能解決一些問題。所以 數據庫設計，有些事情是真實的
快的。
數據庫設計，
正在使用您知道的技能來構建 一個不會具有數據完整性的數據庫
問題，更新異常，我們將討論 這兩個，但這基本上是如果為
出於某種原因，您存儲了兩個相同的 數據，例如我的地址是否在數據庫中
兩次，嗯，這是個問題。因為當我更新 我的地址時，只有一個可能會更新，
例如。現在地址說我住在兩個 不同的地方。就是，錯了。
所以數據庫設計是一種在多個 表上分離信息的方法，而不是
有一張像這樣的大桌子，我在那裡存儲地址， 我們存儲我們的銷售額，我們存儲我們的，
我們的客戶，我們存儲我們最喜歡的視頻 遊戲，我們存儲我們的關係。是的，
你得到。所以基本上，
這是
一個糟糕的設計，因為它都在一張桌子 上。當我必須更新它時，我們有，
讓我們說這是一排，對吧？ 我的列是 ID 和用戶名。和
那麼我們有我們再次需要更大一點 。然後我們有用戶名，我們有
地址，我們去電話號碼。手機更方便。 然後我們有最喜歡的顏色。什麼時候
我們是這樣存儲的，如果我們需要添加 一個新的最喜歡的顏色，我們有 ID 7。
那就是我，我們的用戶名是 Caleb curry， 我們的電話號碼是 800。我的最愛
彩色迷彩。然後如果我想加入一種新 的最喜歡的顏色，我們不能因為
我們不想我們已經在那裡放了一個。所以 我們需要創建一條新路線，比如說七
迦勒咖哩一個 100 點點點。然後最喜歡 的顏色。
綠色的。
正確的？
好吧，現在我們有所有這些重複數據 ，我們在這裡有兩次，在這裡做
兩次，我們在這裡兩次。我們 有，我們必須有兩排最喜歡的
顏色。所以你必須找到解決這個問題 的方法。
但現在
如果我因為有了新電話號碼而決定更新 我的電話號碼，那麼現在我會更新
不管它是什麼，我都會把它改成 1234567， 現在我更新了我的電話號碼
但出於某種原因，我們有一個數據完整性 問題，因為我的電話號碼在這裡，
兩種不同的方式，這是一個糟糕的數據庫 設計。在這個系列中，我們將
正在談論解決這樣的問題 。最好的辦法就是喜歡
將其分成多個表。另外，您可能 不需要存儲您最喜歡的
顏色。除非你正在運行某種類似藝術 的網站或建立一個企業，所以它是
可能的。但是我們可以做同樣的事情， 比如訂單，如果我不得不放多少訂單
我在那個表中的訂單，這是另一個 壞主意，我們有相同的數據完整性
問題。所以這個系列將告訴 你如何擺脫這些數據完整性
問題，所以你有最好的數據庫設計 ，以獲得最佳性能。我們要談
關於數據完整性。好的，那麼什麼是 數據完整性，我們稍微討論了一下
在上一個視頻中有點，但是這個視頻 將更深入地進行。數據的完整性
只是在您的數據庫中有正確的數據。所以 當你在我們建立數據庫時，我們不
想要重複值，我們不想要不正確 的值。我們不想要破裂的關係
表之間。例如，在上一個視頻中，我舉 了一個例子，你這裡有一張桌子。
這是用戶表。這很奇怪，對吧 ？像這樣，然後我們有一張桌子
這邊。這就是銷售表，這是您 銷售產品的地方。例如，這
只是一個例子。您可以實現其他 示例。但這只是為了說明
我的觀點。銷售是當用戶購買產品時， 這意味著銷售需要用戶作為買家。
否則沒有銷售，如果沒有人購買 ，我們就無法銷售。這是否使
感覺？這意味著銷售取決於 用戶。和我們有關係的用戶
買東西，東西被用戶買，這是一個 已知的你能看到這是已知的嗎
作為船上的中繼船。現在，請 記住，術語關係數據庫並不
來自關係這個詞。它 來自關係，這是數學
集合的連接，我們在之前 的視頻中討論過。但不要
弄糊塗了。但是關係數據庫 確實有表之間的關係。所以
如果由於某種原因這被打破了。 現在我們有一個用戶購買的銷售
或沒有用戶。例如，假設這次促銷 是由 ID 為 7 的用戶購買的，
好的。然後我們有一個 ID 為 7 的用戶 。所以有一個聯繫，銷售被買了
由用戶按 ID 七，它指向用戶。 有道理？這就是數據完整性。
但是如果這種關係被打破，並且 它說銷售是由用戶購買的
七的ID，然後這個人從數據庫中刪除 。那麼，現在這個銷售點
到不存在的表或用戶。 這可能是實用的，在
從某種意義上說，該銷售是由他確實 存在的那個用戶購買的。但對於事情
需要持續更新，我們不希望這種 情況發生。所以這是一個例子
誠信問題。所以你想保持這種 關係說，好吧，我們擺脫了
的用戶，我們需要更新銷售說 ，好吧，要么刪除此人，要么
也做一些與銷售。所以是的，對不 起，如果聽起來有點混亂。好的，
所以數據完整性的三種主要類型。 第一個是實體完整性。我們談過的
實體就像前幾個視頻之一一樣，實體 是我們存儲數據的任何內容。
所以我們從用戶開始。這是一個 實體。
實體完整性的含義基本上是唯一的 實體。當我們有用戶時，我們經常
給他們 ID 這就是所謂的鑰匙。 因此，ID 用於強制執行唯一性
實體。例如，如果我們有一個用戶表 ，
我們存儲此人的姓名，然後存儲 他們的地址。現在讓我們
轉到電話號碼。因為當我們談論 地址時，最好將其分解為
街頭狀態，我不想經歷這一切 。所以我們可能有一個人
有一個重複的名字。所以讓我們說他的 名字是 Caleb，他的電話號碼是一個
800。
你希望？
好的？好吧，如果我們有另一個人，如果 他們都住在同一所房子裡，因為
例如，這是他們家的電話，嗯，有時 人們給他們的孩子起相同的名字
以他們的名字命名。所以現在我們有兩個 擁有相同電話號碼的人。你看看這個
然後說，好吧，要么我們有兩 個電話號碼相同的人，要么
我們有兩行在談論同一個人。我們 不知道，因為我們沒有適當的
數據的完整性。因此，解決此問題的 一種方法是在行的位置添加更多列
將是唯一的，例如社會安全號碼，或者 我們可以添加一個 ID
上。
這就像六個和七個。所以現在 我們談論的是兩個獨立的實體，
這是在說這個傢伙，因為他 的ID是七。這個人在說這個
傢伙。因為這個 ID 是 6，所以它們是兩個獨立 的實體，也就是實體完整性，有
您的實體之間的唯一性，我們的行具有 唯一性，並且我們也只有一個用戶
表，我們不會有另一個用戶表 ，因為該信息應該去
在原始用戶表中。關於參照完整性 。這就是我們所說的
之前，是當我們引用一個表和另 一個表的 ID 時。如果我們有意見
網站上的表格，對，我們說評論 是誰，我們有一個用戶 ID，
指向這裡的這個 ID。那是因為評論 必須由用戶發布。除此以外，
我們有一條評論，沒有 人發布它，這在
實際的世界。所以我們總是必須 有參照完整性，這基本上
說，每次有評論，都 需要有人發表評論。
這種聯繫需要保持，它需要保持。 如果由於某種原因這是斷開連接。
然後這個用戶被刪除，因為這個表被改變 了，好吧，那麼這可能會改變。
我的意思是，這保持不變。然後 與更改的位置斷開連接。
這是舊的、過時的數據，其中要么 用戶不再存在。還有評論
仍然說他有，或其他類似的東西 。這就是參照完整性。那會
一旦我們開始設計和製作東西就更有意義 了。但是，是的，域完整性，這帶來了
起來一個新詞域。域基本上 只是列的可接受值
比如說，這就是我們在數據庫 中存儲的範圍。所以
當我們談論表格時，我們有列。所以 這些列在這裡，假設我們有
一個電話號碼。嗯，這意味著我們 應該有一定數量的數字，我們有
區號，然後是三位數字，然後是 四位數字。這至少是我們在
我換了其他地方，但那是 10 位數字 。所以我們知道電話號碼應該是
10位數字，應該是數字。所以如果出於 某種原因我把蛋糕這個詞放在
電話號碼列，首先，如果我們 有域，這將導致錯誤
完整性，因為它不是 10 位數字。這 只是一個詞。這不是正確的域。
它不是數字不是數字，它是站不 住腳的。所以我們知道這會導致
一個錯誤。這就是數據完整性的基礎。當 我們沒有數據完整性時，我們有
錯誤。當我們有數據完整性時，我們 會做一些事情來糾正這些錯誤，例如
說，所有這些都需要是數字。這 就是我們實現數據完整性的方式
設置數據庫規則以及如何處理 數據庫。嗯，那是多種多樣的
在您使用的關係數據庫管理系統 上。一些關係數據庫管理
系統允許一般規則，說好的，這 必須是這個數字的範圍。一些
更模糊的地方，他們只允許 你實現數據類型，數據類型
就像，整數 10 位數字。所以 當我們談論實際實現數據時
完整性，不同的關係數據庫管理 系統幾乎可以做不同的事情
每一個
我擁有的關係數據庫系統，我很確定 所有這些系統，但是
誰知道。
它們允許使用數據類型。所以數據 類型很漂亮，很容易解釋。這是
數據類型。
所以在數據庫中，我們將事物分類為一般、 整數、文本或日期。所以我們要么有
數字、文本或日期，就像我們 將要討論的三個一般類別
在未來的視頻中更多地介紹這一點。 但是數據類型可以限制我們允許的內容
儲藏。例如，我們可以說，好吧 ，我們只想要一個最大的字符列
20 個字符。這意味著我們可以在列中 放置一個字符串，表示，
我喜歡
磷
1-234-567-8910 1112 1314 1516 17,
那會合適。
但是如果我想把這個披薩改成烤寬 麵條，那我就加了幾個額外的字符
這可能會切斷它，我不確定 1-234-567-8910 1112 1314 1516 1718 1920。所以這是最大值
我們可以輸入這些數據。就像， 這是實現數據完整性的一個例子
為了
人物。
所以這個，這將是為了域完整性， 我們也可以使用引用完整性
所謂的外鍵約束，它允許 我們連接到表，因為當
我們刪除表，我們可以說它們以 某種方式連接。但是我們如何執行
在數據庫中，我們使用外鍵約束。例如 ，我們可以說如果這是父級，
假設這是用戶。這是評論 。用戶發表評論，所以這
是父母這是孩子，因為沒有父母 ，孩子就不能存在，你
沒有評論者就不能發表評論。那麼 ，使用外鍵約束，我們可以
說，好吧，如果該用戶被刪除， 也刪除該用戶的所有評論。那是
外鍵約束的一個例子。至於 非重複數據，這是用
只是以最佳方式設計您的數據庫。所以 是的，我知道那個視頻有點跳躍
從概念到概念來回，也許有點 令人困惑，但我相信你
隨著時間的推移會得到它。我 只想做一點回顧，以及過去
我們學過的詞彙。所以如果 你真的不想知道，我們會
也複習一些新的。但如果你不 想回顧，那麼可以跳過這個
下一個視頻。所以這個視頻將是關於 數據和數據庫設計術語的。所以
我們學到的第一個術語是數據。數據幾乎 是我們存儲在數據庫中的任何東西，
你幾乎知道這是什麼聽起來不錯的數據庫 。這就是我們存儲數據的內容
在。然後我們有一種特定的數據庫 ，它是關係數據庫。
關係數據庫的特別之處在於它 將事物存儲在表中。我們有
數據庫管理系統，或簡稱為數據庫 管理的 DBMS。這就是我們的管理方式
使用代碼的數據庫。這就是我們控制數據庫 的方式。我們有一種特定類型的數據庫
管理系統稱為關係數據庫管理 系統，它只是用來控制
我們的表和關係數據庫表 中的值。很簡單。現在
我們要給你介紹一個新詞，no 或 no，不管你想怎麼發音
它。有人告訴我我發音錯誤， 但我並不在乎。反正這時候
有人沒有在表的列中輸入值。所以 如果我們有一張桌子，我們
有諸如傳真號碼之類的東西，
出色地，
不是每個人都會有傳真號碼。所以 當我們有一個人會說我們有一個
ID在這裡，我們有一個ID為7的AI傢伙 。我們沒有傳真號碼，這個
空性說沒有。所以基本上， 你會聽到空值，儘管根據定義，
沒有意味著沒有價值。所以這是一個不好的定義 。但誰在乎？不，基本上意味著有
該特定領域沒有數據 。我們將在一個
第二。所以這就是正常的意思。 這是你需要知道的。另一個是
異常，或異常。
因此，異常基本上是我們數據完整性 中的數據錯誤。所以當我們
有一個異常，它偏離了 我們的預期或正常。
例如，當我們更新某些內容時 ，它不是更新一列，而是更新
10.它不應該。這是一個異常。所以是 的，你也需要知道這一點。
另一個是誠信。我們實施數據庫完整性 ，以防止出現異常。所以
我們討論了三種不同的完整性。 我們討論了實體完整性，引用
我們瀏覽了域。這些是什麼真的很 快，實體完整性就是說唯一性
在表中，引用保持連接，鍵 ，外鍵，主鍵，它們
使它們跨多個表保持連接。所以 我們可以說這兩個表有一些
種連接。然後域基本上是 說表中的列具有所有
預期值。所以我們有一個電話號碼， 我們希望是數字，而不是文本或
日期，即域
正直。
而詞域基本上是可以存儲 在其中的值的範圍
一列。所以這些是我們的數據，你應該 知道的詞彙。現在我們要搬家了
進入設計階段。所以設計就是我們在這裡 的目的。所以
這很好玩。
您首先需要知道的是一個實體。我們 存儲有關用戶的數據的任何內容
a，抵押貸款，交易，信用卡 信息，任何評論評論，
它們都是實體，這就是我們要存儲的內容。 數據有關，那麼我們就有了屬性。屬性
我們存儲的關於實體的東西 是評論，一個評論的屬性會
是建立鏈接的日期，它是多少 個字符？誰發的，就是
一個屬性的例子 一個關係。
我們在談論
數學，它是兩組數據之間的 聯繫。當我們談論數據庫時。
簡單來說，就是一張桌子。所以關係 是表的另一個名字
我們有
我們數據庫中的數據。所以我們可以 有一個不同表的結構。所以這些
可以連接。
只是我不知道
你想連接它們。這可以是我們 的數據庫，其中每一個都不同
一組不同的信息或數據集被 稱為關係是一個表。
next term 是一個 tupple 但是你想 把它傳遞給這裡。那是另一個
連續的事情。它是關於特定實體的所有 屬性。所以如果我們有這個
伙計，我們可以說，他的名字是 Caleb，他的電話 號碼是等等，等等，等等，等等，等等，他的
地址，他的年齡，他或他的 生日可能會更好他成為會員
這個網站的，或者不管它是什麼，這個關於 這個實體的所有這些價值觀。那是
那是什麼。這也將是表格上的 一行，因為我們在物理上代表關係
一張桌子。所以當我們有一張表時， 我們有列，所以我們有姓名，電話號碼，
地址，社會安全號碼。然後當我們 輸入所有這些時，對於特定的
人的 ID 是七，名字 Caleb，電話號碼 ，等等，等等，等等，地址，
等等，等等，等等，這被稱為元組 或行。另一個術語是表，我們
剛剛談到的只是關係的 物理表示表示。表
是我們存儲在數據庫中以組織我喜歡 在那裡砍掉我的頭的內容。舉辦
我們的數據。在一個表中，我們有行 ，也有列。
這些行將是我們表中的特定單個條目 。所以就像那個傢伙我們只是
繪製他的所有值將是他的行 ，列是特定的，是特定的屬性
那個人的名字，比如名字。這 是我們將放置值 Caleb 的列。
好的。現在我們還有另外三、 三個我們還沒有學過的術語，
你可能會聽到。它們有點 舊，但它們只是在談論
關於同樣的事情。你可能會聽到這些條款，
文件，
記錄。
然後是字段。那麼這些在說什麼 ？那麼文件只是另一個名稱
表、記錄是行的另一個名稱，字段 是調用的另一個術語。所以
除此之外，我們有的話就是價值 。值是我們放入的信息
到特定列。所以這是一個值
凱拉，或
訂閱或刪除，
或 700 或 6 月 16 日，無論是什麼，這些 都是值。
好的。哦，
伙計，已經10分鐘了。好的，那麼我們 有一個詞條，你可能會聽到詞條詞條，
我喜歡用它來表示它幾乎就 像一個動詞，當你輸入時
數據，你會得到一個條目。所以基本上， 條目只是行的另一個名稱。所以嗯，有
顯然很多相似的名字。我們將製作 一張表格，說明我們只是在做什麼
獲得數據庫設計。設計表格以消除 異常並擁有數據的過程
正直。遊戲或模式，無論你想 表達的是，那隻是一個物理，
這只是我們的數據庫的一個繪製結構 ，然後我們在這裡有了一個新術語。
它被稱為
標準化，
或規範化。規範化基本上只是 我們要執行的一系列步驟
遵循以幫助我們獲得最佳的數據庫設計 。這就是數據庫設計的一部分，
當我們通過這些範式來獲得最 佳的數據庫設計時，我們將討論
在即將發布的視頻中會有更多內容 。但我只是想讓你知道術語規範化
是構建最佳數據庫設計的過程 。另一個和命名約定。
命名約定只是用於使事情保持一致 的一致性。所以我們取名為
我們以某種方式命名列。我們以 某種方式命名我們的數據庫
以某種方式繪製我們的數據庫模式 。所以基本上，約定是任何
重複執行以創建一致性。最後 一個是鑰匙，我不確定
如果我談論或不談論這個，我想 一點點，但不多。但關鍵是東西
使表格中的所有內容都獨一無二。 這就是我們如何在表之間建立聯繫，
我們連接ID，我們可能會說，哦， 這個評論是ID為7的用戶發布的。
好吧，這又指向了用戶表。我們 用鑰匙來做這一切。我們將學習
隨著時間的推移，更多關於那些。好的 ，所以你看，我們有很多條款和很多
其中的重複是因為這個意思是同一 件事，例如，我們有關係。然後
我們有桌子。然後我們有文件。 所以關係表和文件都在談論物理
結構，一個表幾乎記錄了圈柴油 的記錄將是一行，所以
我們有一排。然後我們有一個子 ，這些都是在談論表中的行。
然後我們有，我該怎麼做？讓我們 把它們劃掉列。然後我們有
屬性。然後我們有一個字段，這些 都是在談論表中的一列。
還有 entry，你可以把它想像成一行 ，因為你放了一樣，你輸入
數據到表中，你會得到一個新行 。值只是一個具體的，你可以想
它就像我們讀了一些這樣的。我們有這 張表，我們把它分成幾列。所以
例如，我們有 ID、姓名和電話 號碼。那些是列標題，然後
我們有特定的骰子，
七，
光環。
然後我們還有另一個八人。好吧， 如果我們把它分成單元格，這是另一個
術語，我們在這裡放置了一個特定 的值，例如 john，這是一個值。
沒有實體，那是唯一一個，所以我們 剛剛討論了價值實體是什麼
左邊沒有圈起來，沒有劃掉或 平方，或者我不喜歡某個實體
真正將其分配給行或表或任何 東西，因為實體只是某物
我們正在存儲有關的數據。所以這可能 是一個單獨的行，或者它可能是表
類型。例如，我們有一個用戶表 ，而用戶是實體，但是
具體而言，特定實體將是該 表中的一行。因為我們有實體
為了這
這邊的傢伙然後
我們會為這裡的這個人或這裡的這張支票 準備一張。或者我應該說的女士。
所以這些都有自己的行來查看。所以 一個實體是我們存儲數據的東西
關於。這個視頻只是增加了一些詞彙 ，沒有那麼多我們分成兩部分
類別。第一個是SQL。所以首先 我們了解了 SQL，這顯然是
是用於二進制的程序語言提到這 一點我很可怕。結構化查詢語言
是 SQL 的意思。那代表什麼 ，它用於連接到您的數據庫。
嗨，對不起，我只是分心了。我揮舞 著這張紙。就像我的鏡頭一樣閃爍
因為某些原因。
無論如何，
下一部分是數據定義語言，用 於定義它是 SQL 的一部分。
所以SQL有數據定義語言，而D和 L，使用的是數據操作語言DDL
定義我們數據庫的結構。 數據操作語言用於插入值
在我們的數據庫中，以及更新它們 、刪除值和搜索值等等。哦，
另一件事是，我從來沒有真正提到過這 一點，但我確實想在這裡提到它，SQL
關鍵詞。
所以無論何時我們有這個詞
編程語言中的關鍵字，它 是在談論你保留的東西
不應該用於您的用戶定義數據 。例如，在 SQL 中選擇，這個
是您的數據庫將要識別的詞，因為好的 ，我們希望您做某事，我們希望
您選擇數據。這是一個關鍵字，因為 它已經定義了。所以我想我不
想要命名我的表或我的列，任何關鍵 字，因為它可能會導致錯誤或混亂，
或者只是讓事情複雜化。我總是把 SQL 關鍵字放在大寫字母中。正確的。
這就是 SQL 的全部內容。
這是我的比賽。
去美國，
和其他所有國家，哦，精彩的介紹 。所以第一件事是我們有前面
一個應用程序的結束。所以前端 就是用戶看到的。後端是什麼
在幕後進行。當我們擁有網站時 ，我們不僅僅擁有網站的內容
看起來，我們有代碼讓我們看起來， 當我們將數據放入表單時，我們有
與數據庫通信的語言，創建 一個易於遵循的非混淆前沿
結尾。但是後端非常複雜。 所以這就是前端的區別
後端前端是最終用戶在特定 時間會看到的，後端
是幕後發生的事情。很多時候，當 我們使用數據庫時，我們會
編程前端，因為我們不希望每個人都 訪問我們的服務器，它是不安全的。
這不是一個好主意。所以我們經常創建 一個前端應用程序來訪問我們的
數據庫，最常見的是網站，雖然還有 其他形式，但無論如何。所以這裡
我們的數據庫。而不是人們登錄 服務器並使用 SQL 代碼獲取信息，
我們經常為人們編程前端以不同 的方式訪問這些數據。所以每個
例如，這些前端之一就像一個 網站頁面。所以這裡是你的註冊
這裡的頁面將是您的用戶頁面，這裡將是您 的個人資料，
如果您願意，您的主頁將位於此處，您 甚至可以擁有不同的層級系統。所以這
可以是網站管理員可以添加或刪除 用戶的頁面，他們有額外的
特權。這也是視圖系統，我們 將在稍後討論。那麼，
前端不允許我們直接輸入自己 的SQL，它只允許我們使用什麼
前端給我們，然後將其傳達 給數據庫。這就是前端
end 是，後端將是用於與數據庫 通信的服務器端代碼。
所以當我們談論客戶端和服務器 時，我們有這兩個術語，我們有
客戶端，然後我們有服務器。所以第一 件事就是客戶。客戶會考慮如果
我們這裡有這堵牆。在這裡，我們 有一台電腦。然後在這裡，我們有
數據庫。這是客戶端，因為 我們在這裡訪問數據庫是
服務器端。
所以客戶端、客戶端和服務器 端，我真的沒有空間來寫。但
服務器將這個數據庫的實例提供給 客戶端，他們可以在那裡訪問數據
在某種程度上取決於我們如何獲得我們的特權
給他們。
所以當我們談論
不同的人有不同的特權，我們使用 所謂的視圖。所以就個人而言，
我完成了這個客戶端和服務器 端。我們從客戶端溝通到
服務器端由服務器
邊
腳本或編程語言。它超大。好吧，我的 手累了。我們可以提供自定義視圖。
所以視圖只是從數據庫中獲取 數據並以不同的方式進行說明
而不是它的實際存儲方式。例如，一個 網站上的用戶可以訪問，比方說，
我們就像一個社交網絡，我訪問我 的朋友頁面。它會告訴我他們的
姓名，可能是他們的用戶名，如果這是他們 使用的，他們的註冊日期，他們的
電話號碼，如果是公開的， 例如，他們的關係狀態，
儘管私人信息可能只有擁有 它的用戶才能訪問，因為
例如，他們的密碼或電子郵件，或 他們的朋友列表，這可能是不同的
查看，取決於您在哪個頁面上 的哪個頁面，以及用戶
你是。
所以我可以訪問我自己的密碼和電子 郵件。但這可能是其他人私有的
人們。這就是觀點。視圖經常使用 連接，它基本上連接來自多個
表來創建一個新表。我們這裡有 兩張桌子。用戶表，評論表。
你能看到嗎？你能看見它嗎？你 最好能看到嗎？嗯，評論總是
由用戶提供。我們使用 ID 連接 它。這稱為外鍵連接。
嗯，這個ID，就說是25的ID吧？好 吧，而不是擁有，好吧，這個
列，由姓名為人，用戶 ID 為 25 的用戶，
我們想說，迦勒咖哩。所以我們有 一個連接，從用戶表中獲取名稱，
和一個情節並將其與評論表的評論 連接起來以得到這個新生成的。
桌子。這只是一種看法。它實際上並沒有 像這樣存儲在數據庫中，我們只是
為數據的真實存儲方式創建了一個 新的說明。然後我們可以擁有
該人的姓名後跟評論，或該 人的評論。你可能會問，
為什麼不直接使用名稱作為參考 ？嗯，那是因為很多多人
例如，可以具有相同的名稱。所以 我們總是需要一些獨一無二的東西
聯繫。如果你不想使用 ID， 你可以使用類似自然的東西
鑰匙。例如，使用您的名字，但我經常 使用 ID。我們將更多地談論這個
在即將上映的視頻中。所以是的，這就 是我們到目前為止所討論的所有詞彙，
差不多。如果您對其中任何一個有 任何疑問，請發表評論，我建議
你把這些都寫下來，我應該一開始 就告訴你的。但無論如何，
我建議你把這些寫下來，以及 定義，研究它們，學習它們。
尤其是從之前的視頻中學習所有 這些不同的術語，這意味著
同樣的事情。因為過了一段時間， 你就會習慣這些術語。但如果你是
只是學習，你不知道這些是在 談論同樣的事情，好吧，那麼
你很容易混淆。所以我建議你 學習。好的。一行也稱為
翻滾，也被稱為隨便什麼，等等，等等 ，等等，這會對你有幫助。什麼時候
我說的是什麼詞，你知道我 在說什麼。你不必喜歡，
檢查您的圖表或其他內容，或觀看 其他視頻。所以這是我肯定的
建議你也記住。對於 SQL 的 東西。沒那麼重要，比如
DML DDL。但我建議您也記住所有 這些術語。我們會說話
關於原子值。
所以
原子值，基本上只是意味著 該值存儲一件事。
我們存儲在數據庫中的所有內容都應該 是一回事。當我們有列時，它們是
關於一件事。該列中的所有值 都是一回事。我們有專欄
命名。那麼，名字由什麼組成 ，你可以有名字、中間名和
姓。
嗯，這個，
雖然我們談論的是一個東西和一個 名字，但它並不一定是原子的，
因為我們在一個名字中存儲了三個名字 。所以如果我們想讓這個原子化
數據庫設計的最佳做法是將 其分解為名字、中間名
姓名和姓氏。所以現在我有 Caleb，Daniel， 通過三個不同的名字，對嗎？
好的，所以
當我們存儲我們想要去的東西和數據庫 時，我們想嘗試使它們原子化。
現在我們不想走極端，在那裡我們 將所有東西都分解成不存在的地方
甚至有任何意義。但我只是想，原子 ，一個原子，當這個詞出現時
大約，我們從來沒有真正分裂過一個原子 。所以我們認為原子是最小的，不可分割的，
變成看得見的，我想到了這個世界上的那條信息 。現在我們可以拆分它，但無論如何，
只是有時候，你可能會想，哦， 這不是一個好詞，但每個人都會
仍然使用這個詞。所以只要把原子看作 最小的一個，一個單獨的東西
存儲。現在我們不想走極端。例如 ，如果我們有這個詞，訂閱。
這是一個詞，一個詞，不要 走極端，我們把它分成像
單詞就像單個字母。因為那會很 荒謬。就像，好吧，我們存儲
在一張桌子上。我們沒有名字 ，姓氏，而是第一個的首字母
名稱，本實驗室的第二個字母， 名字，第三個字母，超過的名字
名。那沒有意義。我們想把它 分解成我們可以把它當作一個
例如，一個錯誤，一個電話號碼，它 通常有一個區號。嗯，我們不
想把一個電話號碼分成多個部分 ，我經常只存儲電話號碼
一體，因為你把它當成一回 事。當我們來到地址時，一
地址由多個組成，我們有一 個街道地址，
我們有一座城市。
然後我們有一個州，我們有一個區號
對於郵政編碼，我的意思是。所以地址 ，我經常把它分成多列，而不是
比用 123 存儲一個地址。史詩車道。合法 的加利福尼亞 73821。而不是存儲
所有這些，在一個專欄中，我將其分解 為街道地址、城市州
區號。
然後這允許我們對我們的數據運行更 複雜的查詢，因為我們可以選擇
來自加利福尼亞州的所有用戶，或者 我們可以選擇所有居住的用戶
在這個城市，或者幾乎任何類似的地方 。所以這是正常情況之一的一部分
形式，我們將在未來討論。但 至於現在，只想著存儲一切
作為一個。因此，我們不僅希望 該列與一件事有關，例如地址是
只是一個地址，或一個電話號碼，只 是一個電話號碼。但我們想要其中的值
那也是單數。例如，我們可以 有一列最喜歡的電影。這
行不通，因為在該列中，我們可以 存儲無限的電影。然後
也是不當的。所以這不會奏效 ，每個列標題都應該
成為唯一最喜歡的電影。你可能 會問，你會如何存儲多個
電影？嗯，這與更複雜的關係有關 。這是我們會做的事情
很快就會談到。但解決方案不 是在一個列中存儲多個東西。
這個視頻將是關於人際關係的。 我不是指把戀愛當成約會建議
因為我可能無法給予任何。
但
除此之外，我們正在討論數據庫關係。那麼 什麼是關係呢？那麼，在數據庫中，
一切都是相連的。把它想像成一 個巨大的網絡，以某種方式連接起來
到別的東西，而不是把所有東西都放在一張 大桌子裡。對不起，我的什麼我的板
有點濕，寫得不是很好，我們 分開了。然後我們有兩個
更小的表是為了便於管理的數據，以及 數據完整性的原因。所以現在，
我們仍然要保持數據之間的連接。所以 我們拿一張大桌子，打破它
放入兩個表中，然後我們就有了所謂 的關係。
有多種關係。我們將 在接下來討論這個
視頻。但是對於這個視頻，我們 將討論關係的一般概念。
所以關係，談論實體，實體是我們 存儲數據的任何東西。所以
這是一個實體。這是一個實體 。它們以某種方式相互關聯。
他們之間是有關係的。這塊 橡皮擦
我們走了。好的，
我們走了。所以現在我的黑板。好 的，所以我必須擔心實體。有
我們之前談到的兩個術語。實體和屬性 、實體或我們存儲的任何東西
有關的數據。屬性是我們存儲的關於 數據的東西，嗯，當涉及到實體時，
當這些屬性是我們存儲關於實體的內容 時，基本上，我們就有了實體。
然後我們有實體的屬性，對，然後 我們有一個不同的實體
所以作為我們數據庫設計的一部分 ，我們弄清楚我們存儲的所有東西
數據，就像一所大學，我們 可以存儲關於學生、教授、
班級，教師，其他任何東西。所以 我們會有多個實體，並且
然後多個屬性
關於
那個實體。
然後我們可以擁有第三個實體。所以 想想俱樂部，學生，教授班。這
是我們數據庫的一部分，我們的數據庫 。所以我們的數據庫結構由三個
實體和每個實體的屬性 。什麼是屬性的示例？
嗯，它可以是學生的姓名，學生的地址 ，他們正在上課的課程，
什麼，那裡，什麼，都無所謂。他們 是少校，那是另一個實體，我們
可以有一個關於專業的實體，例如 科學或其他任何東西。然後
我們可以為此設置屬性，例如 獲得該專業所需的課程，
需要多長時間等等。這將成為我們 數據庫的一部分
結構體。嗯，這些
在某種程度上仍然相關。因為我們 有一個學生是一個學生要上學
對於一個專業。所以從這個實體 到主要有一個聯繫。所以讓我們
將這些替換為像，這裡的學生。然後 好吧，這看起來像廢話。我本可以有
在這裡放一些具體的例子。我們可以 有一個學生 我們可以有一個教授樣本
證明，然後我們可以上課。然後我們 可以有專業。嗯，一個學生去上學
為了獲得專業，學生需要上課 。課程由教授教授，教授的
通常有他們教授的特定領域。所以他們 可能是少校的一部分，比如
該專業的教師大聯盟。任何。學生 是的，你明白了，一切都是
連接的。所以當我們設計關係時，這會告訴 我們我們想要如何構建我們的關係
表。這將在下一個視頻中更 有意義。所以我只想介紹
本視頻中的關係理念。下一個 視頻我們將討論一個特定的
種關係。
所以，
一
至
一個，這是一種關係，還有 另外兩個，一個，多，多
太多。以下是三種類型的關係 。我們將討論其中的每一個
單獨，在接下來的三個視頻中 。這將是一對一的關係。
所以我想知道一種關係
基本上只是意味著一個實體與 另一個實體有聯繫。那就是
他們所能擁有的一切。我喜歡考慮婚姻。所以 我們有了丈夫和妻子。
這是一對一的關係，因為丈夫 可以有一個妻子，而那個妻子
可以有一個丈夫，丈夫不能有 多個妻子，為什麼妻子不能
有多個丈夫，這是一對一的，因為 一個實體僅限於另一個實體。
如果他們想要一種關係，則此實體也 僅限於另一個實體。所以另一個
一對一關係的例子是社會安全 號碼。好的，所以一個
美國的社會安全號碼基本上只是 每個公民都有的唯一號碼。
有，我認為偶爾會有重複，儘管 一般來說，你會想到社交
安全號碼是一個人獨有的。所以我們 將其定義為一對一的關係。
即使存在重複數據的可能性 。
一
一個人只有一個社會安全號碼。一般 來說，那個社會安全號碼是
應該只有一個人。所以我們有 一個人。然後我們有社會保障
數字。一個人有一個社會安全 號 分配一個社會安全號
對一個人來說，如果你想拉出你 的關係，你可以說person as one social
安全號碼，社會安全號碼。
分配。
對不起，是的。好的，所以分配給 一個人。所以一個人被分配了社會保障
號碼，社會安全號碼分配給 一個人，我們不會，即使有
社會安全號碼可能重複的可能性 。我們想這樣設計
辦法。因為這就像說，社會 安全號碼應該被分配
分配給多人。它不應該是它 應該是獨一無二的人。
所以我們設計成一對一的 關係。我們將討論一對多
下一個視頻中的關係，然後 是多對多關係。在那之後，
我們將討論如何在數據庫中設計 它。我們如何構建我們的
表。所以在上一個視頻中，我們談到 了一對一的關係，那就是一對
我們可以擁有的三種關係 。另一種是太多了。什麼
這意味著一個實體可以與多個其他 實體有關係，但一個特定的
實體只能關聯回另一個實體。 我知道這聽起來有點令人困惑
當我們談論實體和所有這些概念性的 、高層次的思考時會感到困惑。
但是想想就像在網站上發表評論一樣 。當你上 YouTube 或其他任何東西時
你去下面，你可以對我的視頻 發表評論。該評論僅屬於
你。它有你的名字。那是一 對多的關係。這樣做的原因
是可以發表多條評論，但一條評論 只屬於一個人。所以要
畫出來，你有我有一個用戶。 我們有多個評論。你可以看到
用戶可以發表多個評論。但是每 一條評論，就像這個評論一樣，
例如，僅由一個用戶擁有， 即一對多關係，或
一枚硬幣，許多。
你能看到嗎？是的，我認為你可以。 所以這就是一對多關係的運作方式。
如果你想再想想婚姻之類的事情。想想 一個國王，他叫什麼名字
國王，山姆。而山姆要求有多個妻子 ，而且他對妻子的控制力超強。
所以山姆有多個妻子，對吧。所以我 在這裡的黑板上有點幹。我們有
山姆國王在這裡。
給他一頂王冠，
給他一個大大的微笑。他是皇家的 ，在獅子中很有名。而且他真的很自私
對於這個女人，他要求有500個妻子，或者 他想要多少個妻子。所以我們有
他所有的妻子都在這裡。
所以他有這兩個妻子，然後他有這個 妻子在這裡。她長得沒那麼好看。
但不管怎樣，他娶了這三個老婆 。雖然他非常，但他非常保護
並且對他的女人非常自私。而且他不 希望這些妻子嫁給其他男人。他
他們嚴格地嫁給了國王。所以國王 可以娶多個女人。但每個女人
只能嫁給一個人。哎呀，我有點 已經畫好了線。所以他們
只能嫁給一個人，他們不能嫁給 另一個人，那就是一個整體
否則他們的頭不會發生這種情況 。明白我在說什麼嗎？不是
去上班。所以這是一對多的關係。在上 一個視頻中，我們談到了一個
許多關係，關於我們談論一 對一關係的視頻。出色地，
現在我們談論關係的第三 種可能性。這是多對多
關係。所以當我想到多對多的 關係時，我喜歡想到一夫多妻制
婚姻，多個丈夫可以有多個 妻子。並且可以有多個妻子
多個丈夫。我只是把這個畫出來 。所以你可以理解這會是什麼
像。我們這裡有國王，對吧 ？假設他是國王，他決定
娶三個女人。
讓我們快點彌補吧。
這傢伙的
為什麼要三個老婆？來吧？
我們走了。
所以這傢伙嫁給了這三個女人， 對吧？然後他非常保護。但
然後他決定哦，見鬼了，如果他們願意 ，他們可以嫁給不同的男人。誰真的
關心。所以這個女孩嫁給了另一個男人 ，對吧？所以現在她嫁給了兩個人。
正確的？怎麼了，先生？
只有國王才能做到這一點。嗯，不 是現在。因為這是一對多的關係。一
國王可以娶多個女人。一個女人可以 嫁給多個男人。所以這個人結婚了
給這個女孩。這個女孩嫁給了這裡 的這個人。而這傢伙結婚了
給這邊的這個女孩。所以莎莉嫁給了 吉姆，吉姆也嫁給了這個女孩
這邊。
看到我的手繪在這裡。
而這個女孩，出人意料地，嫁給了這個 男人。她嫁給了凱西，凱西也是
嫁給了吉姆。順便說一句，吉姆嫁給 了國王的第二任妻子，國王
是瑪麗在這裡做的這個女孩。你 看，它很快變得非常複雜。和
這是多對多關係的一個例子。
現在，很明顯，你
不會在數據庫中存儲類似這樣 的東西。所以讓我想一個實用的
例子真的很快。我可以想到一所大學 ，特別是一個班級和一名教師。好的。
就是這樣，讓我們考慮一個班級和一個 學生。所以這是一堂課。這是一個
學生。
好的。
現在，一個班級，一個班級可以有多少 學生，你知道的。所以我們可以
這個班有多個學生。讓我們更快地 繪製框。所以讓我們說所有這些
盒子是學生。一個班級可以有多個學生 。嗯，不僅如此，還是一個學生
可以上多門課。所以這個學生 可以上這門課。這個類可以是
也被那個學生帶走了，還有這裡的 這個學生。這個學生可以再拿一個
班級，可以有這個人，這個 人，這個人可以在這個班級
以及。順便說一句，他也是一名戲劇 運動員。他也在上另一堂課，如果
他在那個班級，有那個學生和 那個學生，它變得非常複雜。
所以你可以看到這可能非常非常難以 存儲在關係數據庫中。和
我們實際上無法將其存儲在關係 數據庫中是有原因的。你可能是
思考，好吧，如果您需要存儲 學生正在上的課程怎麼辦
一個班級的學生，我們將 在接下來的視頻中討論，
通過解決多對多問題，多對 多關係在關係中不起作用
數據庫，唯一可以工作的兩個 是一對一和一對多的關係。
但這只是概念，你想到 多對多關係的概念，
想想一個班和一個學生班可以有很多 可以有很多學生和一個學生
可以上很多課。在最後三個視頻中， 我們談到了一對一的關係，
一對多關係，以及一對多對 多關係。這個視頻，我想要
為了談論我們如何設計這些關係 ，我決定將它們分解為
三個視頻。首先，我們將討論 設計一對一的關係，然後
一對多，然後多對多。所以這個 視頻將是關於設計一對一的關係
在一個數據庫中。好吧，讓我們開始吧 。所以我們首先需要意識到的是，當
我們有一個一對一的關係，屬性方面 ，所以我們有一個實體。那麼讓我們
假設我們只是說我們在一個人和他們的 用戶名之間建立了聯繫。好的。
所以我們有這個，我們有這個人，讓 我擺脫這些盒子。我不是這個意思。
我們有這個人。他在一個網站上有一個 用戶名，我們只會說它是 Caleb curry，
因為這通常是我的用戶名。我們只會給 這個人起名字。正確的？出色地，
那個用戶名，唯一擁有那個用戶 名的人就是他。而他只是
將有一個用戶名，該帳戶將只 有一個用戶名。那是一個
一對一的關係。所以我們需要意識 到這是這個人獨有的。它是
所有命中，沒有其他人擁有它，沒有其他 人與之相關聯。這只是命中。以便
意味著我們通常可以將一對一關係存儲 為屬性而不是實體。所以相反
他的用戶名不是一個實體，而是一 個屬性。如果你真的不知道那是什麼
意思是，別擔心，我馬上 就會解釋。但就這麼想吧
完全是他的，所以這是它描述他的一部分 。這個人的用戶名是什麼？是迦勒
咖哩。這是那個人的一個屬性。 當我們談論一對多的關係時，
但是，太多太多了。我們認為 像一個類。班級的學生不是
專屬於那個班級。他們可以參加 其他課程。因此它不會真正使
將它們存儲為屬性是有意義的，因為 它不是真的，它只是沒有多大作用
感覺。我知道，一切都會清楚的， 所以請稍等。所以我們實際上可以
有一張桌子。賬號和賬號 用戶名的關係可以
僅作為表中的列存儲。所以我們有 一個ID。然後我們有了名字，
例如。然後是用戶名。此用戶名專 屬於此人的此 ID。所以
像六個，
迦勒，
Caleb curry，這就是我們設計一對 一關係的方式，我們會把它放在
同一張桌子。如果我們有一個新行，在我們 的表中，我們現在有一個新人，這個
一個人不能有 Caleb curry 的另一個用戶名 ，他們必須有一個不同的用戶名。
所以我們可以把它變成約翰 123。
這個名字是那個人獨有的。所以我們 只是將它存儲為我們表中的一列。
有道理？所以這是我們的個人行 。這個指向這個ID，是個人
實體。所以實體是賬戶 ，用戶名是賬戶的屬性，
有時我們會在多個表上 存儲一對一的關係。
我現在將解釋什麼時候會出現 這種情況，讓我們想一個例子
信用卡公司的數據庫 ，我們在持卡人和
卡片。持卡人是指拿到 卡可以使用的人
買東西，擁有它的人就差不多了 。然後我們拿到了卡。好的。
現在就這麼說吧，這家公司只允許 你擁有一張信用卡。所以這
持卡人只能擁有一張卡，且此 卡只能由一名持卡人擁有。
這意味著我們有一對一的關係，一對 一，我們如何將其存儲在數據庫中？
好吧，如果我們只是使用我們之前 討論過的屬性，這就是
它看起來像。這是我們的桌子。 我只是要列出這些列。所以我們
有持卡人表。第一件事是我們 想要一個持卡人的身份證，
我們可能會有持卡人的名字 ，持卡人的姓氏，然後
我們會有這張卡。所以我們可以說，好吧 ，那是他們的名片，我們可以說我們可以
分配每張卡和 ID 或卡號。所以我們 可以說卡號。如果他們有一個
卡，如果他們沒有卡，我們可以給它 一個值，我們可以將其保留為否。
可以認為是持卡人的一個屬性 。因為所有這些都指向
紙板。現在，如果我們想存儲更多關於 卡的信息，比如發行日期
當卡被交給這個人時，所以我們可以 說，卡發行。日期。現在好了
我們可以看到，這是依靠卡，而不 是持卡人。所以如果我們想存儲
額外的屬性，關於一對一關係 中的屬性，我們可以移動
到一張新桌子。我們可以把它做成一張 卡片桌，給它一個 ID。然後我們可以說
卡號
然後發布日期。
現在我們可以存儲盡可能多的關於這張 卡的信息。所以如果我們想存儲最大值
出來，是滯納金。幾乎可以存儲我們 想要存儲的關於這張卡的任何內容
在這張表中。我們可以用參考替 換這個卡號。所以我要去打卡
ID 並指向此 ID。你明白我在 說什麼嗎？這是一對一的關係
多人，就像這張卡 與卡有聯繫
持有者。
多個表之間存在一對一連接。 我們這樣做的原因是它可以
存儲有關卡的更多信息。因為如果我們 把它全部存儲在一張表中，我們會
有糟糕的數據庫設計。我會告訴你原因 。只需一秒鐘。
好的，所以
這是我們的桌子。
你能看到嗎，好吧，我們有 ID， 然後是這個人的名字。然後
我們有卡號，然後是最大金額 ，等等。嗯，你可以看到
這張桌子實際上是關於兩件事， 它不再是關於一件事，我們必須
說這是一個用戶和卡片表，這是 不正確的，因為我們沒有遵循
一張表應該是關於一個實體 的規則。一行應該是一個
實體。因為現在我們有了用戶端 ，然後我們有了卡片，就像嘗試
存儲兩個表。一、唯一 一次可以接受卡號
users 表是我們不存儲有關它的更多信息 的時候。因為現在我們所擁有的
是卡號。卡號是關於用戶 的，指向用戶。但最大
卡的數量與用戶無關，因此 ，它是依賴的，依賴的
卡上。所以我想知道一種關係，總而言之 ，一種，一對一的關係。
它的存儲方式是
一個屬性
在表中，或者如果您需要存儲有關 實體的更多信息，那麼我們
可以有另一個表，然後只使用 外鍵連接它們，這是什麼
我們將在即將發布的視頻中討論 。幾乎總是，你會看到一個
一對一關係，用作屬性。所以 當你想如果你有一對一
事物之間的關係，你有一個聯繫 ，假設它是一個約會網站，
用戶與另一個用戶建立關係 ，這是一對一的關係，
我們可以將其作為用戶表中 的一列。
所以我們可以有
用戶表，我們可以有用戶 ID、 姓名、名字、姓氏、電話
號，隨便。然後我們可以說 ，關係。那是一對一的關係
我們可以讓那是另一個 人的 ID。我們不必擔心
關於有另一張桌子。這個視頻 ，我們正在談論設計一個
許多關係。首先，我想把上一 個視頻中的一個例子帶回這個
視頻。所以我們可以解釋一對一和 一對多之間的差異。所以在
最後一個例子，我們有一家信用卡 公司，一個人只能擁有一個
卡和一張卡只能由一個人擁有。 讓我們把它畫出來。我們就畫
表和該表中的列。所以這裡有 兩個表，我們有用戶表。
然後是牌桌。這是當我們 將一對一關係存儲在多個
表。否則，我們可以將它存儲為一 列，因為我的意思是，我們只存儲
一樣東西。我們有用戶 ID。然後我們 有一個卡ID。然後連接這些
作為一對一的關係。我們有一個外鍵 。所以我們把連接卡ID放在
user表，card表中的用戶ID。那麼好 吧，ID，用戶ID，這意味著什麼
這就是它連接這些表。所以用戶 ID到這個用戶ID，卡ID到這個卡
ID，這就是我們如何與表建立 一對一關係。然後我們可以
在這個表中存儲關於用戶的其他信息，在 這個表中存儲關於卡的其他信息。
現在，要將其轉換為一對多，
我們可以把它改成很小的東西 。一對多的關係會說，
一個用戶可以擁有多張卡，但一張卡特定 的卡只能由一個用戶擁有。所以有
沒有卡不能由兩個人擁有，或共同簽名或 擁有。現在，我們這樣做的方式是
讓我快速擦除這些列。
作為從頭開始。
所以我們有一個用戶表，然後我們有一 個法院 ID。再一次，我們需要兩者的 ID
其中。所以我們有一個用戶ID，然後 用戶的一張卡擁有多張卡。和
我們不知道他們在那裡擁有多少，他們可以 擁有一個，他們可以擁有兩個，他們可以
有三個，他們可能有四個， 他們可能有五個，所以把
此處的卡 ID 為多列。因為我會 為卡片 ID 放五列，嗯，
那麼如果有人有六張牌呢？他們將 要做什麼？他們不是，他們不是
將有第六個。所以我們要做的 就是把用戶ID放到card表中，
點回用戶，我在這個表中。所以現在 ，如果我們舉出具體的例子，
假設我們這裡有這個人，
發表演講。正確的。
所以我們有這個人在這裡。而他的 用戶ID是63，只是一個隨機生成的數字
通過數據庫。嗯，我們這裡也有卡 。所以我們有這張信用卡，我們
有這張信用卡，我們實際上是在這裡 抽卡。所以我們有條形碼和
名稱和代碼以及所有廢話。然後 我們有這張卡在這裡。
我們建立聯繫，
我們希望所有這些都指向這個人。所以 我們給一個用戶ID，我們可以說
用戶 id 6363 63. 所以現在我們知道 每張卡都由 ID 為 63 的用戶擁有，
我們可以找出這個人，無論他叫什麼名字 ，我們都可以加入。所以現在我們存儲
表中的一對多關係，其中 多方獲得單方的外鍵
一側。如果你不知道外鍵， 那很好，基本上，簡單地說
外鍵的術語只是那個 Id 連接 是用戶 ID 是一個外鍵
指向主表中的用戶ID， 外鍵指向主鍵和主表
桌子。這也說是個孩子。對 不起，是親子關係。這會
成為父母，因為每個孩子都必須 指向父母。我們就是這樣
將一對多關係存儲在數據庫中。那麼我們 怎麼知道我們是否有這個例子呢？
我們有評論，購物網站上的 評論部分。所以你可以離開
那裡的評論。假設您可以發表評論 。我們有這張桌子 這些這張桌子
設置。我們有用戶。然後我們進行了 評論。我們有一個 ID 用戶 ID。然後
我們有一個評論 ID。我只是把它給 每一張桌子。每天我給每張桌子
一個身份證。然後我們有用戶名。然後 我們進行實際審核。所以用戶有
用戶名，評論有實際評論。我們 也可以說我們可以說我們有
一個評論標題。所以我們可以說喜歡哦 這個評論是這個產品很爛，還是這個產品
真的很棒。然後我們可以有一 段話，為什麼那個產品很棒，
例如。
馬上，
這設計不當，因為用戶 和評論之間沒有聯繫。
因為如果我們查看評論表，誰放 了誰發表了評論，它並沒有說
我們所擁有的只是評論 ID、評論 和評論標題。沒說是誰發的
它。所以如果我們放一個指向 用戶表的外鍵，那就是說
是家長，即發布該評論的人。所以 我們可以有一個用戶ID，它指向
回到主表中的用戶ID？這是 一對一的關係嗎？或者這是
一對多的關係？嗯，這個，我們 可以有多個評論，每個評論
會指回來。所以我們可以進行另一次審查 ，我們可以擁有相同的 ID。讓我們
想想一些例子。假設我們 的評論 ID 為 6。然後審查
很棒，是
好的。
它的用戶 ID 為 62。那麼我們可以 再創建一個帶有評論 ID 的用戶 ID
七個。它可以說，太棒了。然後我們可以 從用戶那裡添加它，Id 62。好吧，
這些都來自用戶 id 62。所以我們 可以說這是一個一對多的關係，
因為如果我們想要的話，多個評論會 返回給一個用戶。所以用戶可以
只發一條評論，好吧，那麼我們需要 把評論ID放在用戶表中。所以現在
我們有這種雙重聯繫
這裡的事情。
因為這個評論ID連接它。所以它 說只有一個評論 ID 可以來自
用戶。老實說，這，這可能 可以改進，因為審查不一定
直接連接到用戶。例如，如果該網站 僅是寬容的，則一項評論，
那麼我們可以給它一個評論ID。但 這可能不是最好的例子，只是
因為用戶可能會購買多種產品。每 條評論都可以輕鬆獲得產品 ID。
所以我的意思是，它有點複雜， 而且必須學習。但審查，它
最好讓它成為一對多的 關係，因為它不會真的
把它作為一對一的關係是有意義的。我們 希望它是一對多的，因為多個
可以給出多個產品的評論。所以 this 指向一個產品， this 指向
一個產品， this 指向一個產品，它們都是由 特定用戶創建的。好的，所以是的，
這只是您需要了解的一些 基本設計概念。當你有
一對多的關係，只需存儲 兩個表，並給一個外鍵
許多邊指著一邊。在我們開始 多對多關係設計之前，
我想談談父子關係。所以當 我們設計這些關係時，
表始終是父表，表始終 是子表。當我們談論
鑰匙，鑰匙讓事情變得獨一無二 。他們總是他們用來連接表
有關係。所以每個 t 表都有一個鍵來保持 它的唯一性。當我們創建一個外國
鍵，它引用另一個表中的主鍵 。所以主鍵是父鍵。這
外鍵是孩子。孩子 指向父繼承的值
父母。例如，父母 ID 是 6，然後外鍵指向
父母六歲，工作。所以在一 對一的關係中，我們只是
把所有東西都放在一張桌子上，這是 最實用的
做事的方式，我們不
不必擔心主鍵或外鍵，我們 只有一張表。就這樣
我們有，他們只有這個表中的列 。所以我們有用戶名，密碼，
用戶名，其他任何東西。所有這些 都只是表中的列，我們不
不得不擔心父母或孩子，因為 他們沒有建立任何關係
多個表。但是，當我們達到一 對多時，就會有這個表指向。
或者有很多孩子。所以你會說 這是父母的一面。然後我們
有每個父母的孩子。這些 都指向父對象
外鍵。
因此，如果您想到 YouTube 視頻上的點贊評論 ，那麼每個評論都有一個海報或用戶
單擊發表評論的人的帳戶。 這意味著評論者是父母，
而評論是孩子。另一種 思考方式是，如果你是
如果在 YouTube 上發表評論，您就可以 知道是誰發布了該評論。那是因為
孩子總是指向父母。現在，如果 您查看 YouTube 上的用戶帳戶，
例如 Caleb，視頻製作者到很棒 的頻道，檢查一下，並確保訂閱。
好吧，你不一定知道那位家長 給出的每一條評論，那裡
可能是那裡的一個提要，上面寫著最近的 評論。
但
當我們看
孩子，我們總是知道父母，因為它繼承 了
價值。
但是父母不會從孩子那裡繼承任何 東西。想想現實生活中的你
可以看到已婚夫婦，
和
你不知道他們有沒有孩子。但是如果你 看到一個小嬰兒，我們認為，所有
對，那個嬰兒有一個或多個父母 。這是與數據庫設計類似的想法。
想想父母和孩子之間的 這堵牆。
這些孩子
從父級繼承值，例如外鍵 ，a 7，它告訴我們誰是
父母是。這很重要。我知道，看起來 沒問題，誰在乎，誰是父母
或者孩子，繼續進行數據庫設計，你 知道，我要退訂嗎？出色地，
這很重要，因為當我們開始 了解如何設計每一種關係時，
我們需要了解我們將外鍵放 在哪裡，外鍵進入哪個表。
這是由孩子決定的，因為孩子 總是有指向回來的外鍵
到主鍵。所以用戶ID、主鍵 、用戶ID、外鍵都指向主
關鍵用戶 ID。所以外鍵總是 在子項中，主鍵在父項中。
當涉及到很多很多關係時， 我們會遇到父子關係的問題。
這就是為什麼我們不能在數據庫中 存儲多對多關係的原因。就是這樣
我們將在下一個視頻中 討論多對多關係時，
具體來說。但是只要知道當我們有 一個實體時，我想讓你考慮是否
不管它是否有父母，很多時候它 會有，但其他時候沒有那麼多。
但是如果你想到一個商店的訂單 ，一個訂單需要一個父級，因為
訂單是當您購買正在購買的產品時 ，必須有人購買。不然就不行了。
它不會存在，如果沒有訂單，孩子就 不會存在。那麼讓我們重新審視
這。
這
是用戶，這是訂單。從邏輯上講， 我們不能沒有父母的孩子，它
只是沒有意義。因此，如果沒有 訂單的父級，則訂單將不存在。
首先，我們需要保持這種聯繫。 訂單需要購買該訂單的人。
希望這是有道理的。所以 請記住，父子關係。
我不是要重複自己，而是要重複 自己。所以你被摧毀了
你的大腦，外鍵在孩子身上， 主鍵在父母身上。很快我們就會
更深入地討論密鑰。所以 暫時先記住主鍵和外鍵
key primary 是用戶 ID。外鍵是對 該用戶 ID 的引用。它在一個
外表，它指向原始表。這個 視頻將是多對多的
關係。哦，我們正在談論 設計多對多關係。所以我
幾週前，視頻前說我們在 設計多對多時遇到問題
關係。他們行不通，對吧？他們沒有 。我的意思是，我從來沒有真正解釋過
為什麼。好吧，這個視頻，我將解釋為什麼 。想想，讓我們想一個很好的例子，
一個大學班可以有很多學生，一個 學生可以有很多班。所以我們有
我們必須擔心兩個實體。
我們有一個
班級。
讓我們把它複數化，因為它更 有意義，類，然後是
學生們。
所以讓我們想一個例子，我們會 嘗試對待我們會嘗試設計的方式
這個，它不會成功，對，但我們 只是我們會嘗試。這裡我們有
classes 表，我們有一個特定的類， 例如數學，數學，101，等等。
所以我們有馬特，我們甚至看不懂我的 筆跡是如此糟糕。所以我們有數學一
在一個。然後我們列出這個班級中 的所有人員。所以我們有學生號
一。然後是二號學生。然後是三 號學生。好吧，好吧，我們
可以試試。除了，如果學生輟學怎麼 辦？那麼我們有一個空值，它
如果可能的話，我們不想擁有這些。如果 我們需要四個學生怎麼辦？嗯，那就是
不會工作，因為我們只有三列。那麼 我們還能怎麼做呢？嗯，我們
可以試試只招學生。好吧，那麼 每一列都可能有 100 名學生，
我們已經了解了原子規則，我們 只希望一列存儲一個值
一名學生。那麼我們該怎麼辦？好吧 ，那是行不通的。我們這邊試試。
讓我們在學生方面嘗試一下。我們有 一張學生桌。所以我們有吉米，還有
他正在拿他的第一個。好的，讓我們 列出列。所以我們有了名字。和
然後我們有第一類。然後我們 有第二班。然後我們有課
第三。嗯，這很酷。但是，如果他 想上四節課怎麼辦？出色地，
然後我們必須添加一個新列。 假設一個精神病患者需要 20
類。所以現在我們一直到第 20 班。然後一個新人來到
學校。而且他只上一門課。所以現在 他的第一堂課就像數學。然後有
那個空的人有 19 列，因為我們 必須為每一個列減半
人。我們是這樣想的，我們把它畫出來 了。所以你在哪裡可以更好地看到它，
我們會有一張桌子。然後我們就 有了這個人的ID。然後上課。
所以曾經像一班，二班，三班， 四班加五，六班。讓我們只是
就這樣吧。我們只是為這些做一些 行。我們有新人註冊。
所以我們有一個 ID 為 6 的人。他的第一 堂課是數學。正確的？然後他的第二個
課程，地質學，然後是西班牙語，然後是 時尚。
然後
生物學，然後是化學。然後我們來了 一個新人，他的身份證，八，
他只學科學吧？好吧，現在我們沒有 了，沒有空了。我們浪費了所有
這個空間。你可以假設這將繼續 發生。所以這是浪費空間
在我們的數據庫中，糟糕的設計。那 我們怎麼辦呢？嗯，訣竅是，因為因為
我們會想，如果我們試著像父母的孩子 一樣思考，在這種情況下誰是父母？
好吧，一個班級有多個學生。 這將使班級成為家長和學生，
孩子，但一個學生可以有多 個班級。這將使學生成為
家長和班級的孩子。那麼，這 是父級，這是怎麼回事？
家長同時，
這意味著
這指向一個孩子。這指向一個孩子 。所以這個父母是這個的父母
父母也是這個孩子的孩子， 這讓我大吃一驚，我不
甚至知道發生了什麼。所以我們這樣 做的方式是將它分成兩個，一對多
關係。所以這個多對多，將成為 一對多。然後一秒鐘，
我想，我想沒問題。好的，只是 為了你們，作為信息，這些冒號
事情，我認為正確的做法是 很多二，四，就像結束一樣
繼續進行下去。別擔心。我們將 談論那個。在即將發布的視頻中，
我只是為了我的緣故才寫那個。所以 我們要把它分解成一個多。和
然後另一個太多了。但另一方面。這 就是我們解決該問題的方法。好的。
所以讓我們用類來實現它。還有 學生。我們需要的是所謂的
一個中間表，或一個路口
桌子，
他們都是一樣的東西。我會寫出來的 。所以你可以聽到我進入媒體或
交界處。這張桌子還有 50 個其他 名字，但我的意思是，只是中間人
表會正常工作。所以，我每天 都在。那是什麼，就是這樣
我們連接我們的桌子。所以我們 把它分成三個表。所以我們有
中介表，也就是我剛才說 的那個。然後我們有學生
桌子。然後我們有了班級表。 所以班級，學生，這是中介表。
所以我們有一個這樣的一對多 關係。然後我們有一對多的關係
走這條路。所以一，
許多，
一，對很多人。我知道這起初看起來有點令 人困惑，但相信我，它會有意義。
一旦我們開始更多地解釋事情。所以 我們有一對多，一對多。這是
中間表。所以讓我們畫出這 種聯繫。所以我們可以想像
這個多一點。有點像拆分這個看看它 是如何工作的。所以我們正在存儲
一張表中兩種關係的多方面 。那是因為我們知道一個
許多關係分佈在兩個表上。因此 ，一對一，對，正在共享。
所以我們要命名的是，我們會說，我們 可以命名它。以班級學生為例。
這些 將有外鍵
指回班級和學生。所以現在 我們有點明白它是什麼了
好像我們畫的時候，我們舉個具體 的例子來說明一下。其實就像
它會像什麼一樣工作。好吧 ，假設我們有我們的課程
這邊。我們的學生在這裡，好吧，所以
第一件事。
我們有比喻，只要保持簡單的數學。 科學，我的意思是，顯然，越深入
像數學101，數學，兩個
五，或
1200，什麼的。然後我們有英語。 但為了簡單起見，讓我們說這些
是學院僅有的三個班級。好的 ？然後我們有我們所有的學生，
我們有 Caleb，我們有 celeb，我們有 calib。 然後我們有了，伙計，我太自負了
我曾經談過的就是我自己。好的，
讓我們擺脫我的名字。
我們一起去
約翰尼、傑克和莎莉，
還有克萊爾，克萊爾。
好的，這裡是我們班的所有學生 。
班級，
學生們，
我們在中間連接這些。首先，我們 給他們所有人一個 ID，因為
將是我們的主鍵。所以我們只給 這些隨機分配的數字，這很漂亮
主鍵是代理主鍵。所以我們會 得到這個 163，這是一些東西
我們的數據庫可以為我們做。這個 將是 75。而這個將是
89.
所以你們可以清楚地看到，我們會在 這裡做同樣的事情。所以約翰將有
八人的身份證。 Jake，17 的 ID。Sally，16 的 ID。還有 Claire，剛剛獲得的 ID
666.因為她是 666.我開玩笑的 ，我們就一起去
六。
現在我們使用中間表來連接這些 ID。 所以我們這裡有這張表。我們
有兩列。我們有類 ID。然後我們 有了用戶 ID。然後如果你
想要給這些表格命名，我們可以 把它設為班級、班級學生和學生
中介表，中介是什麼，它是 連接兩件事的東西，它是
就像，它允許這張桌子與那個桌子 交談。所以這是這些之間的聯繫
兩張桌子。我們將用戶的 ID 與他們正在 上課的課程放在一起。所以讓我們說
約翰正在學習科學英語，我們會 有 875 889，真的很大，我要去
很快就用完了房間。它的 作用是使用這個中間表，
我們可以找出所有這些用戶 ID 都 指向一個特定的人。還有這些
ID 指向特定的類。我們不重複 數據，因為我們需要知道
用戶有這個類 ID 這是一個指向 一個特定值的外鍵。所以
這意味著如果約翰決定退出， 那麼我們有外鍵約束要得到
擺脫這些。這樣，我們就不必擔心不 正確的數據或用戶。我想，我是
對不起，這應該像學生，對不 起。但我們不必擔心學生
WHO
我們不必擔心註冊不存在的 學生。所以這就是解決方案
在多對多的關係中。這個視頻 真的很長。所以莎莉可以做
同樣的事情。我們可以說 16。然後是 75。她選擇了科學，克萊爾，她選擇了
a 她學過數學。如果我們真的想的話，我們 會繼續前進，比如可以製作這張桌子
我們想要的那麼大。基本上這是使用盡可能 多的數據庫的最簡單、最好的方法
資源存儲盡可能，以及現在我們 解決了很多，對不起，家長
兒童關係。那是因為我們有 父母在這裡。我們也有家長
這邊。他們指向子表。所以 這個子表成為兩者的孩子
這些父母。有點像在現實生活中 每個人都是兩個人
父母和
這個人是在提爾排的意思，好 嗎？將其應用於此，父類是類
和班級的學生，孩子是 一排，我們有班級和
學生，這裡需要是獨一無二的。這是一 個單獨的孩子，我們不能有663。
再一次，因為那是說，克萊爾正在接受 科學和克萊爾，
對不起，數學，
克萊爾學數學，而玩家學數學， 這是沒有道理的。所以這個對
這是唯一的 63 到 6，您可以將其 放入兩次。所以孩子是一個個體
父級和另一個父級之間的連接。 所以這就是你正確存儲的方式
多對多關係。我知道所有 這些關係都有些複雜，
而你並沒有像一塊愚蠢的黑板一樣 真正理解。但就像我說的，我們會
進入屏幕上的計算機視頻 和介紹。我是說，我說
在介紹中，我們不會做 那個介紹，因為那不會
感覺。所以是的，我們將解釋這些 概念。然後我們將應用這些
概念到實際數據庫。一旦我們 了解了所有的數據庫概念。這
視頻將總結我們學到的所有 關係垃圾。基本上，這
視頻將像，所有這些都合而為 一，而且會很棒。它正在發生
在這之後更有意義。所以 你需要意識到的第一件事
說到關係，是不是每個 人都有明確的關係
環境。有時你有，這是 你必須決定的事情
你自己。所以我的舊數據庫設計 系列，如果你想看看，就
轉到我的 YouTube 頻道。很多人 都糊塗了，好吧，是學生來
班級？這是一對一還是一對多 或多對多的關係？嗯，那就是
你實際上必須自己決定 的事情。有時你有
邏輯地思考關係的應用。 所以讓我們想想這個例子
一個班級和一個教授。那是一種什麼樣的關係 ？我不知道。讓我們試著找出答案。
所以我們有課。然後我們有教授 。人們會問我，比如，好吧，
這是一種什麼樣的關係？嗯，這取決於 應用程序。如果是我的話
字面上可以是所有三個，這取決於 您的應用程序需要什麼。如果
這是一對一的關係，這意味著一個 班級可以由一位教授教授，並且
一個教授可以教一門課。如果是 一對多的關係。這意味著要么
一個教授可以講一堂課，一個 教授可以講多堂課，或者
許多教授都可以教授與課堂相反的課程。 但是一個教授只能教一門課。
或者它可以是多對多的關係 ，一個教授可以教多門課程
可以由多位教授授課。所以這 取決於大學 因為有些大學
將允許該課程由多名教授 授課，其他大學則
不會允許的。所以這取決於數據庫 的應用程序。如果我在建造
一個大學的數據庫，它確實允許一個班級 有多個教授，這意味著它是一個
多對多的關係，因為很多教授 教很多課。教了很多課
許多教授。正確的？所以當談到 設計一對一，一對多，和
多對多，我將向您展示如何在教授的 課程中完成所有這三個任務。所以
如果我們一對一，我們可以有，例如 ，我們可以有教授
正確的。是
將有一個教授表只知道如何拼寫 。但教授是我不知道是否有
兩個F，誰在乎，教授桌，對吧？如果 是一對一的關係，我們可以
有教授ID，教授姓名。然後我們 就可以上課了。那是班級
他們教的。這是他們教的 唯一課程。該課程僅由
主任教授。也就是說，這就是您存儲 一對一關係的方式。通常，您是
不會對另一個實體這樣做。當它 說到喜歡一個名字的時候。你
通常會這樣做，因為名稱只是 分配給那個人。一個班可以
我的意思是，通常教授可以 教多門課程，除非你是
那種兼職老師，但上課，在這種情況 下是一對一的關係。如果我們想要
使其成為一對多的關係，否則 我們會在這裡停課，得到一個
新的表類，我們有一個類 ID。在這裡 我們可以放更多關於班級的信息
我們會有類名。這是存儲 信息的最常見方式
兩張桌子。你很少很少在多 個表上存儲一對一的關係，
但有可能我們之前討論過，我們 有類名，然後我們可以有
關於班級的更多信息。然後我們 有一個外鍵類 ID，那就是
將其設為父類，因為類 ID 指向類 ID，如果您希望將其作為
父母，那麼我們會切換我們會 做的
教授
ID，
這可能是最合乎邏輯的方法 。但你必須牢記這一點
因為它可以是一個一對多的方向，一個 一對多的這個方向，或者可以是一個
一對多這個方向。顯然，通常 情況下，班級將是許多
一邊是因為一個班可以多人教，我 的意思是一個教授教多個班。
這意味著一方面教授人數 眾多，這意味著我們需要
給這邊的教授ID。所以證明 ID是一個外鍵，引用
教授表中的證明 ID。這就是 你如何繪製一對多關係。
這個方向對我來說，父子。現在如果 我們想在多對多中做到這一點
關係，我們實際上不得不將其進一步 分解為三張桌子。所以現在
我們有教授的桌子。然後我們 有了班級表。然後我們有
大概是班級教授表，也 就是中級中介表。
所以我們有
這張桌子在這裡。這個表在這裡，這個表 在這裡，這個，這些，這個都有一個ID，
教授ID，這個會有一個ID，class ID。 然後你在這個中介中引用這個
表，我們有六人的教授 ID， 七人的班級，教授 ID
六人，八人班，基本上 就是說這個有ID的教授
六人正在教兩節課。現在，當 涉及到這個表的 ID 時，整個
事物本身可以是一個 ID。或者如果你 願意，你可以給它一個新的ID說班教授
ID。這有點不相關。所以這幾乎 是我們稍後會討論的。但
這幾乎是設計關係的 歌曲。一對一通常在
一張桌子，一對多，這是兩張 桌子，孩子有一個外鍵指向
父母，然後是多對多的 父母，中間人是孩子
指著父母雙方。希望這一切都 非常清楚。而且很棒。因為
現在你真的知道如何設計每一 個二元關係和數據庫設計。和
二進制，我的意思是兩個表之間的 關係。所以你可以有一個二元關係
我們談到過，有一對一超過 兩張桌子，有一對多超過
兩個表，邏輯上有很多對多 於兩個表，但是我們必須
將它們分解為將它們存儲在數據庫 中的最佳方式。但是這個
基本上是二元的，因為我們在談論 兩個實體。一個班級和一個教授，
一個學生和一個班級。您可以在 多個表之間建立關係，但那是
我很抱歉多個實體，但這是我們必須 在未來的視頻中解決的問題。
哇，沒有看到你在那裡，天哪。無論 如何，在這個視頻中，我們將討論
關鍵詞。
所以，鑰匙不是你用來開門的東西 。數據庫中的鍵是別的東西。
一把鑰匙讓一切都獨一無二。基本上 ，這是最容易記住的方法
什麼是鑰匙。所以當你在數據庫中思考 時，我們在表格中構建事物。和
我們想要那樣做，我們做我們那樣做。我們就是 這樣做的哈哈。無論如何，如果我們有一個
這裡的表，我們有列，它們是每 個事物的屬性。所以，讓我們
將其設為用戶帳戶表，因為這始終 是最簡單的示例。是的。好的，
用戶。這就是表格的標題。 現在，該表中的每一行都將
要成為新用戶，每一列都將成為 關於用戶的事情。所以列
可以是用戶名、名字、姓氏、密碼和電子郵件 。舉個例子，我的意思是，你可以
真的把你真正想要的東西放進去 。嗯，鑰匙是要的東西
將此行與其餘行分開。所以 在這個例子中，想想那些
可以復制，想一想您可以在其中 一個中放入的所有可能值
列。並想一想，是否可以在您的應用程序 中復制它？我的意思是，是的，它是
如果允許複製，則可以復制 它。但什麼自然不應該
被複製。所以通常，當你註冊一個網站 ，或者一個遊戲或其他東西時，
他們會問你的電子郵件。正確的？現在， 當您註冊時，您通常會輸入您的電子郵件
必須轉到您的電子郵件，然後單擊確認或其他 內容以註冊您的電子郵件。所以他們
知道這是一個真正的電子郵件帳戶。基本上，只是 為了讓他們可以擁有您的電子郵件，他們
可以給你發送電子郵件和東西。但是，是 的，這是我們可以用作密鑰的示例。
那是因為這個表中的每一行都應該 有一個單獨的電子郵件，一些網站
允許您多次使用同一電子郵件 。如果是這樣，那麼這將
不是好鑰匙。這種鍵稱為 自然鍵。因為它自然已經
在我們的桌子上，我們不必為了 一個鍵而定義一個新列。和
我們將在即將發布的視頻中深入探討這些 內容，因為我們會製作一大堆視頻
瑞奇的所以你得到他們真的很好。全部 ，就像我要討論幾乎所有事情一樣。
但無論如何，即使你到達了只有一個人 可以給我們打特定電子郵件的地方，
並且該電子郵件只能由一個人使用。 或者可以將其用作密鑰。方式
這有效，基本上假設我們有電子郵件 123， 等等，等等，等等，VC，等等，
等等，等等，x，y，z，等等，等等 。這是三個單獨的行。嗯，這是去
讓我們知道我們在談論哪個人。而且 ，就像現在，如果有人擁有第一個
名字，名字和姓氏偶然出現，假設 我們有兩個 Caleb Curry's Caleb
咖哩，Caleb 咖哩，我們不能用名字作為 關鍵，因為兩個人有，而且是，
這會讓我們感到困惑，因為好吧，我們 有兩個名字叫 Caleb curry 的人嗎？
還是一個人 Caleb 在數據庫中咖哩 兩次？這是我們的錯誤還是什麼？
所以我們拿不到鑰匙。在那裡不止 一次。所以它從來沒有它總是
獨特。所以密鑰總是唯一的。他說，
他說，他說，
好的，那麼我們可以在此表中使用的 另一個密鑰示例是什麼？讓我們擺脫
這封電子郵件。假設我們不再 使用電子郵件。假設網站允許
來自不同人的多封電子郵件。就 像如果我媽媽註冊了然後我想要
要註冊，我可以使用我媽媽的電子郵件。所以 我們有兩個來自同一電子郵件的人。那是
一些允許你這樣做的網站的例子 ，但不是很多網站都這樣做，
但這是一種可能性。這一切都取決於 你想做什麼。這取決於你，因為
我想這取決於您是否要為自己 製作數據庫，這取決於您，
但是如果你是為別人做的，那麼 你就會得到他們的規則並遵守
他們。讓我們想想其他一些。好吧， 電子郵件，讓我們說它知道你的
密碼。
嗯，這真的很糟糕。因為密碼，它們 不一定是唯一的，因為兩個
不同的帳戶可以有相同的密碼 。如果你不允許他們去那裡
可能有相同的密碼，您嘗試為 您的新帳戶輸入密碼。它會
就像，哦，這個密碼已經被使用了。 然後你就像，哦，所以你可以
在其他帳戶上嘗試該密碼並嘗試 入侵他人。所以那不會
一個好的數據庫設計，顯然。所以密碼 ，那是行不通的，因為不是每個密碼
是獨特的。名字，姓氏，它可能會 起作用。但這真的很糟糕。也許
名字、姓氏和中間名首字母 或中間名。但即使有，也有
具有相同名字、姓氏和中間名 的人。所以那個名字不會
工作，姓氏不起作用。名字和 姓氏的組合將起作用。和
是的，鍵可以是兩列的組合。 我們也將進入。我們有什麼
左邊是用戶名。好吧，用戶名是 用來代表您的帳戶的生成詞。
它通常不是姓名或電子郵件。有點 像 Caleb 123，或者別的什麼，你
知道我在說什麼。那麼，當人們與 你交談時，他們正在與凱拉交談
123，而不是Caleb咖哩，或者他們可以把 名字放在那裡。但是有些網站使用
用戶名，或者一些遊戲使用用戶名或 程序使用用戶名，所以你有一個用戶名
和密碼。好吧，用戶名總是唯一的 。因為如果你有兩個相同的人
用戶名，當您嘗試登錄時， 數據庫如何知道您是哪個
嘗試登錄，你知道，他們就是你，他們 必須是獨一無二的。一些那種
有道理。這可以用作密鑰，因為 我們可以擁有用戶名，cave of
食物。然後我們可以有門 123 然後彈出 。這是三個不同的人，都是
其他東西，名字，姓氏，密碼，電子郵件 ，它們指向那個鍵。所以我們有
名字、姓氏、密碼和電子 郵件
為了
用戶名為 Caleb 的用戶，看，這就是密鑰 的工作原理。我們有名字，姓氏
姓名、密碼和與用戶聯繫的人的 電子郵件，對不起，我們有
名字，姓氏，為名稱為 dog 123 的 用戶傳遞電子郵件。然後我們有
用戶名 pi 的用戶的名字、姓 氏、密碼和電子郵件，即
關鍵是如何工作的。另一件事 是密鑰永遠不應該改變。
所以第二件事，
永不改變。
現在，這是為什麼？嗯，那是因為當 我們創建密鑰時，我們使用它們來構建
我們整個數據庫，一切都指向關鍵 。我們的最後一個例子，我會
只需繪製表示的關鍵。假設 這是關鍵，我們只會說它是
用戶名。正確的？好吧，其他每一列 都是指向那個鍵的部分。所以我們
有人名，我們有密碼。我們 知道這些都指向這個
特定的人，如果我們去掉這個 鑰匙，我們有兩個人的名字
Caleb 與密碼，pi。
現在好了，
我們說的是同一個人嗎？我們是 在談論兩個不同的人嗎？還是什麼
我們真的不知道嗎？但是現在如果我們給 它鑰匙和鑰匙，讓我把鑰匙拿回來。
所以這
讓我看看我畫的鑰匙對嗎？
可能不會。
足夠接近。好的。這是我們的鑰匙。現在 我們知道這個 Caleb 指向這個特定的
我們可以擁有用戶名的人，或者您 可能經常看到像 72 這樣的數字 ID，
我們很快就會談論這個。現在，如果我們 有一個單獨的密鑰
像這樣，
那麼那是另一個人，所以我們可以 讓這個人擁有用戶名。迦勒
太棒了。 72 這讓我喜歡性感的小妞。 74. 明白我在說什麼嗎？所以這有點
鍵是如何工作的。我們從不希望他們 改變因為那樣它有點令人困惑，因為
所有這些東西對像都是這個鍵的一 部分。基本上，這個鍵用於定義
獨特性。好吧，如果我們可以更改它 ，它就會質疑我們數據庫的完整性。因為
在表之間，我們通過鍵連接事物。所以 讓我們說這是一個用戶表，這是
一張普通的桌子。如果我們有它可以 更改密鑰的地方，那麼這個連接
是的，你必須一直更新這個連接 。現在，如果我們連接了 50 個表
到這個用戶表，我只想 畫蛇，我不會畫所有的
50.好了，現在我們更新這個key的時候， 這個key的連接。所以我們有一個評論
用戶，我們有銷售，我們有朋友，我們 有消息，不管怎樣，這並不重要，
好吧，那麼我們改變這個鍵，好吧 ，這意味著這些連接中的每一個
將不得不進行更新，這需要服務器 進行大量工作。說得通。
所以我們不希望他們改變，因為 我們不想有額外的工作
來自我們的數據庫。所以這是一回事，獨一無二 ，永遠不會改變。另一件事。這些都是
只有三個一般角色，還有一些 其他建議和東西，但我會進入
很快。但另一件事是永遠不知道。這意味 著空增值稅或沒有價值。所以當我們有
一個表，我們有一個鍵值，假設我們 有一個用戶 ID，這傢伙 6，這傢伙的
五、為這傢伙30商量，順序 無所謂。然後我們有
他們的名字，隨便，等等，等等，等等，好吧 ，我們不希望它出現在我們可以有空白的地方
ID，還有資料。比如，莎莉。這個 Sally 沒有鑰匙，那是另一個
我們不想用我們的鑰匙做的事情。 所以這裡是三個主要規則。我們會
在即將發布的視頻中了解更多信息。 但是密鑰應該始終是唯一的。永不改變，
它永遠不應該是空的。您不應該允許 沒有鍵的行。這個視頻，我想要
多談一點關於鑰匙的介紹 ，雖然我要出去
有點跑題了。我要談談索引。 所以我認為我們沒有談論太多
這些在這個系列中呢。但我們將 討論一個索引。好的，所以
什麼是索引？我不會解釋索引 的每一個細節，因為我們
不是真的在談論索引。在這個視頻 中，我們談論的是鑰匙。所以我只是
解釋得足夠多，以便您了解這與鍵 的關係。所以想一個索引，最好
我的例子是一本書。所以如果我有一本 非常棒的書，比如物理學之類的，
我能做的不是，哦，我想知道這件 事。我可以翻開到後面，對吧。
我可以旅行到最後。
而我就像，
哦，看起來不錯的第 7832 頁。 我可以讀到它。嗯，這比
就像，哦，我想知道這個。第一頁 ，不是他們的第二頁？不，不是
他們不在那裡。哦，不，不在那裡 。呵呵。繼續閱讀整本書，直到
你找到它。那將需要永遠。另一 個很好的例子是電話簿。當你經過
您擁有的電話簿，所有內容都按字母順序 排列，而且數據就在那裡。所以當你
想想書中的索引，它指向 數據。而電話簿，它只是
那裡有數據，你可以像，哦，我 要去字母 G，在裡面找到奶奶
顏色。正確的？這就是索引的工作 方式。它與數據庫非常相似。
我們添加一個表，它就像一個 用戶表。假設我們有 60 億行
偉大的，瘋狂的數字。我們想找到所有名字 叫 Caleb 的人剛剛來過。我們想
找到所有名字叫 Caleb 的人。好吧， 沒有索引。基本上數據庫將
去第一排。它有名字Caleb嗎？不，確實 如此。第二行沒有名字。迦勒
沒有第三排。是的，它確實。我們 將把它放回 return 語句中。
然後它遍歷整個表中每 一行的每一件事，
這可能需要很長時間。因此，如果我們得到一個 索引並且我們看到 We 以某種方式對該數據進行排序
數據庫知道如何找到某些東西，就像 它可以確切地知道 C 在哪裡一樣，
好吧，然後它可以直接進入C，抓住 所有Caleb和繁榮，就完成了。
就像，超級快。這就是索引的 工作方式。嗯，有什麼關係
鍵，當我們定義一個鍵時，它實際上 是一種索引。那是因為鍵和索引
用於 SELECT 語句、where 子句和連接 。所以我可以做類似的事情
選擇
一切
從
用戶，例如。就像一個 SQL 示例 。我的意思是，它會有所不同
像關係數據庫管理系統這樣的編程， 您可以使用它作為一般示例。
然後我可以說，現在這是我指定的地方 。對不起，放棄等待。拿著我的書
無論如何。我正在選擇所有列 。然後我想選擇每一列
例如，名字的值為 Caleb。嗯，這 就是我們要做的。所以這個對
在這裡，這個小東西在哪裡？ 嗯，最好有一個索引。另一件事
我們通常做的是連接，它基本上 是結合兩個表。我不會
進入所有這些的所有語法。基本上，我們 在這裡有一張桌子，用戶，然後
這裡有一張桌子，評論。我們想要 生成一個新視圖，我們有
來自用戶的所有評論以及有關該 用戶的所有信息，我們可以
有一個新的生成視圖。但我們可以 加入這些陳述。它怎麼知道怎麼做
加入它，它使用我使用的密鑰，對嗎？ 所以如果你有一個主鍵，讓我們說
我們使用用戶名，
所以關鍵
在這里德拉拉鑰匙。關鍵是用戶名。好吧， 我們將如何加入它，我們會說，我想要
你拿這張表，和這張表，然後把 所有的行組合起來，這裡的用戶名
是這裡的 Caleb 咖哩。這裡的用戶名 是 Caleb curry。這樣它就知道
所有這些評論都來自 Caleb curry， 我們可以將其分配給該用戶
命名 Caleb 咖哩，或者您可能經常看到 它，例如 ID 號。所以它可能像
ID 6，將ID為6的用戶的所有 評論，加入SEC，
獲取用戶 ID 為 6 的所有行 ，將其與所有行連接
ID 為 6 的用戶，並將它們組合為每個 ID 的單獨行。當我們做一個主要的
鍵，或者現在只是一個鍵，我們正在定義 一個索引。所以數據庫可以輕鬆訪問
我們的數據和組合的順序 。這就是索引與鍵的關係。
鍵是一種索引。有各種類型 的索引。
查找表。那麼什麼是查找 表。讓我來解釋一下
在我們開始討論這個之前，先看看其他 的。所以只是有點放鬆和採取。拿
好看。我要把它擦掉，這樣我就可以 有一些空間了。所以假設我們有一個
會員表或會員數據庫，我們有 一個用戶表或成員表。和
在此範圍內，我們擁有會員資格 。好的。假設有 10 個選項，
我猜。所以你可以有像青銅、銀 、金、鉑、鈦，然後像沒有
會員或類似試用會員或
合作夥伴或
特殊會員或高於所有會員的會員 。我不知道我只是在做東西
向上。不管怎樣，有些人會創建所謂 的查找表，所以他們會有一個
這裡的表格包含會員資格的每個選項 所以我們可以擁有會員資格。
然後在這裡，我們會有， 每一行都是會員狀態之一，
正確的。所以我們有 123456789，我 要九點去，因為不能再坐了，
九個單獨的行。然後我們就 只有一列，例如 ID，它將
意味著如果需要，我們可以使用不同的密鑰 。但為此，我們將只使用一個 ID。然後
我們有一個專欄來說明會員資格是 什麼。所以我們會有像，黃金，
銀，
青銅，
鉑金等等。現在，我們可以有一個 成員表。
然後是一列
在這個成員表中，可以引用成員 的鍵。所以記住，就像一個
或者兩個視頻前，我談到了鍵如何 在表之間建立連接？嗯，這個
就是這樣做的。這是使用密鑰 的連接示例，我們要做的是
例如，我們想要成員、成員、 用戶成員名稱或他們的 ID。
然後我們有他們的名字、姓氏、 地址、電話號碼、帳單類型等等
是的，然後我們就會有一個專欄成員 ，你看。在這裡，讓我們說一下
例如，我們沒有這個表，這個沒有了 ，我們只有這個成員表。出色地，
當我們在這裡有 6000 行時，成員資格 類型會重複。很多很多
時代，我們想要黃金，黃金，黃金， 黃金，青銅，白金，白金，白金，
青銅，發光，白金，青銅 ，然後繼續所有行。那會
工作。這就是您的數據庫 的可能性。我不是說它會
導致您的數據庫爆炸，否則您將被解僱 或其他任何事情。好吧，除非你是
被告知不要這樣​​做，否則你可能會被解僱 。這是數據庫設計的一種可能性。現在
讓我們想想這是一種什麼樣的關係？一個會員 可以擁有一個會員資格，一個會員資格
會員資格可以有多個人擁有會員 資格。所以這是一對多的關係。
一方面是會員資格，你會有 其中一個，然後你有很多人
使用那個。所以這意味著如果我們如果你 從關係中記得，我們​​需要採取
從這個鑰匙，把它放在這張桌子上 。現在如果我們添加這個新關係
在，我們沒有所有重複的數據， 因為我們所做的只是參考一個人
排。還有其他一些好處，我將在 稍後解釋。所以現在我們
可以像金，金，金，銀， 青銅，鉑金，我們有 111234
我們所有的行。我們還有個人信息 ，比如 Caleb、Jimmy、Jake、Sally 的
薩米和莎拉。好吧，當我們做這個小連接 的時候，我們就有了一個新的連接
在這些表之間。我們正在拿會員 資格的鑰匙，這是這一欄的權利
這裡。所以這是我們的鑰匙。我們正在 拿著那把鑰匙，我們正在把它移到
成員表。所以現在這一列 ，在成員表中，指向
成員表的鍵。這稱為外鍵 。現在這將有助於保護
我們數據庫的完整性。那 是因為會員只有九種可能
如果有人放了別的東西，我們可以標記 一個錯誤。另一件事是我們可以擁有
它不會接受空值。然後如果 出於某種原因我們決定改變
我們喜歡 假設我們想把銀換成像 我不太了解鑽石 然後我們
可以在這裡更改。而且因為這個值 不在這裡，它只是一個參考，
它會自動計算出來。因為你看到 密鑰從未改變。關鍵是
還是一個。所以一還是用一 分。所以這個連接還在，值
或者對不起，我想應該是兩個。無論 你明白我的意思，我們都可以
改變黃金的名字，我們可以讓它成為史詩。如果你 想要史詩般的會員資格，那麼，現在，我們
不必更改成員表中的 6000 行 ，我們只需要更改一行
在我們的會員表中。所有這些連接 都保持不變。所以 IDS 有幫助
在需要較少維護數據庫的表之間 創建更好的連接。而它
也保護我們的完整性，因為我們 不必擔心內部不正確的值
會員資格。因為它都連接 回我們更改的成員資格表
從這裡。所以我們更新史詩，它更新 我們整個史詩中的每一個實例
數據庫，或者它給我們一個錯誤或其他東西 ，我們可以使用所謂的外來設置它
關鍵約束。那個鍵外鍵約束。 因為我們正在使用所謂的關係
數據庫，這是我們現在正在做的 設計類型，我們有關係表，
一切都通過數據庫連接。它並非全部 存儲在一張單獨的表中。
但是為了保護我們數據庫的完整性 。我們在鍵之間創建連接。那樣，
我們不必擔心不正確的數據。那麼，鍵 oops 和不匹配有什麼關係呢？什麼
鑰匙對我們有什麼用？讓我們把它寫出來。 嗯，首先，他們保護我們的誠信，我
做視頻過分誠信。所以如果你想檢查 一下，一定要這樣做。所以
他們保護我們的誠信。他們是怎麼 做到的？好吧，我們不必擔心只有
一些值更新。如果你還記得，我們 有成員表。當我們更新時
gold，我們命名為史詩，它更新 了成員表中的每一行。所以
保護我們所有的價值觀。所以更新，我們 的維護更少，不正確的數據更少。什麼
否則是關鍵交易讓一切都獨一無二 。你可能已經在成員中看到了
表，我們使用了第一號鍵，多 次，我們有三個人與成員
ID，對不起，會員ID之一。例如 ，三個人擁有黃金。嗯，還是
獨特的，因為他們仍然只談論 一個單獨的黃金。在我們這裡
我們擁有黃金會員資格是其中一種選擇 ，我們可以擁有三個人。好吧，你看
擁她入懷，這三個人都可以擁有
黃金會員。
而且它仍然是獨一無二的，因為我們 只討論一個具有三個引用的單個值
如果我們去掉這些外鍵，就可以達到那個 值，我們只需要說明什麼成員資格
他們擁有的狀態。好吧，現在，這傢伙 要成為金子了。這傢伙要成金了，這個
gal 將成為黃金。所以現在我有 123
從密鑰中擺脫唯一性的時間。 所以它保護我們的獨特性提高
我們的速度。所以基本上，改進了我們 數據庫的功能。功能我用完了
的空間，它做了一大堆其他的事情 。基本上，它使更新更容易，
所以對我們來說更少的工作。因為 我們不必手動檢查每個值，
我們可以只更新那個單獨的值 。你知道。另一件事是允許
增加了複雜性。時間長了，手累了。好的 。現在你甚至可以看到這一切。好的，
所以這裡有一些例子。我會明白，我 會告訴你我們如何說它允許增加複雜性。
讓我們來看看。我要重畫我們 的例子，但我不會畫超級
深度。所以不要，不要等待。別說，別擔心 ，它不會那樣做。我們有一個成員，
然後我們有了會員資格。好的。現在 讓我們關注這個成員資格表。
讓我們把它弄大一點。實際上。我們之前所 擁有的是我們有一個身份證，我們有
1234，等等。然後我們就得到了 它們的稱號。所以如果你想
把這個畫得更好，你可以把列標題 ，所以我們可以有，比如 ID。然後
我們可以說，成員名稱。然後我們 可以給表格命名，我們可以有
它會員資格，會員資格。是的。好吧，我們 可以做什麼，我們可以增加複雜性，因為
現在我們可以添加一個新列。
我們可以說更多關於黃金會員的信息。所以 我們可以說，
價格。
我們可以有每月 60 美元的價格。
例如，
如果我們不做整個查找表的事情。我們 把它全部放在我們的成員表中。
讓我們看看它會是什麼樣子。
讓我們試試吧。
好的，讓我們來看看成員表。我們 甚至沒有會員表。出色地，
現在我們有了 ID 為 789 和 3 的 那個人，他們的名字是 Caleb。
湯姆·湯米
痕跡。
這就是我所說的黃金會員 的三個人。嗯，什麼
什麼會員資格，好吧，黃金，黃金 和黃金。現在，這要花多少錢
6060 和 60。就用這個三個人的小 例子，我們已經有四個不必要的了
值。因為我們有重複數據，我們 有兩次 G 和 G，我們有 6060，兩次
更多的消除了我們數據庫的 功能，因為我們有大量的
重複數據。所以你可能認為最好的 辦法就是擺脫這個價格。出色地，
現在我們擺脫了數據庫的複雜性。 有時復雜性是一件好事，因為
它允許我們存儲更多信息。當我們 使用共同的或當我們很抱歉時，當
我們使用查找表。我們可以將其 作為另一列。我們可以放更多
我們可以在另一欄說，這個 會員資格持續多久？我們有
另一欄說？我沒有特殊用途，或者 我們健身房可以使用什麼？或者
我們可以使用什麼？我們可以帶朋友 嗎？什麼價位的朋友，我們
可以在這個表中做所有這些事情 ，然後在另一個表中引用它
桌子。這只是一組選項。所以我們 減少了重複數據。如果我們想要
完全可以做 好吧，我們必須放置每個單獨 的 comp 列，我們會得到大量重複
數據。你知道我的意思？是的， 所以這是一個例子，因為那將需要
永遠。所以這是很常見的。對於具有一定數量 選項的事物來說，這是很常見的。所以
就像會員類型一樣，只有這麼 多選擇。你可以有狀態，有時有時
人們這樣做是為了性，男性或女性。 有些人這樣做是因為我什麼都想不到
否則就在我頭頂上。但只要有一定 數量的選擇，他們就會
通常放置一個帶有 ID、該選項的 名稱或該選項是什麼的查找表
像金、銀、銅、男、女或加利福尼亞 ，所有其他州，懷俄明州，
德克薩斯州
俄羅斯，
好吧
我們只有一定數量的選擇。就是這樣 ，然後我們可以提供更多信息
關於它，我們可以說，男性，然後，就 像男性被允許在網站上做的事情一樣，
或任何允許我們的數據庫額外複雜性 的東西。在最近的幾個視頻中，
我們已經討論了一般鍵的所有 特徵，我們討論了這個詞
密鑰和數據庫。鑰匙是成功的關鍵。不管怎樣 ，不管怎樣，這個視頻，我們要
正在談論特定類型的密鑰，因為所有 最後的視頻都是一種概念。
但是現在我們要討論的是，我們 如何將其實際實現到數據庫中，
我知道我們想要鍵，我們想要 從表到表的引用，我們想要
這一切都要連接起來。但是我該怎麼做呢 ？嗯，您使用的主要兩種類型的鑰匙
去聽被稱為
基本的
和外國。實際上，我們 不會談論這兩種鍵。
在這個令人驚喜的視頻中，我們 將變得有點寬泛，
更廣泛一點。
因此，當您像初學者一樣學習 數據庫設計時，您可能會
了解這些是兩種鍵，當 你想學習更高級的時候
數據庫設計，您將了解不同類別的 鍵。所以在我們進入之前
這兩個，
哪一個
如果你們沒有聽說過那些堅持下去 ，如果你有那些堅持下去。
我們將學習所謂的超級密鑰 。現在，
因為某些原因，
我認為這是一個沒有空格的詞。我 不知道為什麼那裡沒有空間。所以
如果有人知道如果喜歡，你們想知道 什麼，
讓我知道。
因為我真的很想知道，這讓 我發瘋。我們要去的另一個
被學習是候選鍵。好的，所以 在我們了解候選人之前
鍵，讓我們只關注超級鍵。所以 我只想抹掉這個。好的，所以
什麼是超級鑰匙？好吧，超級鍵 是任意數量的列，它強制每一行
是獨一無二的。現在，如果由於某種原因 你的表被構造成你不能擁有的地方
每一行都是唯一的，您需要考慮 添加某種列來強制唯一性，
比如一個ID，或者一些，你需要確保 每個使用數據庫的人都理解
該表如何工作，如果是特殊情況 ，但通常每個表，您都可以
使獨一無二。現在，當你使用數據庫時，你 會經常看到 ID，比如用戶 ID，這個
是一種鍵，那麼您有時也會找到 諸如用戶名之類的鍵。區別
這兩者之間是這種只是為了 數據庫，用戶而編造的
ID 748。什麼意思？絕對沒有。 這只是一個數字。實際上用戶名
有一些現實世界的聯繫 。我們將在即將到來的
視頻。以及最好使用哪一種或哪 種情況。但至於現在，我們只會
使用數據庫中已有的 自然實用列，而不是
身份證件。但
同樣的事情可以適用
就像 ID 字段或電話一樣。那麼讓我們來 了解一下超級鍵。超級鑰匙，喜歡
超人，但它是一把鑰匙，就 像一把能穿過門的巨大鑰匙
甚至不使用手柄。它只是破門 而入。
無論如何，
讓我們來學習。好的，假設我們這裡有一張桌子 。
大桌子沒錯。
現在我要在這個表中放一些 列。這對我來說不夠直接。
現在足夠接近它看起來更糟，無論如何 。假設我們有一個用戶表，因為我總是
認為這是絕對最容易使用的東西 。我們將有一個
用戶名，
電子郵件，
密碼。
然後我們將有名字，中間名， 姓氏，然後我們將有
生日
所以這個表中的每一行都需要 一個值
對於這些列中的每一列。我知道這是 非常糟糕的筆跡，但事實並非如此
真正重要的是它看起來如何只是理解 這個概念。現在看起來好多了
現在。
別客氣。
現在你可以真正理解發生了什麼。好 的？在某些情況下，對於數據庫，您
將允許人們輸入空白值 。例如，如果某人沒有
例如，電子郵件，我們可以將其設為可選。 這樣，有些人就沒有價值或沒有價值
在所有其他人都有價值觀。但對於 這個案例，我要說的一切都是
必需的。因為假設您使用電子郵件 登錄或驗證您的帳戶。
我們如何確保每一行都在 談論一個實體，並且每個
實體只有一排，一切都是獨一無二的？如果 我們有一個人
並在這裡畫一個小傢伙，對吧 ？他想註冊這個網站。那麼你
伙計們這個網站，這是他的
網站，你把這些信息放進去，這些 信息就會進入一個表格。正確的？
他確實有，他可能實際上無法訪問 SQL，因為它只是一些隨機的
您網站上的用戶可以訪問您的數據庫。我可以 遇到一些安全問題，但無論如何，
將會發生的事情是他將參與其中，並且 他的所有價值觀都將付諸實施
進入這些值框。所以我們有用戶名，喜歡它 ，fi，電子郵件，DC 等等，等等，等等，
冷靜通過，這是圓周率。名字是迦勒， 真名丹尼爾。姓，咖哩生日，哦，
到 1390。所以這個傢伙，在這個數據庫中插入 了所有的信息。如果你不會閱讀，它
真的沒有關係。現在，當另一個男人來了， 或者讓我們說 gal，所以這位女士來了，
她就像，哦，我想註冊這個網站 。於是她註冊了這個網站。
然後她把她的信息放進去。這也作為 一個新行出現在數據庫中。所以
這只是列標題。這與實際數據 是分開的。但是，這些行
有個人價值觀，她可以把她的價值觀放 進去，我不會把它們都寫出來，因為
你們明白了。我們怎麼知道每 一行都是唯一的？那會說話
關於一個個體實體，在這種情況下， 一個用戶？通常，無論實體是什麼，
是表的標題。所以實體將是 用戶。我們怎麼知道每個
單行是指只有一個用戶 ，每個用戶只有一行
一。我們不希望 Caleb 能夠來到這裡 ，創建一個新帳戶並讓他的
用戶名，抄送和所有相同的東西。 現在，在某些情況下，我們可以
允許他們創建多個帳戶。就像我 可以創建一個額外的 YouTube 帳戶
如果我真的想。那沒問題。所以 我可以有相同的不同用戶名，
不同的電子郵件，相同的密碼，相同的 名字，相同的中間名，相同的姓氏，
同一個生日，唯一改變的是用戶名 和電子郵件。現在，默認，
就像表格試圖定義的內容髮生 了變化。我們不再試圖
定義人。我們正在嘗試定義 用戶
帳戶。
因為現在有兩個帳戶，它們 是完全獨立的實體
有道理。但是你真的不需要 擔心所有的細節。我越來越
完全偏離主題。所以 10 分鐘前我們 在談論什麼，我想我們在談論
關於超級鑰匙。任何數量的列都 可以強制每一行都是唯一的。
如果您獲取所有這些信息並將其與其他 信息進行比較，讓我們創建一個新行。
假設這裡的這位女士實際上最終 將您的信息放入她的用戶名中
a 她的電子郵件 B 密碼座位。名字 是嗨，中間名是喲。還有她的姓
是你好。她出生了。哦 316 72. 那是她 的生日。那麼，現在，如果你比較
這些值在那裡他們是不同的。並 非每個單獨的值都必須是
不同的。例如，這個女孩的姓氏 可以是咖哩，這完全沒問題。
但作為一個整體，所有的價值都必須 是不同的。例如，如果有人來
在這裡，把所有這些信息放在這裡， 在這裡，cc ccof，等等，等等，等等，
pi, Caleb Daniel Curie Oh to 1390，那 不是唯一行，它會導致錯誤。
所以超級鍵可能是這裡的所有這些 列。現在，超級鍵通常不是
在數據庫中定義。那是因為它們 非常廣泛，您擁有所有這些信息。
當然，它會是獨一無二的，因為 你只能使用一次用戶名，
通常電子郵件只有一次。所以 如果有人來到這裡並試圖使用
MCC，好吧，那麼你已經有錯誤了， 它不會工作。所以所有這些額外的
列在這裡。有點不必要，因為我們 可以簡單地做同樣的事情
用戶名。所以超級鍵是任意數量的 列，它創建一個唯一的行，唯一的
行。候選鍵是最少的列數 。那你能看出有多新
候選人？我會解釋為什麼它被稱為候選人 。第二個，或者在下一個視頻中
或者其他的東西。候選鍵是最少的 列數。所以對於這個例子，我們是
不允許兩個人使用相同的用戶 名。我們可能會允許他們擁有
相同的電子郵件，我們可能會允許他們使用 相同的密碼名字、中間名、姓氏和生日，
但不是同一個用戶名，因為那麼你 如何區分它們呢？你不能因為
他們所有的信息都是一樣的。它們 是數據庫的精確克隆。我們不
曾經想要在我們的數據庫中。通常 ，我真的想不出任何例子
你會想要重複的數據。不過沒關係 ，反正候選鍵是最少的列數
需要強制每一行都是唯一的。 在這個例子中，用戶名足以使
它獨一無二。所以我們可以使用候選鍵 ，讓它只是用戶名，或者我
猜測我們當然可以調用，因為 在整個過程中，行將是唯一的。
所以can候選最少，super key 是any
X。
現在說到數據庫編程，讓我澄清 一下。所以你的大腦不會
爆炸了。
它需要永遠。
我想告訴大家，
停止觀看。好的。我只是讓我的 黑板聽我說
抹掉那些東西。
當我們談論數據庫編程時 ，實際上我們從來沒有
將告訴您的數據庫這是一個超級 密鑰，因為超級密鑰不實用。
它們用於設計您的數據庫。僅有的。 當我看到那個專欄時，第一件事
我做的是我覺得超級關鍵。是的，每一行 都可以是唯一的。這是第一次檢查。
所以你問，
它可以
每一行都可以是唯一的嗎？
這就是問題所在。
這就是定義。這就是 super key 所質疑 的，每一行都可以是唯一的嗎？乃至
更好的詞？每一行都可以是唯一的嗎 ，因為表中的每一行都必須是
獨特。這就是超級鑰匙要問的。一旦我們 弄清楚了 如果它可以是獨一無二的
然後我們繼續找出候選鍵。所以 現在我們問
多少
列
需要嗎？
你能讀懂嗎？希望？那麼第一個問題 ，每一行都可以是唯一的嗎？是的，
這意味著我們有超級鑰匙。這就是我們 所需要擔心的。我們必須要弄清楚
找出哪些列或類似的東西，每一行都 可以是唯一的嗎？總是想著所有
可能的值。有可能重複 嗎？如果是你必須想辦法
出去？如果它不好，那麼每一行都可以是唯一 的。
是的，檢查繼續，
需要多少列。現在您計算 出所需的最少列數
為了永遠創造無限的獨特性，所以 沒有獨特性的可能性，我們是
允許放置某種類似的限制。我們可以放 一個我們可以使用的獨特的。有可能
不同的關係數據庫。但是如果我們 使用唯一索引，例如，
對不起，每一列中的每一個 值都必須是唯一的。和
也就是說，這是人們必須輸入的要求。 所以如果它不是唯一的，我們就給它
一個錯誤。這就是我們如何強制值是 唯一的。那麼需要多少列呢？一次
他們弄清楚了，我們有所謂的 候選鍵。所以在最後，最後
例如，它只是一個，因為我們可以使用 用戶名。現在，我喜歡的下一件事情
要弄清楚的是，我有多少候選鍵 ？
我只是要使用
ck 為候選鍵。我有多少 ck？這是什麼 意思？好吧，我們實際上可以
有多個候選鍵。最後一個例子， 我們有一個用戶名，我們還有
一封電郵。好吧，電子郵件也可以 作為候選鍵，因為你可以把
要求每個帳戶都有一個唯一的電子 郵件，有些網站對人很酷
多次使用同一封電子郵件。 有些網站通常不是。所以有
可能是我們有多個候選鍵的 機會。或者如果而不是使用
用戶名，你想用別的東西，你可以把 它放在我們可以擁有的地方，讓我們
比如說，您可以使用一次您的電子郵件， 我們可以有名字、加號、姓氏和中間名
姓名，或中間名首字母。這樣就消除 了大多數唯一性的可能性。但是有
仍然有可能人們有相同的名字。 那麼你補充說，
生日。
所以現在你必須找到一個名字、姓 氏、中間名和名字都相同的人
生日。
極少，
還是有可能的。那麼我們可以添加第三 個。我猜一到第五列，我們可以
它。電子郵件，或者我們可以做一些事情，比如 一件衣服。好吧，讓我們看看，我們一起去
一件衣服。這可能是一個候選鍵。因為 我們有名字、姓氏、中間名，
生日，
和地址，它們作為一個整體都必須 是獨一無二的。有什麼機會
生活在某一天出生的某個地方 的人？還有，英國是什麼
兩個人同名同生日 同居的機率大嗎？
除非你有雙胞胎，而且你給他們起同樣 的名字？如果真是這樣，那你可恥了。
會迷惑人的這可能是一個候選鍵 現在不是最好的候選者
鑰匙？
可能不是因為
我們使用了五列。從技術上講，仍然 可以復制，但是非常非常，
極少。是的，那麼我有多少候選鍵 ？你把它們弄清楚，我喜歡
寫出可能的候選鍵。然後 我們繼續下一步，也就是
定義我們將用於我們的表的鍵 。一旦我們有了候選鍵，我們
可以選擇其中之一。他們被稱為候選人。
因為有
有一個選項，比如你可以有，你可以 有你的第一個候選人，你可以
有候選鍵一，候選鍵二， 你有候選鍵三，這可以
是用戶名，這可能是電子郵件 。這可能很長，名字，姓氏
名稱，密碼，等等，等等，
無論你想要它是什麼。
現在，您必須決定哪一個將 成為您的主鍵。我們要採摘
從我們停止上一個視頻的地方開始 ，我們正在談論候選鍵。所以這
視頻，我們將討論主鍵，這 是下一步。那麼什麼是
首要的關鍵？好吧，在上一個視頻中 ，我們為候選鍵定義了一些可能性，
我們可以用它作為主鍵的東西，它 是一個候選，因為你必須選擇它
成為我們的主鍵。
所以我們有一個可能性列表。其中之一 是用戶名。另一個是電子郵件
然後如果你沒有簡單的東西
像這樣，你可以做一些像你的全名 一樣的事情，就像第一個一樣
姓名、姓氏、中間名，然後 加上地址。大概是哪個地址
分解成像，街道，城市。你知道。就 像所有的部分都有一個地址，然後
可能是你的生日。
要不就
狗。
所以這裡只是候選鍵的一些可能性，我們 可以先有用戶名、電子郵件
姓名和姓氏。好吧，現在，一旦你 擁有所有可能的候選鍵，你想要
選擇一個作為您的主鍵。那你怎麼 做呢？嗯，再一次，
你必須確保我們看起來
在
密鑰的規則或建議。這是專門 講的
主鍵。
我們希望我們的主鍵是唯一的，永遠不會改變， 永遠不會知道。所以用戶名永遠不會消失
改變，對。所以這很好。 註冊時總是需要用戶名
一個帳戶。所以永遠不知道。它必須 是獨一無二的，因為兩個人不能擁有
相同的用戶名。所以這將是一個很好 的主鍵，請查看電子郵件。嗯，是你
可以讓它獨一無二，你可以要求 人們只有喜歡，你可以防止多個
電子郵件。所以當您創建帳戶時， 您只能使用尚未使用的電子郵件，
這是一個選擇。所以這是可能的，永遠 不要改變它 嗯，這取決於是否
如果您使用您的電子郵件（例如用戶帳戶 用戶名），則您使用電子郵件登錄
你有一個密碼，那麼 很有可能，你將無法
更改。雖然現在，您可能可以更新 您的電子郵件和內容。所以有可能
如果您阻止人們更新他們的主要電子 郵件，則永遠不會改變。很有可能，
可能並且永遠不知道您可以要求某人擁有 電子郵件。所以這是可能的，所有
其中三個是可能的。所以對於破折號， 名字，姓氏來說，這可能是一個損失
姓名，中間名，地址，出生日期，嗯 ，可能是整個群體，作為一個整體
將是獨一無二的，有機會找到與 您同名、住在同一個地方的人
像你一樣出生日期幾乎是不可能的 。如此獨特，幾乎是的，但是
可能，你可能有一個副本。如此可能 ，永不改變。哦，好吧，人們
可以結婚，所以他們的姓氏可以改變 。名字甚至可以更改您的中間名
甚至可以改變，你可以移動，你不 能在不同的日期出生，你不能重生，
除非你成為基督徒。但無論如何，永遠 不知道，好吧，有些人可能沒有
一個地址。要么是這樣，要么他們可能 沒有中間名，或者類似的東西。
所以這可能不是最好的主鍵。所以 在這個例子中，我可能會選擇
用戶名。然後您將其定義為 主鍵。然後你可以用它來
在表之間建立連接。所以你有一 個用戶名的評論，這就是連接。
這是一個自然鍵。我們將在下一 個視頻中討論代理鍵，如果
你對此一無所知。但基本上，您可以 使用您的用戶名作為 Id 而不是
像作為主鍵。所以你可以有，比方 說，這是我的用戶名。這可以是
我所有行的連接。所以如果 我有一個評論表，表
網友，一桌賣，會如果我買東西，迦勒咖哩 連接。如果我發帖，如果我是
用戶會聯繫，如果我發表評論 ，聯繫，它都會指向
用戶表，因為那 將是
這裡的關係。
所以這可能是一個主鍵。所以這是 一個主鍵。現在，這也將被索引，
因為主鍵是一種索引的來源。 所以你可以做 SELECT 語句
真的很容易做到這一點以及類似的 一切。所以這將是你連接的方式
你的大部分數據。現在，我們沒有選擇 的其他候選鍵，它們是已知的
作為備用鍵。備用鍵。有用。我的 意思是，它可以是它可以是它
首要的關鍵。但基本上，所有沒有 被選為主要的候選鍵
鑰匙。您不需要在數據庫 中定義所有備用鍵。
事實上，您甚至不需要任何備用鍵 。但你可能想要因為很多時候
它們將是您正在搜索的內容， 或連接表或其他任何內容。
備用鍵可能很有用，因此您可以 在備用鍵上創建索引。所以我
可以在電子郵件上創建索引
例如，因為我說這是一種可能性。嗯，現在 ，那可以，那將是一個索引，
它可能會被使用，因為您可能希望通過 電子郵件處理數據，例如選擇
每個人都通過他們的電子郵件，你知道我的意思 嗎？也許可能，基本上，你可以，你可以
做一個選擇。然後您可以選擇要 選擇的列，然後選擇表。和
那麼你可以說，在哪裡。然後你可以說， 比如，電子郵件，具有價值，合法於
真棒平靜，因為你有一個指數， 它會更好地工作。所以如果你
有一個非常好的備用鍵，我建議您將它 編入索引只是為了好的設計。而它
將幫助您的數據庫運行得更快。但是 如果你真的不想索引它，那麼
不要這樣做。因為那隻是你的數據庫 必須維護的另一件事，
如果我有一本書，它將不得不 更新索引以及書籍
在這裡，我改變了書的內部 ，那麼後面的索引就會
也改變。
所以備用鍵，你可以將它們設置為索引 ，如果它們很好並且有用，如果你
將搜索此類信息。這 就是主鍵的介紹和
備用鍵。
先生，我
我想我很抱歉，順便說一句，先生，很 好。然後我們有一個自然的。
好的。
所以我們在上一個視頻中討論了 主鍵。這就是我們定義的範圍
關鍵。這些是主鍵的類別。所以我們 定義了一個主鍵。這是善良的
就像一個描述性術語，我們不必 在我們的數據庫中定義代理主要
key 或自然主鍵，這更多用於數據庫 設計。要知道喜歡的區別
鍵類型之間，希望這有明確的意義 。如果沒有，就和我在一起。
好的，所以 Up，就像我一直在做的所有這些 關鍵視頻一樣，我一直在使用自然鍵，
讓我們先定義一個自然鍵，這是 非常自然的定義。它是這樣的
自然在表中，您自然要存儲的東西 。當你有一個用戶的表時，
您自然要存儲用戶名和電子 郵件，這些可以自然使用
鍵，因為它們符合主鍵的所有 要求。而且已經在裡面了
你不必編造什麼，你不必想 一欄來添加只是為了
為了擁有密鑰，我們希望能夠為 每張表都擁有一個密鑰。
但
有時，自然鍵不是很明顯或不那麼 自然。所以我們想嘗試找到
當我們使用自然鍵時的自然鍵。一般來 說，當你創建一個數據庫時，所以
假設這個巨大的盒子是我們的數據庫。在 這個數據庫中，我們有一堆表。
然後在每個表中，我們有一堆列 和行。看，我說的是這些
都以某種時髦的方式聯繫在一起，有關係 嗎？那麼，當我們定義一個數據庫時，
通常，我的意思是，也許並不總是，我們 想嘗試要么總是使用自然鍵，
或者總是使用代理鍵，它們只 是組成的鍵。我們不想翻轉
翻牌轉換，我想不出其他詞 。因為我們想盡量保持一致。
否則，使用數據庫的人會感到 困惑。這是自然鍵嗎？
或者這是一個代理鍵？這是真正具有 現實世界價值的東西嗎？或者是
它只是一個編造的數字？假設 我們使用的是自然鍵，有幾個
自然鍵的問題。這個視頻 將解釋兩者之間的區別
這兩個。在下一個視頻中，我們將討論 每種方法的優缺點
基本上。
所以自然鍵是表中自然已經存在 的東西，我們想要存儲的東西
首先，對嗎？問題是它們具有現實世界 的價值。所以你的數據庫可能會適應，
和你的鑰匙的含義有點 適應，我會再一次解釋
下一個視頻代理鍵。它們是 剛剛添加到數據庫中的列，
無論如何，即使你有一個很好的自然鍵 ，因為記住，你想要么使用
全天然或全代理通常。所以如果 我決定使用代理鍵，我會
為每個表中的每一行提供一個 ID。所以我們假設我們有
一個用戶表，然後我們有一個銷售
桌子。
然後我們有一個
普通表，我們所做的就是給每一個表，一 個 ID 列。所以我們有一個用戶ID
列和用戶表中的 say，我們有一個 銷售 ID 列和銷售表，我們有
評論表中的評論 ID。所以現在當我們 有喜歡的時候，讓我們看看評論
評論中的表格，我們將有 一列，我們將有一列用於
評論 ID。然後我們需要引用發布 評論的用戶。所以我們會
將用戶 ID 作為外鍵，指向 用戶表。所以這有點
這是如何工作的。現在我們只有隨機 數，ID只是一個有特徵的大數字
稱為自動增量。意味著每次你 在這個表中創建一個新行，
它將把 ID 加一，然後當你喜歡 的時候，刪除列或其他東西
你的數字有差距，這並不重要 ，因為數字沒有真正的
世界意義。通常，代理密鑰是 完全保密的。沒人知道
代理鍵，除了使用數據庫的 人，你不會被告知你的代理
鑰匙。所以如果我在一個網站上創建一個 帳戶，然後輸入我的用戶名和密碼，
然後我去喜歡，我註冊，註冊並處理 我的電子郵件垃圾，然後我登錄並
轉到我的用戶設置，它不會像用戶 ID 等於 45 之類的那樣，它是
將是私人的。原因是，因為 這個世界沒有我的意思，
該數字沒有真實世界，因此 ，它僅對數據庫私有，
如果我開始把那個號碼發給每個擁有這些 ID 之一的人，或者，或者其他東西
像那樣，或者如果我開始把它放在銷售 報告中，那麼我就給出那個數字
世界上真正的意義，它開始成為一 個自然的鑰匙。所以希望，那
有點道理。自然是數據庫中 已經存在的東西。代理人
是我們剛剛添加的東西。代理 的有趣之處在於，如果您是
努力尋找一個真正好的自然鍵， 你總是可以使用代理鍵。問題
那就是你總是想嘗試能夠自然 地讓一切都獨一無二。
像任何用戶表一樣，我們有一個用戶名 ，這將保持唯一性。所以即使我們
使用代理鍵，我們仍然可以索引這個 用戶名。並且可以使用。好像
我們將其指定為自然鍵。唯一的 事情是我們在表之間建立連接
使用代理鍵。所以對於這個表，我們 可以有一個用戶 ID，然後我們可以
有用戶名。舉個例子。用戶 ID 將是代理鍵。這個會
不是自然鍵，因為我們只 能有一個主鍵。和主鍵
將成為類型代理。所以用戶 ID是一個代理鍵隨機數生成器
號碼，用戶名，我們可以索引它並 在搜索時像使用自然鍵一樣使用它
數據庫和一切。但我們 不會用它來建立聯繫
帶有外鍵的表和引用。所以希望 這能讓事情發生
很清楚。
在這個視頻中，我想談談 代孕或自然的所有利弊
鍵。所以基本上，我們將在這裡 比較和對比它們。所以在這裡
左側，我們得到了代理人，然後 在右側，我們得到了自然的 All
是的，我們將在這裡進行一場 小戰鬥，我們將找出哪個是
最好的。我作為盒子來保持這種狀態。
這裡。好的，所以
自然鍵有哪些好處？好， 好，第一個第一個好
關於什麼是真正弱的事情。 關於自然鍵的第一個好處是
您不必定義任何新數據。如果 你不記得上一個視頻，讓
我只是在這裡重新定義它們。 使用自然鍵，或用作鍵的列
已在您的表中定義。它們對您 要存儲的內容很自然。代理人
密鑰只是像用戶 ID 或汽車 ID 或信用卡 ID 或評論一樣添加
ID，他們的代理人。他們沒有現實世界的意義 那麼自然，不自然。涼爽的。所以
關於自然的一些好東西，你實際上不 必定義新數據，任何新數據，我
不知道你是否能聽到我的聲音，他們 對此並不結巴。但無論如何，你
不必真正定義任何新數據，因為 它已經在您的表中。你可以
將其用作您的自然鍵。因此，您需要 在數據庫中存儲較少的信息。
所以你得到更小的數據，你得到它，你有一 個更小的數據庫。正確的？所以這是一個好
事物。那麼自然鍵的缺點是什麼 ？嗯，缺點是有時你是
將無法找到一個非常好的自然鍵 。因為如果你看這裡，
我們希望我們的密鑰是獨一無二的，永不改變， 永不為空。或者不。好吧，如果我們有一個
自然鍵，我們必須找到一個適合所有 這三個的。它必須是一個好的
將 a 作為自然鍵使用是有意義 的，例如，您可能不想使用
組合 20 列來製作自然鍵 。但這是自然的缺點之一
鍵，你必須弄清楚使用什麼 自然鍵，而且並不總是很好
選項。現在，最好地，你應該 有一個自然鍵，或者至少可以
被用作每個表中的自然鍵， 最好有最好的設計來確保
唯一性，如果您使用代理鍵，不僅可以通過 代理鍵，還可以通過自然而然地存在
存儲。所以像這個例子，如果我們有 一個評論表，我們可以有一個評論
某個網頁上的某個用戶或其他什麼。是 什麼迫使它獨一無二？出色地，
以及發布日期或發佈 時間的組合，那就是
將是獨一無二的，因為您不能同時 收到來自同一用戶的兩條評論
時間，在同一個網頁上。這不可能，對吧 ？我的意思是，除非你喜歡小故障
系統以某種方式，這不應該發生。嗯 ，這是一個使用自然鍵的例子。這
缺點？就像我說的，您可能並不 總是能夠弄清楚要使用什麼
自然鍵。那就是一個很好的例子。 因為很自然，我們可以想出一個自然的
關鍵，對吧？跟著我。另一件事是， 自然鍵具有真實世界的價值真實世界
意思，對。所以你有與現實世界 的聯繫，意思。例如，在
評論，實際評論與發表 評論的用戶相結合
隨著發佈時間、發布頁面 或這四列中的任何一個
用作自然鍵，嗯，那些具有現實世界 的意義。隨著您的數據庫的發展
隨著時間的推移，數據庫應用程序可能 會改變或更新，或者被賦予新的含義
到數據庫以及它應該做什麼 。這意味著您的自然鍵可以
隨著時間的推移而變化，並具有新的、新的含義 。或者實際值可能會在某些情況下發生變化
實例。我們不希望那樣，顯然，因為它 必須是獨一無二的，永遠不會改變
永遠不知道。例如，如果我們到達 必須改變自然狀態的地方
鍵。嗯，這有點像把這個劃掉 。這是可能的，就像我們
可以更新所有鍵的值。但 這將要求我們更新所有連接
表之間。
這將需要我們服務器的大量資源 。這只是一個糟糕的設計
一般來說。所以這些是自然鍵的大部分 缺點。所以是的，讓我們繼續
代理權。所以代理鍵，很 明顯，第一個缺點是你有
向您的表中添加一列，即使您 有一個 a，例如，如果它是
自然獨特。好吧，如果你有來自用戶名 的評論，你可能會喜歡，好吧，
該用戶名將有助於確保唯一性。 你仍然添加一個代理鍵，當你
添加不必要的數據，因為您正在添加 一個新列並且您必須存儲所有這些
數字。代理鍵的優點之一 是它們通常是數字
通常，自然鍵可以是單詞或類似的東西 。這很好，因為通常情況下，
數字很容易處理，但並非總是如此。現在 ，還有其他一些事情。除了事實
您必須添加一個新數據新列， 這需要您存儲更多數據。它是
當您處理的只是以下各項的 組合時，有時會令人困惑
數字。我想，我們有一個專欄 ，比如評論表的 komentar，
我們只是有一個眼睛，我們有像 700 407,462 這樣的值。嗯，這種清晰，
它談論的是 ID 為 747,462 的用戶 。有時列不會非常具有描述性
儘管。這將完全融入設計師。因此 ，請確保為您的列命名，對。
但是當與其他人一起工作時， 您有時會混淆到底是什麼引用
什麼，你必須多思考並 檢查實際的數據庫結構
它的編程方式，或者其他類似的方式 。所以這是一些令人困惑的事情。
好的，現在您可能想知道，好吧 ，我應該使用哪個 1am？實際上，
如果您更喜歡使用自然鍵或代理鍵 ，這僅取決於您想要做什麼。
但通常，您會想要選擇一個並 在整個數據庫中使用它。作為
一個數據庫真的很奇怪。有像數據庫， 數據庫而不是數據庫。所以就像
數據庫反正。所以，把它放在一邊 使用代理鍵，嗯，這意味著每個
column 應該得到一個 ID，或者至少是一個 ID 的組合。如果我決定使用自然
的，每一列都應該嘗試用作自然鍵 ，因為如果我們混合搭配，
有時我們會有一個代理鍵，有時 我們會有一個自然鍵，
這將是非常令人困惑的，我們 不知道發生了什麼。所以
通常，您希望保留其中一個 。另一件事是，我不知道
另一件事是什麼。但是，是的，通常 是其中之一。現在，為了我，我個人
我將使用代理鍵，儘管這並不是 說它們在任何方面都更好。
我只是更喜歡代理鍵，因為這對我 來說很簡單，因為每次我做一個
表，我所要做的就是用它製作一個 ID。 就像如果它是一個用戶表，我所要做的
做的是創建一個列用戶 ID，然後繁榮，我們 就完成了。這就是我要擔心的。和
我真的不必擔心永遠改變 或變得不同或任何事情，
它只是一個隨機數 7254。嗯，這在 現實世界中沒有意義。現在記住，
但是，如果你確實使用代理鍵， 你不應該，你不應該
擁有他們
有任何現實世界的價值。例如，如果 我們提供這些學生證，則為學生證
對學生來說，用作代理鍵並不 是一個好主意，因為
它實際上是一個實際的鑰匙，它具有現實 世界的意義。所以這些只是一些事情
您可以在互聯網上找到大量有關 自然鍵或代理鍵的內容。
這基本上就像兩個數據庫方之間的 戰爭。是自然鍵。哦，是
代理鍵。
你知道我的意思？是的，
不要驚慌。只需找出最適合您 的方法即可。有一些小表現
差異。但我的意思是，我並不真正了解所有 這些。所以是的，信不信由你，我
不知道什麼。我在開玩笑。但不管怎樣，把它們 都試一試，如果你願意，查一下東西，
查找，哪個性能更好，或者哪個 最適合您的應用程序，或
您的數據庫，因為這真的很重要 。所以這是一個很大的話題。還有
很多重要的事情。所以我 要把很多這些概念分成
單獨的視頻。所以接下來的兩三個 視頻，這個視頻和另外兩個我想
將結束外鍵，以及很多與外鍵 有關的事情。對不起，
無論如何，這個視頻我們將討論 外鍵的介紹，確切地說
他們究竟是做什麼的。好的，所以 外鍵是一個參考。它參考了什麼？
它引用一個主鍵。就是這樣了 。這是外國人最基本的定義
鑰匙。現在，這可以是同一個表中的 主鍵，也可以是單獨表中的主鍵
桌子。所以讓我們看看這將如何發揮 作用。如果我們畫畫，對吧？
讓我們考慮一個大學數據庫的類。 所以這個數據庫已經調用了所有
特定學院或多所學院的信息 。一張桌子是上課用的。
我們還為教師和用戶以及任何其他顯而易見 的事物準備了一張表格。那是
一個明顯的實體。那麼讓我們來看看 類表。所以我們有一個類表
有了這個，把它畫出來。在這裡， 我們可以有一個類 ID，就像我說的，
我們將在大部分情況下使用代理鍵 。你可以做同樣的事情
與自然鍵。如果你不知道 我在說什麼，就不要假裝
我從不說什麼。
是的，
我們有一個類 ID。這是代理主鍵 的一個例子我們也可以有一個
講師。你看，所以我們可以有一個教師 ID，
正確的。
我們可以有，比如說房間號，因為 我們可以有，我們可以有一張桌子
對於每一個單間，它談論更多關於 房間的信息，或者我不知道
如果這是一個很好的例子。或者如果 他們說我們有更大的建築，或者
更大的大學，我們每棟樓都有 一張桌子。所以大概就是這樣
一個更好的例子。所以我們可以說建築物 ID 來說明哪個建築物在哪個建築物中。好吧，
所以在這裡，這裡有三個 ID。所以你可以 假設它們都是鍵，因為幾乎所有的 ID
將成為某種鍵。哪個是 主鍵？嗯，就在這裡，
類 ID，這是主鍵，因為它 是類表，其中的每一行
該表將有一個類 ID，無論是 1234 712-800-4364， 無論是什麼，它都是
每行都會有一個類 ID。所以 每一個類都會有它的
自己的身份證。我們還有一個講師 ID， 我們還有一個建築 ID。嗯，既然這些
與類無關，您可以假設 它們是本示例中的外鍵，
因為我們不一定會擁有一 個班級的講師 ID。這
將成為講師的講師 ID。
這意味著我們有另一張桌子供教師使用 。這是我們的導師表。我認為
我拼寫老師是對的。我們這裡 有一位導師。教師標識。
嗯，這個你可以說
這些是這裡的參考，我們也可以有一個 建築物 ID。所以這引用了另一個
桌子。那將是建築物。
然後我們有一個建築物 ID。
所以我一直在寫，我什至不能 寫得很好。但這表示建築物 ID
在那裡。這引用了那裡。所以你 可以看到兩者之間存在聯繫
這些表。現在我們將更深入 地繪製關係，而不僅僅是
使用葡萄酒，我們將在未來討論更 多。但就目前而言，我們可以看到
這些引用這些列，因此這些 列相互指向。還有每個人
行將指向對方。讓我再解釋 一下。什麼時候我們
在我們的班級表中有一行，讓我們把這 張表畫得更好一點。所以我可以善良
看看它是如何工作的。因此，假設 這是這些值的實際示例。之內
這個表，我們有一個類ID。和 指導員 我只是要把我和大樓
我只是
為簡單起見，哎呀，我不知道。因為 我不想把這些都寫出來。所以
我們可以有一個類 ID。
只是為了讓事情更多，只是為了 更準確地使用普通數據庫
是的，我們可以說像生物學這樣的 課程名稱。所以我們可以有
一個類 ID，我們可以有七個值 。我們可以讓講師 ID 為 63，
我們可以將建築物 ID 設為 16。然後 名稱可以是biology。嗯，每一個
列將有列規則或要求。比如 這裡的這兩列。
單獨來看，這個是
將有一個規則來說明此列中 的每個值。所以當我們去
下一行，下一個值 ，每一個都必須從
教師表，因為它是教師 ID。所以 這是列規則之一。現在
對於建築物 ID，我們可以說 每一行都必須引用一個值
在建築物 ID 內。好的，所以這意味 著這裡的行，讓我們說這一行
單獨，所以就在這裡，帶有七個 生物學參考文獻的班級 ID，講師
ID 為 63 的建築物和 ID 為 16 的建築物 。因此您可以看到該列有
一個規則集表示此列中 的每個值，每一行都將
現在必須參考一位講師和一座建築 每一 個單獨的行，我們可以說，哦，
這個特定的行參考，建築物和 16，和指導員 63。
你看。
這就是外鍵的工作方式。
讓我把它弄清楚，用不同的方式把 它畫出來。
讓我們來看看，建築表。
好的，讓我們
畫小方塊來代表它。讓我們說 在這張表中，我們不會
構建柱子或任何東西，我們只 想說我們有建築物，716，和
14. 所以這是三個獨立的建築物 。我們可以為建築物命名
以及各種其他的東西。現在，我們 在班級中，讓我們說這是班級
表，對嗎？我們有類 ID。所以 類 ID 應該是 6438 123，它不是
他們是什麼數字真的很重要。八 ，對。現在我們將有一個參考
到建築物 ID。所以假設我們有 777 14， 對。所以這是一個例子。所以在這裡，
我們得到了類 ID。
我拿到
建築標識。
然後我們得到了建築ID。然後我們 得到了關於這座建築的更多信息。
在這裡，如果我們願意，你可以 看到每個人之間都有聯繫
值，該類表中的每一行都有 一個與建築物 ID 的連接。
所以
整個列建築物 ID 的規則 是其中的每個值
列必須指向建築物表的建築物 ID 內的值。現在，每
單個行具有指向建築物 ID 內特定行的值。作為
你可以看到，這些都是單獨的行。所以 讓我們在這裡有點擁擠。我們可以
看到這個類表中的三個類，引用 一個建築物，那就是
ID 為 7 的建築物，可以是房間合法 建築物 74，或者其他任何
你想打電話給你的大樓，這並不 重要。就是這樣，這是一個例子
的關係。使用外鍵。外鍵是保持 事物連接的東西。
所以讓我們說七號樓的名字是合法 的，因為我真的不知道還有什麼
命名。好吧，現在我們有了合法的值作為 它的名字。我們與 ID 連接。所以
而不是把合法的，合法的合法， 並有可能很容易重複的數據
搞砸了，例如，如果合法，用兩 個 T 更改為合法或更改更改
完全命名？好吧，現在有了這個外鍵 ，它就連接上了，所以會自動更新。
所以
是的，這就是外鍵的工作方式。 請記住，每張桌子都有一張
首要的關鍵。現在主可以 主鍵可以是多列的組合
如果你願意，但它只被定義為一 個主鍵。例如，我們可以將
名字和姓氏的組合，這個 組可以是主鍵。但我們是
不會有名字主鍵。我們 不會也有最後一個
命名主鍵，
因為那是
到我的兩個主鍵。我們可以做到這一 點，我們可以將兩者結合起來。但
使用外鍵，您可以擁有多個 與不同的外鍵關係的列
表。但請記住，每一列只能有 一個引用。所以在課堂示例中，
我們有一個老師 ID，那個老師 ID，這是班級表。讓我們說
教師 ID 為七、六和五。
出色地，
這可以是一個參考，我們也可以 有另一個外鍵，我們可以有
其中建築ID可以是612，8位。所以 雖然我們只有一個主鍵
表，我們可以有多個外鍵，引用 不同的表，如果我們想要
它是哪裡的，教練，我認為它 應該是一個人工智能。所以導師
班級可以有多個導師的地方。嗯 ，這是一個多對多的關係，
我們將不得不用一個中間表來設計 我們的表。所以希望是這樣
有點道理，我只是想讓你意識 到主鍵是每個人的排序
表，外鍵是連接表， 並且您保護該完整性
外鍵約束，我們將討論 。在接下來的幾
視頻。在這個視頻中， 我想多談談外鍵，以及
特性稱為非空。好的，所以 這裡的 this 關鍵字可能與
關係數據庫到關係數據庫 ，但它可能與此類似
不知道，我們學到了什麼 不，我們 在這裡討論了這個，基本上是
比如說你，數據庫不會接受不回答 那個欄目的人，例如。所以
如果不知道，則必須在每一行 都發出該調用和值。所以行
是表中的每個單獨條目 。如果你有不的列特徵
知道，對於每一行，都需要它 有一個值。所以想想像傳真
數字。每個人都有傳真機嗎？不，大多數 人不會。所以如果我把它設置為不，
不，我沒有給它一個傳真號碼， 然後它會拋出錯誤並導致問題。
也就是說，這只是一個例子，說明並非所有 的都有效。現在，這對外國來說很重要
鍵。因為它與所謂的基數 有關，我們將討論它
當我們開始更多地設計數據庫 時。但這基本上是
關係是必需的。所以
這將決定我們可以在表 中放回傳真的值類型
機器，如果我們把它放在它的位置
不為空。
這意味著每個值，我的意思是， 每一行都必須有一個值。那也
意味著如果某人沒有價值， 他們可能無法放置任何信息
在這張表中。因此，通過設置此限制 ，您將消除所有不進行的行
要有價值，你就在阻止它們發生。你 明白我的意思嗎？是的，所以如果
您確實希望沒有傳真機號碼 的人能夠輸入的情況
數據放入您的表中，那麼您就不 會希望使用 not no 作為特徵，
因為那會阻止他們這樣 做。現在，這很重要
來到外鍵。因為如果我們需要 一段關係，我們說不。那
意味著該列的每個外鍵值 ，每一行都必須有
為此建立關係。所以主鍵 和外鍵最大的區別之一
鍵是一直需要主鍵，永遠不會 改變。永遠不知道。正確的？
放下munchak，當。嗯，外鍵有點 不同。因為我們可以擁有它們
在不需要它們的地方，它們可以 是空的，因為有時這種關係
不在這裡。或者他們可以像我們一樣 更新，我們可以建立新的關係
這張桌子，我們想要的。我們 不想消除盡可能多的更新。
但有時這是必需的。這就是為什麼 我們使用外鍵來保持聯繫。
因此，當事物更新時，它們會在整個平台 上更新。
現在，
我們不希望主鍵值改變。但是 我們可以有外鍵引用
改變。例如，假設我們在這裡有 一張桌子。我們只會有它
必須是碳水化合物，好嗎？或者哎呀， 有車，
正確的。我們有
兩排，有一輛 ID 為 6 的車和 一輛 ID 為 10 的創意車。
正確的。我們這裡有這個人。我們 為他準備了一張桌子。是什麼使
用戶表，讓我們說出於某種 原因，我們想連接什麼車
他擁有。好吧，他目前可能擁有六個 ，對吧？我們永遠不想要的價值
六個改變，仍然在談論同一輛 車。讓我們說這輛車是這樣的
這裡。這是一些火焰。對了，就在這邊 。我們得到了一輛合法的汽車。好的。
所以這是兩輛獨立的汽車。 10 談論 這輛車 6 談論這輛車。我們不
曾經希望它發生在這個數字上升的地方 。第八單元，或者我們改變主要
關鍵，它仍然指的是同一輛車 ，因為那時我們有一個變化
首要的關鍵。但是使用外鍵，它可以 在某種意義上改變，哦，我不再
擁有這輛車。現在，我擁有這輛車。所以 我們沒有更新任何主鍵。但是國外的
鍵，也就是這個連接，就在這裡， 確實更新了。好的。所以那種
主鍵和外鍵有點區別 ，主鍵值應該
永遠不會改變，外鍵值可以改變 ，因為引用會改變。希望我沒有
只是失去了我的思路，我想我想 我要去，但在這裡有點空白
一秒。好吧，讓我在大學裡舉例 說明這一點。重要的事情之一
在這些具有主鍵和外鍵 連接到該主鍵的表之間
關鍵是它們必須是相同的數據 類型，即數據類型是否相同
是 int、字符或日期。基本上， 它必須具有所有相同的特徵
像排序規則或字符集或存儲 引擎。現在，唯一的事情
可以變化是標稱特性。因為如果 我們在這裡有主鍵，那麼，
我們知道主鍵是永遠不知道的。 所以我們一直不知道，對於初級
關鍵，我肯定會加一個 N。另 一方面，外鍵並不總是必需的
建立聯繫。例如，在前面 的例子中，我們有用戶
桌子上有這個人在這裡。 然後我們有這張汽車錶
用戶擁有，對嗎？他可以有一輛車 ，對吧？好吧，他目前可能沒有
汽車，因此，我們沒有連接到 這個表。因此，這種連接
是可選的。
或者不需要。是的，這看起來甚至不 像英語，但足夠接近。
讓我們再想一個例子。如果我們有 一所大學，那麼我們可能會提前
在人前每一節課都註冊的 學期裡，每一節課
還沒有導師，我們 還在找導師。雖然
我們知道這就是我們想要的課程。 這意味著我們有一個指導員表，
我們這裡有教員，我們有 一張課桌。一個班級表去
有一個外鍵指向該課程 的講師的講師。除非
在多對多的情況下，多個教師可以 教授多個課程，那麼我們將
需要一個中間表。但這裡的情況 並非如此。你需要了解更多關於
檢查我的人際關係視頻。但是現在 ，我們會有一個類 ID
和講師 ID。正確的。然後在這裡 ，我們有一位講師在
這說明ins教練夠近了吧？ 現在這將是對此的參考
這邊。現在這將接受什麼樣的 價值觀？讓我們舉一些例子。
假設我們有一排，班級 ID 為 7，教師 ID 為 3，
我們將添加一個調用，我們將創建類的 名稱。我們有一個通話記錄數學。
正確的？然後我們可以在這裡擁有另一 個價值。我想我現在不在屏幕上。然後
我們可以請一位教練過來。他的名字， 他的ID可能是七。他的名字可以
是
搖。正確的？
所以這個類 ID 是七個美味的變化 會讓人困惑。讓我們做這個 16。
好的，所以這個班級 ID 是七。它是由一 名八號教練指導的，我們實際上並不這樣做
已經到這裡了。所以這意味著我們 要么有另一行，要么有一個錯誤
因為我們從不希望這種情況發生。所以假設 我們有另一個班級。有任何房間。好的，
我們這邊還有一節課。 這是數字 8 由 Caleb 教授
正確的？所以現在我們有了一個類的實例 。我們拿到了班級ID七，導師
ID 八，名字數學。所以導師ID 指向這個Walker，這個導師
這邊。這是家長 對不起，這 是家長 這是孩子 因為這個
是對父項的外鍵引用。所以 這意味著這種關係是外國的
鑰匙。現在，對於不正常的事情，如果 我們到達了未知的地方，如果我們添加
特點，
不是
知道，或者這意味著這一行 必須有一個教師 ID 值，即
意味著教師 ID 的每個值都是 必需的。那擺脫什麼，那
意味著不可能將沒有教師 ID 的班級放入此表中，
如果您創建了課程，但沒有講師 ，這可能會導致問題
然而，或者如果導師退學了，你必須 找一個新的。所以這個可能
不知道是不是不好用，如果我們擺脫 了它。好吧，現在我們可以上課了
一個主鍵，但沒有外鍵連接。現在 我們有一堂課的想法是 7 和
它滿足了。而現在的老師， 我們沒有。我們還有這個人
這邊。他沒有教那門課，但 他仍在系統中。傑克還在
系統，班級還在系統上。這是一個 很好的例子。所以對於這個，不
舊的可能不是最好的主意。其他示例，使用 nano 將是一個好主意，因為它
迫使這種關係存在。你只想到 另一個簡單的例子。真實的
快速，快速的例子真的很快。如果我們 有兩個，兩個實體，我們就有一張信用卡
卡公司。所以我們拿到了卡。然後 我們讓那個人拿著卡片。所以
買車或從銀行拿到卡的 人，他用它來買他們的
雜貨和他們的汽油，他們正在打破 數千美元的債務。嗯，那個人
會和這張卡有關係，因為他是持卡人 。那就是車。現在，
如果我們有一張桌子，我們可能 有一張牌桌，我們會有一個人
ID，它會引用 person 表，對嗎？如果 我們將其設置為不知道，那就意味著
此卡片表中的每個值或每 一行都需要一張卡片
所有者。如果我們有，如果我們擺脫了這個 ，那就意味著我們可以在這裡有卡片
過時的，目前沒有所有者， 因為沒有聯繫，我們打破了
所有者，或尚未分發的新卡 。所以如果你想讓這張表
僅適用於當前擁有所有者的卡片，因此我們 可以擁有自己的卡片。那麼我們
可以有一個與人員 ID 具有相同數據 類型的名義列。現在每一個值
將有一個人的ID 這有意義 嗎？這就是介紹
不知道如何處理外鍵以及 有時您會想要它們
不為人知。其他時候您希望它們 可以為空或不需要。我有一堆
寫在黑板上。但還是別看 了。因為我只想和你說話
伙計們，一分鐘。我剛寫的。 所以你不必看著我寫 50 100 個字
是不是很無聊。所以相反，我 只是要談談。好多了，對吧？
無論如何，在本系列的最後一個視頻中 ，我們已經討論了外鍵。而當我們
知道，它們在數據庫中的表之間保持 連接。所以第一桌，第二桌，繁榮，
外鍵，從這個外鍵連接 引用這個表的主鍵
在這裡，這就是外鍵的工作方式， 它們保護我們數據庫的完整性。
他們保持一切一致。想想 如果沒有外鍵約束，
保持更新和一切，然後我們 將不得不手動更新所有
表之間的連接。這將是一個很 大的浪費時間。它只是更容易
只是將所有內容存儲在一張大表中 ，這兩種解決方案。要么手動做
它或將所有東西都存儲在一張大桌子 上是行不通的。所以我們需要外鍵
約束來保護我們數據庫的完整性 ，對嗎？
這叫做參照，參照完整性，這是個 大詞。好的，所以現在這個概念
這些詞可能特定於某個關係 數據庫管理系統。所以
這些來自 MySQL，但如果您使用 不同的關係數據庫管理
系統，你的可能有點不同。但總的 來說，這些概念非常相似。
因此，如果您不使用 MySQL，就不 會浪費時間，因為您需要了解
外鍵約束如何工作。好吧， 酷。所以首先是外鍵約束，
確保如果您更新父級， 子級將更新或導致錯誤
或者類似的事情，這取決於你，你 可以做出決定。而且它也在進行
燃燒防止你創造孩子 ，當沒有父母的時候
那個主鍵。例如，如果我們有五個 用戶，用戶 ID 分別為 2468 和 10。
然後我創建了一個評論表，並添加 了一行，來自用戶 745，好吧，
那個人甚至不存在，所以這行 不通。所以這就是為什麼外鍵
約束很重要，因為它們再次保護了 我們的數據庫，並使它變得漂亮
自我管理，而不是我們必須手動更新 所有內容。那麼讓我們開始吧。
好吧，讓我拿一支粉筆。這個 看起來不錯，變矮了。這是
我留下的最大的粉筆。好的，所以當 我們創建 SQL 語句時，我們可以
在刪除和更新時在此處添加這 兩個關鍵關鍵字短語。這是指外國
關鍵約束。所以當我們，但它是在 談論父級，所以當我們更新父級時，
我們想要我們 Superfly 的孩子。當我們 更新父級時，我們希望子級做一些事情。
當我們刪除父級時，我們想讓子級 做一些事情，那就是這些關鍵字
吝嗇的。所以這些關鍵字，它 在談論外鍵約束。它指的是
給父母。
好吧，讓我們畫一些基本的表格，只是 為了保留一些我不會去的東西
舉任何具體的例子，我只是把事情 畫出來。所以讓我們說我們有
這裡的父母。
正如您在之前的視頻中了解到 的，父項是主鍵，對嗎？然後
讓我們用一個孩子來引用這個主鍵。 我們先不畫這條線。然後我們
有外鍵。這個，這個主鍵 是父級中的一列。而每一個
行有一個唯一值，外鍵是 父列中的一列，它引用
主鍵。所以說連續的 值 400 可以引用值 400
這一行，還有這張表的一行，我 已經解釋得夠多了。現在讓我們做
另一個子表。所以這些都是引用 同一個主鍵的外鍵。
但它們是兩個不同的表。所以是的，我們 可以有一個用戶表，然後我們可以
例如，有一個評論表和一個訂單 表。他們都被購買或評論
由用戶。所以這些外鍵引用 主鍵，所以里面的每一個值
外鍵列中的子項表 需要是引用的值
存在於父列中。現在，這些 值就在這裡，這些選項
參考家長。所以當我們刪除父級時 ，或者當我們更新父級時，我們想要
同樣的事情發生在孩子身上或無論 選擇是什麼，我們將討論
一秒鐘的選項。所以這就是現在這些 工作的方式，只是為了澄清事情
up 我要在這裡刪掉這些話只 是因為它變得有點擁擠你
知道，我希望它是和平的。好 的，這就是拉外鍵的工作方式
回到主鍵這些選項指的是 父鍵會發生什麼？現在
這些選項就在這裡 這些指的是 發生的事情 指的是發生在
孩子 好的，現在變得很混亂。 到處都有箭頭，比如圖表和
圖表，但你會得到它別擔心限制 。您可能還會聽到無操作
至少對於我在不同數據庫管理系統中的 SQL 來說是好的。這些可能不同，
但無論如何，限制會引發錯誤。所以 如果我們試著喜歡，我們可以給我們
可以為每個選項提供其中之一。所以 在刪除時，我們可以給出限制，級聯
或在刪除時設置 no 或 No.，我們可以 讓它限制級聯或拒絕添加更多
箭頭，你知道，但假設我們現在正 在處理刪除。我們想要，我們
想使用限制。所以在我們的 SQL 語句中，我們 可以說 on delete，restrict the on delete，
限制，並且每當刪除父項時都會 給我們一個錯誤。因此，如果
我試圖用 ID 刪除用戶，我不知道 我正在寫下所有內容，讓我們
就說504的ID。然後這個孩子 有一行有504，在外國
關鍵列，那麼它會拋出一個 錯誤，它不會發生，並且
父項不會被刪除，不會發生。 這就是刪除級聯的工作原理。
對不起，限制刪除，現在限制更新 ，如果我們更新了父級並更改
他們的主鍵。假設我們更改了 504。而這些，這些孩子都參考
504 與外鍵，然後我們將其更 改為 508。它不會工作。和
它會回到原來的樣子。因為 我們有它的限制，我們不去
讓它發生。你看。好吧，下一 個選項呢，級聯級聯，我們會
做任何我們對父母對孩子所做的事情 。讓我澄清一下這讓我感到困惑。
到處塗粉筆，你知道，完全有幫助。 好的，所以現在如果我們級聯
刪除，這意味著如果我們刪除父級 ，我們也將刪除子級。所以
我們刪除了 504。兩個孩子都被刪除了，boom， 孩子被刪除了。所以現在 504 不存在
根本。例如，如果這是一 個評論表，我們有來自
用戶 ID 為 752 的用戶，我們刪除了 752， 那麼用戶顯然會，所有的
他的評論也應該被刪除， 因為我們會有用戶的評論
存在，不存在，不應該發生。 所以級聯刪除會做到這一點
更新是，如果出於某種原因，我們 更新了主鍵，這顯然不應該
發生，因為主鍵應該永遠不會 改變。但你仍然想要那種保護
在你的數據庫上。更新時，如果我們有級聯， 如果我們像 504 一樣改變，讓我們說這些人
再次存在。
很瘦吧？那是因為，好吧，
所以這些人存在，同樣，500，500， 這些參考文獻，504。如果我們更新
這到 508，嗯，這意味著所有的孩子也 會更新。所以現在，它在內部連接
在不同的表中。最後，我們 有哨兵。這將做的是它基本上會
只需將孩子設置為該特定值的正常值 。所以如果我們刪除了父級，這
只是要擺脫該值，該行應該 仍然存在。但實際國外
關鍵引用，它不再引用任何東西， 它是空的。所以沒有它不是引用
任何事物。所以該行的列。比如說 ，我們有意見。它是
來自 Billy Bob 的 ID 為 504 的評論。如果 我們刪除它，無論何時我們要
有評論，沒有海報，或者沒有評論 ，或者根本沒有價值。都說了
沒有人會為我們刪除更新，同樣 的事情，如果我們更改父級的 ID
把它從 504 改為 508。好吧，所有 的孩子都將被設置為沒有價值
出色地。好的，現在有一件重要 的事情，他知道孩子們有
有，他們不能有我應該說，不 是沒有特色。我們談到了那個
在之前的視頻中。我肯定會結束 。如果這不是否，我們會更新，
如果我們有更新集，沒有。並且我們 將 504 更新為 508。你能連我都得到
這整個時間？重置五或四或508？ 我想你可以看到那個。你
我們可以換五個、四個或五個嗎？ 這不是不，它會像，不，我們
不能這樣做，因為我們不能將它設置 為否，因為它具有標稱特性，
這意味著每一行都必須具有 該屬性或該列的值。所以
我會報錯。我會回到原來的 樣子。所以這是國外的介紹
關鍵約束。對不起，如果我說得很快，但是 是的，很酷的東西。這是重要的東西。所以
學習它，為您的特定關係數據庫 管理系統學習和學習。在
在本視頻中，我們將討論簡單鍵 、複合鍵和復合鍵。這些都是
鍵的類別。所以就像當你定義一個數據庫 時，你可以說，這是一個主要的
鍵，或者你可以說它的外鍵。但 你不必說，哦，這是自然的，
簡單的。主鍵，就像那些只是類別一樣， 您必須在我們的數據庫中定義它。
所以這些我們正在學習的這些術語，或者 更多是為了設計，所以你知道，最好的
為您的數據庫設計，但您實際上不 必定義它，對嗎？比如說，
這支粉筆就在這裡，您可以將其 定義為白色粉筆。怎麼辦
一種白色的粉筆？是嗎？嗯，它 是 x 品牌或其他什麼，你不必
定義當你告訴別人哦，這是 一支粉筆。那是最糟糕的
曾經的例子。繼續。好的。簡單而 復合。好吧，這麼簡單意味著
鍵由一個稱為複合的表示它 由兩列或更多列組成。這是
最常見於自然鍵，因為自然 鍵可以是多列的組合，
而代理鍵只是一個隨機數列 。所以代理鍵是簡單的組合
鍵或多列。例如，我們可以 有一個名字加上姓氏，再加上
電子郵件。這可能是複合鍵的一個例子 ，因為整個組作為一個整體是
主鍵。所以我們可以有
吉姆，
傑克和
合法的
無論什麼都很棒，等等，等等， 等等。然後我們可以有另一個
同名，吉姆，傑克。我們可以有 不同的電子郵件，這兩個仍然是
分開，他們是獨一無二的。因為三個人的組合 是獨一無二的，吉姆和傑克，重複一遍，
但是郵箱不一樣。所以這些作為 一個整體，是主鍵的不同值。
這是複合主鍵的示例。原因 是，是因為它包含
三列 123. 這是一個複合鍵 的例子，一個複合自然鍵
具體點，因為我們只是在 使用已經自然存儲的東西
在我們的數據庫中。現在讓我們想一 個簡單的鍵，自然鍵，或者用戶名
一個好的是脖子用戶名可以 是可以單獨用作的東西
key，很簡單，因為只有一列。很簡單 。一世
知道。好的，
所以我想談談你可能會遇到的另一個術語 。那是複合的。好的，現在，
我想澄清一些人和一些關係 數據庫管理系統沒有
闡明這兩個複合詞和復合詞之間的 區別。他們只是使用它們
可互換地表示具有多個列的鍵 ，有些人更進一步，並且
將它們分解為兩個獨立的術語。 所以我們要定義這兩個術語，
但您可能會看到它們可以互換使用 。所以不要對細節過於技術化。
並且會像糾正人一樣，哦， 等等，那不是複合鍵。那是
一個複合鍵，因為大多數人 只會像看白痴一樣看著你，
並不太在意。好吧，無論如何， 繼續前進。複合鍵基本上是，
什麼時候
這是一個調用，它是一個具有多 個列的鍵，它們本身都是鍵。
所以這是最常見的例子。這 是用於中間表。所以想想像
這。我們有一個表用於存儲有關視頻的 信息，我們可以說它是一個視頻表。
我們也可以在這裡有另一個表，我們可以 有一個用戶表。其實，在這裡，讓我們
讓我們這樣做。我們將有一個評論狀態 。好的。然後在這個評論中
狀態，我們將有一個專欄，列明他們正在 評論的視頻。你看，嗯，這個
是多對多的關係吧？所以 這可能不適用於數據庫
設計，因為一個用戶可以評論多個視頻 。然後一個視頻可以有評論
來自多人。所以最好的方法是做到 這一點，而不是有兩個單獨的表
像這樣我們將創建一個視頻表。 然後我們會有一個中間表。和
這將是視頻評論或用戶評論。你明白我 在說什麼。所以我們得到了一個連接
在用戶和視頻之間建立 一個中介表。它與
兩把鑰匙。所以我們有用戶 ID，然後 是視頻 ID，然後我們可以有另一個
消息、日期或其他任何內容的列。好 吧，你可以看看，如果你不知道
我在說什麼，去看看我的視頻 來設計多對多的關係。但
否則，如果你知道我在談論繼續前進 ，你可以看到整個密鑰本身，
每個用戶和視頻 ID 組合都必須是 唯一的。那可能，那可能是壞事
例如，因為用戶可以多次評論 同一個視頻。所以這大概是
不是最好的例子。
讓我想一個好的。
但無論如何，這將是一個例子， 我們可以在這裡添加另一列
製作一個獨特的，我們可以有日期 和消息。所以消息必須是唯一的，
並且用戶 ID 有
是獨一無二的。並且視頻 ID 必須是唯一的。那 將是一個組合鍵，一個化合物，一個化合物
關鍵，丟失，例如，真的很快 。一個很好的例子就是大學，
我們可以有用戶，我們可以有一個學生 ，學生表。我們可以有一個班級表，
正確的？所以這個表保存了關於學生 的信息，這個信息表保存了
關於班級的信息。現在，我們 如何顯示註冊，我們應該為
現在在這裡的每個學生，因為這是多 對多的關係，這意味著我們需要一個
兩者之間的中介表。所以這是一個 很好的例子，對不起我的壞例子
在最後一個中，但這是組合鍵 的一個很好的例子，因為兩列
他們自己是不夠的。所以我們 必須添加另一個，這不是
本身。但是對於這個，我們可以有 一列，我們將命名表，學生班級，
或者學生班，不管你怎麼稱呼 它，學生班。而在這裡，
我們可以有 ID、學生 ID 和班級 ID。 現在，學生之間的這種組合
ID 和類 ID 必須是唯一的。所以 假設我們有值七和四，七和
六、七、七，那會奏效。但是 如果我們有七和四之類的東西，
我們會得到一個錯誤，因為 那已經在那裡了。這行不通
那麼好。所以組合必須是獨一無二 的。這些也是外鍵，
指向另一個表。所以這兩個都 是關鍵。主鍵是複合的。因為
我們有學生 ID 和班級 ID 作為一個巨大 的 ID 或一個巨大的鑰匙，我應該說，
因為組合必須是獨一無二的。我們 可以在這一邊重複七個。我們可以
在這一邊重複六次。但我們不 能重複七和六的組合，他們
整體上必須是獨一無二的。所以 復合鍵。那時你至少有一個
a 本身並不是一個鍵。對於復合，它們 都必須是鍵。所以對於復合。
讓我們回顧一下我們在上一 個視頻中給出的示例，視頻
評論，讓我們說這是中間表炸毀 只是為了讓我們看到它真實
大的。這是用戶 ID。然後我們 有了視頻 ID。嗯，這還不夠
創造獨特性，因為用戶可以不止 一次評論同一個視頻。謝謝
回複評論或類似的東西。所以 我們需要另一列，我們可以
添加時間戳，或者我們可以只說 時間列。這將保持一個獨特的
因為你不能在完全相同的時間對同 一個視頻發表兩次評論。正確的。
這將確保唯一性，因此我們可以確保 這三個作為一個整體是唯一的。
這是組合鍵的一個示例，因為 至少一列本身不是鍵。
這是一個鍵，因為它指向用戶的表 。這是一個關鍵，因為它指向
一個視頻表。這不是一個鍵， 因為它只是那個中間表的一列。
這就是我想在本視頻中談論 的三個術語。另一件事
我想說得很快，我不會說最好 的技術是什麼。為了這，
我只想說有些人用中間表 做什麼，有些人會
在復合鍵的頂部給它一個代理鍵 。例如，在大學裡，保持
在示例之間來回切換，我可能會 讓您感到困惑，他們可能會添加
諸如註冊 ID 之類的東西。
然後我們有學生證。然後我們 有類 ID。這兩個都是外國的
鍵。他們可能會將此註冊 ID 用作該表的代理鍵。
雖然不是必須的。對於某些 關係數據庫管理系統，一些
關係數據庫管理系統，或 框架或其他東西，不會
能夠很好地使用複合鍵或複合鍵。 所以你可能需要一個簡單的鑰匙
在這種情況下，您仍然可以想到 復合鍵。這組就在這裡，
班上的學生，沒有那個索引或 任何你想要的，或者你可以
用那個強制唯一性。但是隨後您可以 使用註冊 ID，這樣您就可以擁有
像七。然後你可以在四班有 六個學生，然後你有八個，
有四個學生在 12 班。然後你可以 有九個人，有 16 名學生
四班，然後我們可以有 10 個，學生 16，在班上，12，等等。那是
只是一些人所做的一個例子。這個 視頻將是一個快速回顧，我會
實際上在這裡使用我的筆記只是為了 確保我得到主要的一切，因為我
不會試圖記住 10 個視頻或內容有 這種瘋狂的、瘋狂的眼睛。但
無論如何，我們開始的第一件事是超級鍵 。所以一個超級密鑰就是任意數量的
確保唯一性的列，然後是表。所以 我們有超級鑰匙。我仍然
不知道為什麼只有一個詞， 這讓我很困惑。所以有人
請解釋一下，然後我們就有了一 個候選鍵。現在超級鍵的區別
和候選鍵鍵是候選鍵 是最少的列數用於
強制唯一性。現在你不能有 多個候選鍵，如果你喜歡
某個群體。因此，如果是這種情況 ，您必須選擇一個作為主鍵。這
主鍵是您選擇作為表主鍵 的那個，其他所有的
您可以指定為備用鍵。如果是這樣的話 ，它們仍然可以是獨一無二的，
您仍然可以對它們強制執行唯一性 ，但它們不會用作內部的主鍵
你的桌子。還有什麼？好吧 ，好吧，那就是所有的想法
找到一個主鍵。然後當你在 另一個表中引用它時，你有
所謂的外鍵。外鍵引用 ，主鍵是一個連接。
這就是您在表之間建立連接的方式。如果 你有一個用戶 user 表，那麼你
有一個是評論表。好吧，評論是由 用戶發布的，因此您可以參考
該評論表中的該用戶。我們就此 談了很多。所以我很確定你們
了解
挺好的。
現在，這幾乎就是您需要擔心的四 個主鍵和外鍵的全部內容，
你只需要主要擔心這兩個。這些 對於尋找來說不太重要
並弄清楚。這兩個是必不可少的。 我不是說這些不重要，它們很重要
重要的。但是當你知道有一個超級鍵時 ，真正定義一個超級鍵是沒有意義的
您不必說候選鍵，好吧，所有 這些都定義了唯一性。那是
一。那是一把超級鑰匙。所有這些都定義了 唯一性。這是另一個超級關鍵。哦，
最後，我們確定了候選鍵的正確 大小。那是我們的候選鍵。
然後我檢查營銷順便說一下，只是為了 讓你知道那是什麼。然後哦，好吧，
我們一共得到了10個候選鍵，五個超級 鍵。現在讓我們找到一個好的初級
鑰匙。哦，這個看起來不錯。我們將使用 我們將設置的其餘鍵是備用鍵。
這只是不必要的複雜性， 當它更容易說，哦，有
一個候選鍵。它已經是我們需要的最小 的了。我們將使用它作為我們的主要
鑰匙。現在讓我們看看是否還 有其他備用鍵。我們沒有好的
還不錯。沒關係。誰真正關心？哦，我們 確實有一些不錯的。哦耶。讓我們
將它們設置為索引並確保它們是唯一的 。稍後我們將使用它進行一些搜索
上。這是如何找到主鍵的 示例。你不必做這個
手工勞動大約 20 個小時，以確定 使用哪個主鍵。好的？然後你
在其他表外鍵中引用該主鍵。 所以這就是為什麼這兩個是
最重要的外國和初級，這 是你最應該關注的兩個
記住，好吧，備用候選超級鍵 ，它們有點重要，但不是
一樣重要。好的，讓我們來看看primary for。讓我們只是，讓我們清除這個
一秒鐘。好的，
羅伯·梅里特。
現在，有一些類別，伙計，我現在除塵 了，就像我可以呼吸一樣。有一些
我們可以談論的鍵類別。所以 第一個是代理和自然的。
所以代理自然鍵。代理鍵只 是一個沒有真實世界的隨機數
值，或者沒有現實世界的意義，就像一個 ID、用戶 ID、學生 ID、來電顯示
教室標識，
商店ID、銷售ID、唱片ID、歌曲ID、圖片 、ID，無論你想要什麼，我
真的不在乎。
只要它是一個 ID 並且它是一個代理鍵， 那麼，
是啊是啊。
我不知道我剛剛在那裡做了什麼。但無論 如何，自然的東西已經是自然的
在數據庫中。您只需將其定義為您 的密鑰。現在，通常，當您想要
在你的數據庫中使用鍵，你會的 ，因為它是你的關係數據庫，你
將選擇代理鍵或自然鍵， 您將在其餘部分使用它們
數據庫，你不會從代理 和自然切換，你不會
就像，哦，這個有一個自然鍵，我們 將使用自然鍵，但這個沒有，並且
我們將使它成為替代品。這是一個 糟糕的設計，你應該能夠通過
已經存在的列。然後你可以添加 一個代理鍵，如果是這樣的話
你想做。如果有任何機會，你不 可能在沒有的情況下定義唯一性
代理鍵，您幾乎需要使用 代理鍵。但那種情況
應該盡量避免。但有時 你真的找不到自然鍵
那就足夠了。所以你們有點遵循 它。我的意思是，代理鍵，隨機
數字，自然鍵已經在表中。涼爽的 。簡單的。說到簡單，我們再聊
關於簡單的鑰匙。好的，所以我們變得簡單了。我們 得到了一個複合體
化合物。
好的，所以簡單基本上是一個一 列鍵，複合和復合，我們的多個
列鍵。我們在上一個視頻中談到了 那些，我相信。是的，就是這樣
幾乎所有類別的鍵。當 您定義主鍵或外鍵時，
您不必指定它是替代自然 、簡單複合還是複合。
這是為了我們，設計最好的 方式，因為例如，你想
使用複合鍵？或者你想使用簡單 的鍵？這是個好問題。如果你
決定你想使用簡單的鍵，順便 說一下，代理自然之類的東西
你在整個數據庫中都這樣做 ，你可以從簡單的來回切換
和復合。例如，你可以有一個 用戶的表，我們可以看看，
對不起，學生表，班級表，然後 我們將有一個，註冊一個
參加某些課程的學生，我們可以使用一 周，我想我們可以使用複合材料
對於這張桌子。然後我們可以對這些 表使用 simple 。這是你可以的
做。但是您仍然應該使用代理或自然， 只需選擇一個並在整個過程中使用它
你的數據庫。希望我不會說得 太快，因為我​​走得很快。
如果我只是在看到一列時讓我 知道幾英寸，降低幾分貝，
因為有點超，好吧。現在，我們 談論的另一件事是外鍵和
外鍵約束。嗯，外鍵的主要 種類，外鍵的主要種類
關鍵約束，更新和刪除，這些 保護我們數據庫的完整性。
定義這些，無論何時創建表 ，何時使用 CREATE TABLE 語句
或創建或您的關係數據庫管理系統 為創建表所做的任何事情，
很有可能，你會說
你有一個外鍵。我只是
將簡稱 fk，然後你有一個 約束，你通常可以命名它
約束。所以你可以像廢話，廢話 ，廢話，隨便命名。然後我們可以
說更新，
或刪除，選項是我認為你 什麼都不做或基本上
扔空氣或者我們可以更新孩子 或者我們可以基本上擺脫價值
為了孩子。所以這將限制級聯和 設置。不。但是你的關係數據庫
管理系統可能會使用一些不同 的東西，這很好。對，就是
就是這樣。是的。是的。差不多就是 這樣。
涼爽的。涼爽的。
是的，這是鍵的摘要。所以是的 ，那是一個
大量的東西。
所以有幾個不同的名字。所以基本上 ，這只是一個標準。它是
繪圖數據庫的標準。還有你可能聽到的幾 個術語，或者我猜的首字母縮略詞，
e AR、型號、E、AR、D 或
E AR模型，
或者只是數據庫設計，以最簡單的 為準。但基本上，這些是用於
指用於繪製整個數據庫結構 的方法。這些視頻被
繪製的表格和線條和戲劇，繪製的表格 和線條和東西，以及各種很酷的
類似的東西，但實際上還沒有正式設計 任何數據庫。所以我們要做什麼
現在我們已經學習了大部分概念 ，唯一沒有真正涉及的是
正常形式，我們將進入這些形式。 但無論如何，我會讓它們變得簡單，
別擔心。所以我們要做 的是學習繪畫的標準
這些數據庫，我們將用它來練習 。然後我們將學習正常的
形式。然後我們將為很多面向對象 設計數據庫。所以我們要去
進入圖紙數據庫的標準 。顯然，標準種類
的粗糙。我的意思是，沒有特定的方法 ，你必須做所有事情，因為那是
煩人和愚蠢。所以我們要 做的是繪製非常簡單的圖
事物。我將在此視頻中說明 它是如何工作的。所以呢
這意味著增強實體關係模型 ，增強關係圖，增強
關係
模型。
是的，我認為這就是他們所代表 的。我不認為它代表關係。我認為
它代表關係，這是有區別 的，你可能應該知道，
目前為止。關係是表，關係是兩 個表之間的連接。是的，
所以無論如何，是的，所以我們 要討論的這些設計技術可能是
這個叫，呃，呃，呃，呃？或者，誰知道 ？但是，是的，你這樣做的方式是
你定義你的數據庫結構。所以任何 DDL 幾乎都是數據定義語言
SQL 的一部分，我們很久以前就 討論過。我們不會定義實際
值。例如，如果我們有一個供用戶使用 的表，我們就不會放在一行中。哦，
密碼為sweet pie的Caleb咖哩 很好吃。 24. 是啊，是啊，
是啊是啊。 yeah.com 和電話號碼 100 或任何類似的東西。是
不會在那裡放類似的東西。 我們只是要把列用戶名，
密碼，電子郵件，電話，三個太酷了。 好吧，無論如何，
讓我們開始吧。
所以要畫一個表格，數據庫表格，你只畫 正方形，就像超級簡單，好吧。出色地，
他怎麼會進化，那麼容易，對吧 。顯然，在黑板上做這件事不是
非常方便，因為一方面，您的空間有限 。對於兩個，你們中的大多數人不
有黑板。對於三個，我不知道第三 個原因。但這大部分實際上是
在電腦上完成。我們很快就會 這樣做。所以堅持這些概念
無論出於何種原因，我們都會進入 計算機設計。顯然，正如我
將來製作新視頻，這就是我要 做的。所以現在，我們將學習
概念。您可以下載實體關係設計 程序，例如 MySQL Workbench，
我做了其他的像 verta bello 之類的， 我不記得它叫什麼了。還有一對
其他，您可以為該系統上的任何關係 數據庫管理系統設計。所以
去看看我的其他視頻，或者我的播放列表 ，我認為它正在審核中或其他什麼。但
我不知道，在我的頻道上查找數據庫設計 ，看看我得到了什麼。你也可以
查找呃呃呃D關係，或者設計。你 可以得到各種應用程序和程序
幫助您設計數據庫。然後他們 中的一些人擁有所謂的工程。
所以你可以對你的數據庫設計進行 正向工程，它基本上只是編程
您的數據庫。而且超級簡單。是的 ，但我已經離題了。那麼讓我們
回到主題。好的。所以這就是我們繪製 表格的方法。我們要做的是給它一張桌子
名稱。因此，您可以將表名 放在一個完整的列中。
或錯過它的正上方。所以現在讓我們把 它放在它上面。所以這是一個用戶表。
然後我們可以在這裡做的是 我們把列這樣垂直放置，當
我們水平地寫它們，但我們這樣列出 它們，我們不會把它們放在這兒。
因為如果我們把它們放在這裡， 我們會假設我們會有行值，
就像 Caleb 一樣，密碼，他很棒的電子 郵件是合法的，或者很酷，然後密碼已經
設置密碼。但我們不這樣做，我們 只是要放置列。所以第一個
我們可以擁有的列是用戶 ID， 因為我們將使用代理主鍵
在這個例子中。所以我們會有用戶 ID。現在，當你進入它時，你也可以
在這裡放其他東西，比如數據類型 ，以及你有的任何其他限制，比如
如果你願意的話，這不正常。但就目前 而言，對於大多數設計概念的設計，
我不會那樣做，因為我會一 遍又一遍地寫同樣的東西
再次。並且您只能在完成數據庫時 才這樣做。所以你可以善良
不用擔心以後的數據類型。但是 現在，我們只需要獲取列
弄清楚。好的。
我們從那裡走。
所以用戶ID，用戶名，
密碼，
等等。希望你們能讀到。可能 不會。然後當我們做如果
我們想創建另一個表，猜猜我們在做什麼 ？我們只是畫了另一個盒子，對吧？和
我們用線連接這些。我們可以 ，有一些方法可以繪製代表
不同的線性關係。就像這是一 種方法。或者我們會喜歡，
是的，我的意思是，你明白了。
哦，我發現了一大塊漂亮的粉筆。涼爽的。
好吧，這就是你這樣做的方式。現在 ，這幾乎是實體關係的所有基礎知識
繪製圖表，記住，我們把這些放 在這裡，列。我們還能做什麼
如果我們願意，我們可以在這裡放置索引 ，我們可以放置類似的索引類型。然後
我們也可以用不同的線條畫出我們 的關係類型。我們可以畫出我們的
將外鍵放在此處或做 其他事情。現在，有
還有您可能聽說過或使用過的 其他約定，如 UML 和其他設計
技術。我並不是說那些不好，我 只是說這個對初學者來說非常容易
和專家。
我們實際上討論了一點，
但我們還沒有真正設計它或任何東西 ，因為現在我們正在談論實際繪圖
出數據庫。基數基本上是一 個表的一行之間的關係類型
和另一個表的行或一行。所以 我想到了我最好的例子是
信用卡數據庫。所以基本上就像一 家信用卡公司
具有
一張信用卡的桌子，然後是一張 為持卡人或點餐的人準備的桌子
信用卡並用它們買東西，基本上 他們削減了信用卡公司
客戶，我猜。所以我會把這些表格畫出來 ，只是為了讓你看到這個，我不會去
繪製它們或模糊或任何東西。但只是為了 讓您看到連接是如何工作的。所以我們
有一個持卡人。然後在這裡 我們拿到了卡。還有某種關係
在這兩個表之間。現在， 基數的唯一兩種可能性
是一個或多個。顯然，對雙方來說，你 可以有一個太多，一個，太多，
或者很多，太多了，這是僅有的三種 可能性。現在，另一件事要考慮
當涉及到多對多時，您 甚至可能會認為這是
不可能，因為你必須有一 個我們討論過的中間表
當我們談論設計 多對多關係時
關於這裡的多對多關係。這是 合乎邏輯的，我的意思是，
我們把它畫成這樣，我們 會說很多，
太多。
然後當我們在數據庫中實際實現 它時，我們必須有一個持卡人
卡片持有表，然後是卡片表 ，這將是如何繪製多對多關係。
所以希望這種方式是有意義的 。所以在現實中，當你真的
提取數據庫的最終產品，唯一 的可能性是一對多，或者
一對多，因為即使你有一個中間表 ，這也很好。一對多
關係，然後是一對多的關係。並且有某 種方法可以將它們繪製出來。
這就是我現在要畫的。所以 我想知道很多，這很簡單。
一方面，你所擁有的只是像這樣一條 直線的上下線，你所擁有的多方面
有了這個，我們現在正在做的這 件事被稱為烏鴉腳符號。因為
它看起來像烏鴉腳，我想這就是為什麼 他們稱之為我真的不知道。但
這是一個，這不是很多。所以當我們畫它的 時候，一個，很​​多，我們也可以有
當然是一對一。所以這是另一種可能性。一世
忘了說一對一了。
現在，在我們開始畫兩邊之前 ，我認為很容易想到一個
方面，就像考慮持卡人與卡的關係 ，我們會有一個
持卡人。
現在我們已經弄清楚了我們得到 的那一面，我們只考慮持卡人，
然後我們可以添加卡片，我們有很多張卡片 ，所以一個持卡人可以有很多張卡片。
這就是你如何設計表格之間的線 。像那樣。現在還有一個
我們需要討論的稱為模態的東西， 我們將在下一個視頻中討論。
但為此，我們只是要保持簡單， 只是在這裡繪製這些東西。但
您可能還會看到類似圓圈，例如，您可能 會在這裡看到一個圓圈。我們會談談
關於下一個視頻。所以現在你知道 如何繪製一對多的關係了。所以
這究竟是什麼意思？這意味 著一行可以與多行連接，這
桌子。它不一定是表格，而是表格 中的行。所以我們可以認為
對於特定持卡人，我們可以有一個 名為 jack，Id 為 2 的持卡人。和
我們可以在這裡有很多行卡片，我們 可以添加一個 ID 為
身份證六，
身份證八，
Id 12。你可以看到這個人有很多信用卡 。所以所有這些行都可以
連接到持卡人表中的單個 行。現在讓我們看看它
另一種方式。我們可以有多對一的關係 ，或者基本上是一對多的關係
方向。所以我們可以添加這個。所以 現在一張卡可以連接多人。
但是一張卡可以多人連接， 對不起，一張卡可以連接
給多人。但是一個持卡人只能 連接一張卡。所以這意味著
一個人不能擁有多於一張卡 。所以現在我們反過來想，
我們有一張卡。有了 ID 3，我們 有一張 ID 為 6 的卡沒有
數字是多少真的很重要。然後我們有 一個持卡人，我們剛剛得到了一個人
名為 jack，ID 為 3。然後我們收到了 賬單
身份證二，
好吧，我們可以將一張卡附加給 許多人。所以這張卡可以附加
對很多人來說，這意味著這些人共同擁有 一輛汽車，他們都是一張卡的所有者。
但是現在你必須意識到一 個持卡人不能連接到多個
牌。所以傑克不能擁有另一輛車，這 是行不通的。如果你想要那個
要解決這個問題，你必須有一個中間表 ，我們討論過並設計了它
多對多關係。而這個視頻不 是對人際關係的回顧，而是
更多如何繪製它們。所以你必須意識 到所有這些可能性之間的區別
一對多，一對多，只看 實際的應用方式，
這基本上是孩子是否是必需 的孩子，這種關係是必需的。
我們在談論列特性時也談到 了這一點。
不是沒有。
因此，可以這樣想，我們有一家信用卡 公司，我們為持卡人準備了一張桌子。
然後我們有一張卡片桌。很明顯， 持卡人，持卡人的身份證，
擁有該卡或從信用卡公司 購買該卡的人，他們是
將有一個 ID，這將是一個非空列 ，這意味著它必須有
一個值。這很明顯，因為 它將成為主鍵代理主鍵，
它必須具有價值。所以我們有這個 人，他的 ID 是七，我們有
另一個ID為12的傢伙，然後是368，依此類 推。那些是身份證抄送
卡片，
這將有一個列，這是一個 外鍵，引用持卡人，因為
這張卡是這段關係中的孩子 。所以持卡人有主鍵，你
坐在那裡，如果可以的話，卡 將有一個外鍵，它連接到這些。
所以這將是一個外鍵。意思是， 這些是擁有某些卡片的人。
所以我們有一張 ID 為 12 的卡，我們有 一張卡，一張 ID 為 48 的卡，我只是
補號碼在這裡，在一張有 98 的想法 的卡片中，我們有一張 ID 的卡片
112.好吧，他們各有一個主人，你 看這就是主人。這是一個外鍵，
它引用了主鍵。所以七， 這張卡將歸那個人所有，
七、這張卡要歸那個人所有 。七、這張卡要擁有
被那個人。所以這三張卡都 歸那個人所有 368，就這樣
歸他人所有。現在，如果我們 在這裡給出這個列，外鍵是
基本上是持卡人列，因為它是一 個孩子，如果我們給它列特徵，
不知道，要求每一行都有一個 所有者。這意味著我們不能
這裡有一張未激活的卡沒有所有者 ，或者我們不能擁有
那裡有一張當前未被持卡人 擁有的卡。因為你認為
如果您有信用卡，則有人擁有該信用卡 。但是當你第一次獲得信用時
卡之類的，或者如果你願意，如果 你擺脫信用卡之類的東西，它
可能是目前沒有所有者的信用卡 。那有意義嗎？所以
基本上只是一張沒有被積極使用的 信用卡，或者被禁用或其他東西
像那樣，沒有持卡人？好吧， 如果我們想要我們想要這個
數據庫能夠存儲沒有所有者的 卡片，我們不想要名義上的
特徵，因為那會阻止它。這就是 它的工作原理。因此，如果
我們把它去掉，然後我們可以在這裡添加 一張 ID 為 101 的卡片。
那個沒有卡。好吧，我知道我們已經 解釋了這一切，但現在讓我們談談
關於設計。讓我們把這簡單化 。注意說，說一輛車，嗯，
這顯然是我們要談論一 對多的關係，意思是
一個持卡人擁有多張卡 。我們也將談論一對一
關係，這意味著一個卡的所有者擁有 一張卡，而一張卡太多了。我們剛剛
需要一個中間表，同樣的概念 也適用。但我們不一定
必須經歷那個只是將其分解為 一對多，二對一對多的關係。
好的，讓我們試試這個。所以 我們在這裡有桌子。那將是
持卡人。在這裡，我們有放牌 的桌子。而且有關係
這兩者之間的差距確實很大，但無論如何 。所以讓我們從這裡開始。我們可以
說一個持卡人，因為這就是 我們要說的每個持卡人
時間。讓我把這個帶進來，這樣他們就能真正看到 。
一卡持有人
可以有一張卡。所以我們剛剛做 的是基數。我們上次談到了這個
視頻。現在讓我們再做一個同樣的 例子，你馬上就會明白為什麼。
讓我們再舉一個例子。最後，再舉一個 例子，這裡的空間不夠用了。所以
我們有基本的關係。現在我們可以再 添加一件事來說明它是否可以為空
或不可為空，基本上，孩子 。這是孩子。哪個是卡。是
問，外鍵列是否具有名義 特徵，就是這樣
我們有可能的關係，一對一， 一對多。現在，我們要做什麼
做的是我們能夠添加模態，我們 這樣做的方式是我們添加一點
圓，或一點點 bash，或者您可以 將其視為零或一，實際上
有道理。我們馬上就會明白為什麼，零 ，
或一個。
所以，在這裡，我們有持卡人，所有 這些例子都是一個持卡人。然後
在這裡，我們有卡。零表示 該列不具有非空特徵，
意味著它不接受任何值。所以這是說它可以 接受沒有價值。所以我們有一個
一種關係，這是最大的，持卡人 最多可以擁有一張卡，但它是
不需要。所以零張或一張卡片，一張或 一張，卡片，零，至少零張卡片，因為
您可以擁有最多或至少一張卡。所以 這意味著不是。
不是沒有。
現在，當我們設計這個時，我們通常從一張桌子 到另一張桌子談論。所以我們會有卡
持有人，然後卡。我為什麼要這麼說 ，基本上，因為如果我們有，如果
我們這里為零，這意味 著之間不一定會有關係
某排。因此，當我們談論行時 ，我們實際上可能不會繪製關係
在某些行之間。當我們繪製關係時 ，我們會逐桌交談，而那些關係，
解釋哪些行可以與不同的行有關係 。所以在這個例子中，讓我們
只關注最上面的，只是為了讓它更容易 ，
我們會在我們的數據庫應用程序中繪製它 ，我們會說我們有表格持卡人。
然後這與表卡有某種關係 。現在我們可以說一個
卡訂單可以與一張單張卡有零到一 的關係。所以我們有一張卡
ID為七的持有人。然後我們 有一張ID為68的身份證
持卡人七，所以這點回來，這是 可以接受的。我們也可以辦卡
我們有一張卡片 69。我們可以有一 個人 8，我們可以說哦，它沒有
一個所有者，那很好，我們可以有 另一張卡 70，它可以有所有者 8，即
點回到八。然後我們可以有另 一個可能是七的人，我們是
會有一張卡片，我們會有一張卡片 63，它的所有者為 87 並且點數
回到所有者 87. 這就是這些關係的 運作方式。現在，起初，這可以
有點混亂，所以只是練習。確保你 完全理解每一個是如何工作的。
回顧一下我們可以擁有的，我們可以擁有四 種可能性。
如果那裡的向下更有意義。一個持卡人 可以擁有零張或一張卡片，
一個持卡人可以擁有一張，只有一張卡 ，因為你可以擁有最少的一張，然後
最多一個，然後您有一個持卡人 零個或多個持卡人一個或多個。
這兩個是必需的，這意味著每個孩子 都必須有一個主人。或者每一個
卡必須有主人，每個孩子都必須 有父母。所以希望所有
很有道理。我只想介紹一個話題。所以 在接下來的三個左右的視頻中，
當我們回顧它時，它對你來說 並不是全新的，你會有點
對正在發生的事情的想法。所以我們 正在討論所謂的規範化。所以，歸一化
是一個過程，我們通過我們 的數據庫計劃，我們開始糾正
可能導致數據完整性問題的事情， 或者只是重複數據等，等等
你想說。標準表格基本上就 像您將要遵循的清單。
當您完成時，您將擁有一個非常 好的設計數據庫。有三個
主要形式。這些都是命名的，非常方便，我不得不 承認，
第一，正常形式。
第二，
正常形式。
猜猜第三個是什麼？你猜對了。 第三，
正常幀。
我開玩笑的，這是形式。不過那會很奇怪。好的 ，所以上帝，
首先，形成第二範式。第三 範式。
這是數據庫規範化的三個步驟 。現在，如果你真的，真的，
真的很想進入數據庫設計，你就像， 伙計，我喜歡一個人得到的東西
更多的？嗯，還有很多步驟，你可以 添加並使事情變得複雜，如果
你真的想要。但出於我們的實際目的 ，這些是你唯一要去的三個
真的，真的需要。我知道這裡 有一道強光，因為這些燈，
我知道，我只是在努力。所以 給我幾個視頻，我會努力工作
我的燈光有點。但是現在，首先 形成第二範式
第三範式。
為什麼我們有這些？嗯，這是因為 我們想要一種系統的方式來遵循
標準化或良好結構的數據庫。
好的，
關於規範化，你應該知道一些 事情，我們仍然必須
談論事物是原子的想法，我們 希望一切都是原子的，你也
必鬚根據其他數據來考慮數據 。所以如果你覺得像，讓我們
說一個主鍵，是的，608，只是 一個可以指代任何東西的數字
一個人，一個命令，一個事件，無論是 什麼，都只是主鍵。那也是
表中會有不同的列， 這些列有不同的屬性
這件事是。所以讓我們說它是一個 人。我們有一個名稱列。讓我們
說這個傢伙的名字是迦勒，多愚蠢的名字 ，對吧？
這取決於主鍵。所以我的意思 是，如果我們改變主要
關鍵，我們也要換人，對吧，假設 我們有六個或九個，好吧，
這將是一個完全不同的人，對 吧？因為他們是兩個獨立的
實體，
這是指一些
這邊的傢伙這個人指的是這裡的 某個人，兩個獨立的實體。
你也可以想，哦，順便說一下，那個過程 或者那個東西，這就是所謂的依賴。
所以接下來的三個視頻將討論 第一個範式，第二個範式。
以及第三範式。另一件主要 的事情是這些內容有點全面，
我想，你可以說。所以這意味著 一旦你有了第一個範式，現在你
可以繼續第二範式，但你 不能在這裡跳，你必須有
在你進入第二範式之前，它是 第一範式，第二範式也是一樣
範式轉化為第三範式。所以這 意味著如果你有一個數據庫
在第三範式中，它也是在第二範式 中，在第一範式中。所以
我知道我喜歡在垃圾中獲取所有這些技術 術語。所以如果這讓我感到害怕，
別擔心。這真的很簡單。伙計，把我 的頭髮從我臉上拿開。好的。但基本上，
它是一個步驟列表。要做的事情 清單。基本上，你可以做這一步
二，直到你做第一步。所以今年的第二 範式，那是第二步。不能這樣做
直到你這樣做。所以你必須經歷 這個過程，然後一旦你在第三
正常形式，一切順利。本視頻 將結束第一範式，即
是數據庫規範化的第一步，這個 規範形式處理的是原子數據
或原子性。好吧，讓我們開始吧 。我們先來看三個例子，其中有
問題。然後我將解釋一個解決 方案。如果我們先看看這個
例如，我們有一個用戶 ID、名字、姓 氏、電子郵件和地址，我有一些值
在這裡。但這些都不是很重要。在 這個例子中，你需要做的主要事情
注意是地址，因為如果你 考慮的地址實際上包含
街道地址、州、國家等。所以 這個列不是原子的，我們是
在一列中要求多項內容。這 就是這個例子中的問題，
解決這個問題的方法是將它分成多 列，你知道，一個狀態，
等等。這樣，我們作為一個人就 不會在一個列中包含一堆東西
價值。在這個例子中，你可以看到， 我們有一行包含用戶 ID、名字、姓氏、
和電子郵件。但是如果你仔細看，我們有 兩封電子郵件，這些電子郵件是一起輸入的
作為一種個人價值。所以你 可以在網站上想到或者問你
電子郵件，想像一下放入一封電子郵件，然後 將第二封電子郵件放入同一個盒子中
並點擊提交。好吧，它作為單個值 輸入到數據庫中，也許與
逗號或其他東西，但它仍然作為該用戶 的電子郵件輸入。所以兩個值
在一個內，這不是原子的，在這個例子 中，為電子郵件給出的實際值是
原子性，因為它們只是一封電子郵件，但 我們在數據庫中放入了兩個條目。所以
現在我們這裡有兩次，這裡有 兩次，這裡有兩次，主要的
鑰匙永遠不應該在那裡兩次。唯一 一次你可以在那裡看到主鍵
兩次是如果它是作為外鍵的 引用，因為可以放入外鍵
有多次。但是五個的主鍵 應該只在那裡一次。
所以我們有所有重複的數據。現在 如果這個 Caleb 咖哩去改名怎麼辦？
因為現在這個名字太蠢了。只是在開 玩笑。那是，那是我的名字。和
我真的很喜歡
名稱。但無論如何，
如果他改名了，並且更新了他的信息 ，如果只有這個更新了怎麼辦。
所以現在我們有相互矛盾的數據。看看這就 是數據完整性的問題，我們確實做到了
當然這不會發生。所以在這個例子中 ，兩列是問題所在。而這個例子，
行的值是問題所在。在 這個例子中，行的值是
問題。所以這些基本上都有相同的 問題。我們如何找出解決方案？
讓我們接管這裡，讓我們看看這裡 。正如您所看到的，沒有解決方案。
所以是的，伙計們，感謝觀看。我只是在開玩笑 ，讓我們，讓我們這樣做，最好的解決方案
對於這個問題是要有一個 用戶表。我要寫的專欄是
在這個用戶表中。所以我們會有 一個用戶 ID，然後我們將有一個
名稱。我們將有一個姓氏。如果 你想要那裡的地址，你可以
有街道地址，國家，所有其他 好東西，然後我們也要去
有一個電子郵件表。所以解決辦法 就是把問題欄打斷。你可以看到
在這個例子中，電子郵件是導致問題 的原因，我們之前擁有的地址，
這是可以修復的，如果它是列中的問題 ，我們可以將其分解為多個列。
所以我們不必為此製作新表。 但自從這一次以來，即使
列正確，是其中的值導致 了問題，我們需要
為此創建一個新表。所以這就是我們 有這個電子郵件表的原因。現在在
在這裡，我們將有一個電子郵件 ID。 然後我們將收到一封電子郵件，它是
將是實際的電子郵件地址，在這種 情況下將是這些。然後我們在
將有一個用戶 ID。現在這將 是一個外鍵。引用了這個
用戶ID，用戶表的主鍵。現在如果 我們想放兩封單獨的電子郵件，
我們可以在這個電子郵件表中有 行，讓我們展開電子郵件表
看看它可能是什麼樣子。電子郵件 表可能如下所示。
我們會有一封電子郵件
ID 只是為每封電子郵件 600 個 日期隨機生成的數字。然後
將成為實際地址的電子郵件
的電子郵件。所以我們可以讓這個 我試著讓它和手寫一樣糟糕。
完美，那麼誰擁有它的用戶 ID， 在這種情況下應該是 5，因為
五是用於該用戶的 ID，這將 是您的第一行，然後我們將
有另一行，它將是一封新電子郵件。所以 我們會有一個新的電子郵件 ID，它會有所不同
電子郵件，我們這次將使用 這個。我要寫出漂亮的字跡
你們愛。我們走了。然後用戶 ID 也將是 5。現在這個重複
價值還可以。這個，這裡重複一遍 。這沒關係，因為這是一個外鍵。
在這種情況下允許多封電子郵件。 這個郵箱id，這個不能重複，
因為每個號碼都應該是一個單獨 的電子郵件，因為這是主要的
電子郵件表的鍵。現在，當我們 回顧用戶表時，我們沒有任何
重複數據，因為我們只會有一個 用戶 ID，例如五個名字，Caleb，
還有姓氏，咖哩。並且無需 重複行。因為我們都有
我們需要的信息沒有任何問題。 如果我們更改名稱，我們只會
更新此保持相同的 ID 將此更改為我們 自己命名的任何名稱，或其他任何名稱
這個人給自己起了名字。好了， 各位，這是第一種正常格式。
現在，第二，正常形式處理， 處理所謂的部分依賴，那就是
當列僅依賴於主鍵的一部分 時。所以為了讓它依賴
只有一部分，你必須有一個複合鍵或 複合鍵。所以基本上，主要的
鍵必須是多列。因為如果 你只有一列作為主鍵，
一欄
可以部分依賴它的一半。這樣說是有道理 的。我不知道，也許不是。讓我們
假設我們只有一張隨機表供人們使用。所以 我們讓你知道，這個人。那麼讓我們
走吧，走吧。讓我們只使用個人 ID。我們有一些關於這個的屬性
人，我們有他們的名字，你知道，也許是 他們的電話，或者他們的 pH 值，也許
他們的電子郵件。在我們開始討論 之前，我們先說一下什麼是依賴
部分依賴。這些列取決於主鍵 。所以在這種情況下，這
是主鍵。這裡有一個依賴。你可以 考慮的另一種方式是如果
我們有另一個關於汽車的表，我們可以 有一個汽車 ID，它也是一個代理鍵。
現在這個人的名字，這裡沒有依賴 關係，可以看到這個名字是
僅取決於人 ID，而不取決於汽車。 所以這在這裡沒有任何意義。
另一件事是人員 ID 沒有不 相關的實體或不相關的屬性
關於汽車 ID 等
汽車顏色。
汽車顏色取決於汽車，而不 是人，這不會產生任何影響
感覺。這就是依賴。現在，什麼是 部分依賴。那麼讓我們看看什麼
部分依賴看起來像使用代理鍵 ，當你有很多
to many 關係，用一個中間表打散， 這才是正確的設計方式
多對多的關係。所以讓我們想想 書籍和作者的例子，因為
如果你想一想，一個作者可以 寫很多書，一本書可以由
許多作者。所以從概念上講，這是 一個多對多的關係，我們將存儲
在數據庫中，一側是一對多 關係，然後是一對多關係
另一方面。所以我們得到這個樣子
在餐桌上，
中間表，然後是表。所以在這裡 ，讓我們把作者的，所以這是
作者。然後我們這裡有書。所以 這是書桌。然後在兩者之間
我們有書籍作者或書籍作者 的中間中間表。
所以這是設計它的正確方法。 現在說到屬性，所有的屬性
關於作者要去這裡，關於 書的所有屬性都去
轉到這裡，以及與應用 程序、書籍和
作者的已連接，這些將放在此表中。 所以首先，讓我們給他們一些代理
密鑰會給我們一個作者 ID，
我們會給這個人一個書號。而 這個將有作者的兩個外鍵
ID 和圖書 ID。這些外鍵一起 將成為該表的鍵。
這就是你設置它的方式。現在關於 作者的事情就到這裡了。
所以你知道，他們的名字，也許是他們 的姓氏，也許是他們的出生日期。任何
你想介紹作者，這本書會有關於 ，你知道的，ISDN，
也就是說，ISDN是書後的代碼 ，你可以查一下，它試圖唯一
定義那本書。所以確切的添加和其他 所有東西，所以你可以使用它
來定義它。你知道，我們會 製作可能有頁碼或出版商，
發布者可以是另一個發布者表 的主鍵或外鍵，或者您可以
把它放在那個桌子上。如果，如果這就 是它的工作方式，但可能會去另一個
桌子。但我們要跑題了。無論如何 ，它看起來像這樣。所以作者信息
這邊走，書信息這邊走。 這是設計這個的正確方法
桌子。因為當涉及到依賴 時，作者的名字只需要做
與作者。它必須做
所有關於作者。
現在讓我們看看與這本書和作者 都有關的事情，我們可以有
諸如作者位置之類的東西。
那是什麼，
寫書的時候，經常有人 喜歡第一作者的位置，
這就是大名。然後你有第二 個，第三個，第四個，
人們經常為了獲得第一作者 而競爭，這與這本書和
作者。因為如果你考慮一下 如果 我們把作者的位置放在這裡
取決於我們在談論什麼書，我們不 能只把作者放在第一位，而且
說他是他將要寫的每一本書的 第一個，這是沒有意義的。
我們不能只說作者在書上的位置 ，因為它沒有說明是哪位作者
我們在談論哪個作者，這沒有 意義。這就是為什麼我們必須
把它放在這個表裡，因為它與這本 書和作者有關。所以我們可以
假設圖書 ID 為 17。作者 ID 為 22。 作者位置為 1。所以那會說
ID 為 17 的書。而 ID 為 22 的作者在第二個或
在那本書上的第一個位置。這有點 複雜，但我們將它與連接結合起來
使實際查看數據更有意義 。但無論如何，這取決於
在書和作者 ID 上，這就是它在這張 表中的原因，這是正確的。現在一個
不正確的東西會像 ISDN。因為 ISDN 與
僅預訂。所以當你看到這個 時，它依賴於它依賴於
書 ID，但它不依賴於作者 ID。這是一個例子
部分依賴。現在解決這個問題的正確 方法，在這種情況下只是採取
isbm 並把它放在書桌上，我們顯然 已經這樣做了，因為我把那個
當我們開始時首先在那裡。但是如果 我們沒有這張桌子而你正在工作
用一張桌子說，也許好吧 ，那麼正確的做法是拿書
ID iasb 並將它們拖到另一個表 ，然後使用外鍵連接到該表
桌子，
我們已經
它的結構是否正確，因為我們了解 如何設計多對多關係，
這就是為什麼關係有助於理解如果 你沒有正確設置它會發生什麼，
您必須獲取部分依賴項並將 其移動到另一個表並引用
它帶有用於第二範式的外鍵 ，您希望首先處於第一範式
形式。其次，通過移動列來刪除所有部分 依賴項，就像我們在這裡所做的那樣
放在正確的表中。現在你可以 考慮的另一件事是如果你
有一個只有一列的主鍵的 表，你已經在第二個
正常形式，就像想像它一樣 。生日怎麼可能只依賴
主鍵的一部分是作者 ID 因為 只有一個你不能你不能
僅依賴於單個列的一部分。 為了到達那裡，你有熱形式
先做第一範式，再做第二範式 。所以它有點像梯子，
你不能只是開始第三範式， 你必須在那里工作。所以這
一種處理所謂的傳遞依賴 ，即當列依賴時
在依賴於主鍵的列上。所以 我知道這有點令人困惑。
所以讓我把它畫在桌子上，更有意義 。所以在這裡我們有一個評論
桌子。正如你所看到的，我在開玩笑，你看不 出它只是一個正方形。所以我們可以說，審查。
所以，這可能是在一個網站上，也可能 是，你知道，像一個購物網站
你評論一個產品，或者它可以是對視頻 或任何東西的評論，它可能是
評論一本書，
最有可能的是，它會在一個購物網站 上，你在那裡買東西，無論是一本書
或任何東西，或汽車或任何東西，都 無所謂。但在這裡，你會有一些東西
就像一個評論 ID，顯然， 這將是主鍵，你也可能有
該評論是什麼，就像以文本形式 。所以喜歡評論。所以你會有實際的
審查。然後你可能會有一個星級 或多個星級。所以你可以
有一個星級，所以也許從一到五， 一個是最差的五個是很棒的。和
然後因為也許真的有點像好吧，你知道 ，然後我們可能會有一些東西
有一顆星星
星星，意思。
所以這有點像，對吧。最後 ，我們可能有類似的東西
無論是用戶
或者海報，我只是把用戶放在那裡， 因為很可能，你會有某種用戶帳戶
在這個網站上，您可以發表評論。 所以這很可能是一個用戶 ID。它會
是用戶表的外鍵。但我們現在 不會把它放在這裡。因為
這與實際點無關。所以外鍵主鍵 。現在，讓我們看看右邊
我們有一個問題。這就是 所謂的傳遞依賴，因為星
意義取決於星星。還有一種你可以 嘗試弄清楚它是否取決於的方法
就這樣，好吧，好吧，如果我們改變星星 ，星星的含義會改變嗎？出色地，
如果我們拿一顆星星，把它從四顆星 變成三顆星，可能會繼續下去，它可能
從非常好到非常平均。所以星星 的含義會發生變化。所以
那是一種依賴。但是，星級實際上 取決於實際的評論 ID。因為
如果您更改實際評論，則該星級 可以更改。所以這被稱為傳遞
依賴性，這是不好的。現在你還 可以有一個多重傳遞依賴，它
我什至不知道那些叫什麼。但那 將是我稱呼他們的地方取決於
一列，這取決於一列，這 取決於一列，這取決於
實際的主鍵，它可以永遠持續 下去，只要你想。但你不想
因為它不好，哪個槓桿要移除 。所以要刪除它，你需要
導致問題的列，將它們移到 單獨的表中，然後創建
一個外鍵並替換它們引用實際的其他 列。所以讓我們這樣做。
因此，由於這裡的這些列是導致主要 問題的列，因此我們採用它們，
我們把他們放在他們自己的桌子上，我們 有一張星星桌子，在星星桌子裡，我們要去
有一顆我製造的星星。然後我們將 得到真正的恆星，無論是 12345，
或您使用的任何類型的評級系統。 然後我們將擁有星星的含義。
然後在這裡，我們將替換這些 列，讓我把它做得更漂亮一點。
我只是讓它變得更糟五倍。但是我們要 用一個明星 ID 來代替它，也就是
將在此處引用此表。所以現在 我們沒有那個問題，因為
這裡只有一欄是明星ID，我們 沒有明星的意思，這是真的
導致問題的列。現在在這裡，如果 我們抽出這張桌子，我們就可以，
我們想讓你知道，我們可以有一個 三的星號。那顆星星可能是三顆
星級評定。這可能意味著它可能意味 著平均。現在，我們很可能只有
此表中有五個單獨的行。所以它 有點像參考表。所以在這裡，
我們可以擁有 12345、01234 或 56789 的商店 ID，這並不重要
ID 是，因為 ID 只是數據庫使用 的一個數字，沒有實際價值。
所以我們在這裡有五行，然後我們 將在評論表中引用它們。
所以我們可以有，好吧，這太醜 了，讓我解釋一下，我們可以有
一條評論，星級 ID 為 5， 可能與某個評分相關
從這個評分錶。這就是第三範式 的主要思想，就是把那些
傳遞依賴，將它們移動到一個 新表，創建一個外鍵來引用它
桌子。因此，在視圖中，第一範式 使一切成為原子的第二範式
正在刪除任何部分依賴項。 然後第三範式是刪除任何傳遞
依賴關係。
這個視頻，我們將討論索引 ，最好的思考方式是採取
一本書，在後面看，這裡經常有索引 ，裡面基本上有一個巨大的列表
的話題。它說明了哪些頁面。所以 你會說，哦，哇，看起來很有趣
查詢，請轉到第 2078 頁。
哇，
就在那裡，我找到的太快了 ，我得翻遍整本書才能找到
它。這是一個索引的例子。它基本上 是某些數據點是另一個的列表
一種索引，你可以想到電話簿 ，你去電話簿，然後搜索
電話簿，你找到某人的名字，G， 我們去找奶奶，它會有電話
號碼就在那裡。這是另一種類型 的索引，它是將數據按
您可以輕鬆找到它並且數據就 在那裡，而不是後面的索引，
或者它是指向它所在位置的數據列表 。
唯一的那個
我們首先討論的，被稱為非聚集 索引。這意味著數據是
實際上不是索引在哪裡，索引是 一個單獨的東西。它基本上只是
對數據進行排序。它基本上是一個告訴 您如何獲取數據的要點。所以
它在書中的工作方式是你找到 主題，它會告訴你去哪裡365，
例如，轉到第 365 頁。這是一個 非聚集索引。聚集索引就像
電話簿，它實際上以易於使用 的方式重新組織了實際數據
非聚類，指向數據聚類組織實際 數據。所以我們可以有
多個非聚集索引。那是因為非 聚集索引基本上只是一個
指向數據的引用列表。所以我們 可以用不同的方式組織它。
但是對於聚集索引，我們只能擁有 其中之一。那是因為它實際上
以這種方式組織數據。想想電話簿 ，它是按 a 到 z 組織的，或者，
你經過那裡，你會找到它。那是 一個聚集索引，它組織數據。
那麼，如果我想通過電話號碼 輸入數據呢，那麼最小的電話
像 0000001 這樣的號碼，在開始時這 將是一種糟糕的電話簿組織方式，
然後最後是 99999989，這是設計電話簿的 一種糟糕方式，就像我剛才說的，
但這是聚集索引的另一個例子 。那是因為它實際上重組了
數據。這就是為什麼您只能擁有其中 一個的原因，因為無法列出電話簿
A到Z，以及電話號碼的大小， 明白我的意思。很矛盾，
你可以同時擁有，你只能擁有， 好吧，你只能擁有，好吧，
這是按姓名排序的，或者哦，這是按電話號碼 排序的。你不能兩者兼得。現在，
您可以將電話號碼大小或其他任何內容設置 為非聚集索引，它將位於何處
像這樣，在後面有實際的電話 號碼，它會指向它的位置
位於。所以在索引的開頭 ，它會像，好吧，電話號碼
0000000001 位於第 743 頁。帶有 0000000002 的電話號碼位於第 242 頁。您
看到實際數據沒有組織。通過 電話號碼，但您可以使用
以這種方式對其進行排序的非聚集 索引，並引用了實際數據
它的位置。現在，你們可能已經厭倦 了我漫無邊際地談論這件事。
所以讓我解釋一下這在數據庫中是如何 有意義的。嗯，當我們工作時，我們
使用數據庫時，我們通常會為 某些事情使用某個列。然後
列將被頻繁使用。我們希望它像 超級快一樣。所以我們想要
數據庫以了解如何使用它的最佳方式 。所以我們創建一個索引，數據庫理解
索引這樣，當你告訴它做某事 時，它可以做得更快。相當
而不是必須遍歷所有數據 ，這稱為表掃描，當您
使用可能需要永遠花費數百萬行的 數據庫。如果你有一個索引，
它將使用索引查找，它基本上知道 從哪裡開始搜索該數據。
這很棒，因為它使我們的查詢速度 更快，並節省了大量資源。
但是，它也有缺點，因為當 您創建索引時，不僅實際
表必須在更新時更新，但 您也必須更新索引。思考
就像一本書，當你在這本書中添加一些 東西，或者你改變了裡面的一些東西
這本書，不僅本書開頭的實際書本 內容髮生了變化，而且
當你翻到後面時，索引也必須 更新。否則，所有這個索引
信息將過時且無用。所以 這是索引的一個缺點是
當您更新信息時，在數據庫查詢 中可能需要更長的時間，
我們可能會說諸如選擇名字、 姓氏和電話號碼之類的內容
用戶 ID 為 72 的用戶的電子 郵件。例如，我有點說
用英語，但是當您實際使用數據庫 時，它可能更像是 select
名字、姓氏、電子郵件、電話號碼 ，其中用戶 ID 等於 72。那將是
數據庫查詢示例。現在 where 子 句正在使用主鍵。所以基本上，
數據庫將遍歷表，找到用戶 ID 為 72 的人，然後
然後顯示他們的名字、姓氏、電話 號碼和電子郵件。嗯，那是哪裡
使用具有索引的列，主鍵 通常是將要擁有的
聚集索引。這就是它實際對數據 進行排序的方式。所以現在不
必須遍歷整個整個整個表 才能找到具有該 ID 的人
共 72 個。因為想像一下，如果 它只是隨機數據，沒有組織，
你有 20 億行，對吧？並且數據庫 必須經過並找到一個人
用戶 ID 為 72 的行。轉到第一個，不 ，不是 72。第二個，不，不是 72。
那裡，不，不是 72。繼續前進 ，非非終於找到了那個人
72 的用戶 ID。基本上，這將需要 聚集索引，它很清楚，72
將在數據庫的這一部分，它 出現在 60 和 80 之後。因為
這就是它的排序方式。所以它會 像，繁榮，完成了。索引就是這樣
種工作。所以聚集索引會 更快更好。但你只能
有一個，這通常是主鍵。 但它並不總是必須依賴
在數據庫上，以及您對數據庫 的目標是什麼，非聚集索引，
就像索引和書背一樣，這些 還是不錯的。他們被推薦，
如果你正在做你喜歡的事情，名字 就等於約翰。現在，它有
所有約翰的列表以及他們在數據庫 中的位置都在桌子上，
我想，這也是一件好事。但是你 不想在你正在做的事情上建立索引
不會使用很多，因為你只 需要更新另一件事。其他
你不經常想做的 where 子句， 比如 where 名字是 Caleb，
沒有你正在搜索的那一列，作為 一個索引列，因為它可能需要
永遠。使用索引的另一個原因 是提高連接速度。所以方式
連接的工作原理是從一張表和另一 張表中獲取數據並將其組合在一起
通過主鍵和外鍵連接。所以想想 一個用戶，用戶和評論。所以
用戶發表評論。所以你會有一個 用戶表。你會有一個評論表。
讓我們在這裡畫一朵玫瑰。
所以我們有了這個人，我只是要畫畫。這 是因為它更有趣。所以我們有三個
這裡的人，我們有四個關於網站或 評論的評論，或者實際上並沒有
事情。嗯，這一條評論是一個 人發的，一個人可以發多條
評論，這是一對多的關係。那麼 ，當我們想把這個輸出到哪裡時
我們可以查看數據，我們想使用連接 。所以它不是跨多個表。因為
如果你在想，這條評論是由用戶 ID 為 72 的用戶發布的，
你不會知道誰是你的 頭頂，因為那是一個
外鍵連接。因此，您想用 實際名稱替換 72
那個人或用戶名。那是加入。而這 一切都是在創建數據庫之後完成的。
這一切都是為了查詢端。所以基本上， 這就是我們數據庫中定義的內容。和
我們希望通過連接輸出一個看起來 更漂亮、更易於閱讀的新表。
當我們這樣做時，我們將做一些事情 ，說明這個調用的用戶 ID，用戶
該表的ID，與該表中的用戶ID 相同。所以如果使用 if 註釋
用戶 ID 為 72，我們知道它是由用戶 ID 為 72 的用戶完成的。那就是
我們討論過的外鍵連接就像 一些輪胎系列，所以我
不打算再解釋了。但現在， 在這張桌子上，它會說，
Caleb 咖哩，然後哦，發表評論， 你知道，加入。嗯，這也是用
在某些情況下，where 子句對於 不同數據庫的術語可能略有不同。
但基本上，您連接的那個列， 在這種情況下將是主要的
鍵需要被索引以使其更快。所以 每當你加入某個專欄時，
這兩個表，你加入的列應該被 索引。你也可以擁有一些東西
這被稱為複合索引，它是一個索引 ，它是兩個或多個列上的索引。
所以想像一個名字，一個姓氏 ，或姓氏，名字。現在，事情
關於這些是當您使用索引時， 假設您選擇名字等於的位置
這個和姓氏等於你必須同時做 它們，否則它不會使用那個
指數。現在，有例外，想想 MySQL，實際上，如果你訂購
他們以某種方式，像這樣，你 在姓氏上加一個索引，然後也
名字，你可以，你可以為姓 氏和名字做一個 where 子句。
所以找到每個人都有姓氏，咖哩 和名字，Caleb 真的會
快速地。但是這種設置方式，你也可以 做最左邊的一個。這樣你就可以
比如說，找到姓氏為 Curry 的人，這樣 就行了。但在這種情況下，你
不能用名字來做，因為它 不在左邊，就是這樣
MySQL 已設置。所以不同的數據庫系統 可能有不同的設置，你在哪裡
可以單獨搜索它們，也可以。但 最有可能的是，當您製作複合材料時
索引，您應該期望始終單獨使用 該索引，除非您已設置它
在那裡你可以創建一個非常棒的索引， 可以優化以執行多種不同的操作
如果我要在最後一個位置進行 大量查詢，您需要執行的查詢
name 作為 where，然後我將進行 大量查詢，我將把姓氏和
這將是設置它的好方法的 名字。因為我在做一個
姓氏的索引索引，也可以僅 用於姓氏的名字。是的，
這只是對索引的基本介紹。 是的，我不會給你很多
語法實際上製作它們，因為像，你 現在應該知道，這是一個數據庫
設計課程，我們只是想學習如何在 我們的表上設計我們的索引，所以
我們的數據庫運行良好。所以這就是你可能 需要學習更多的東西，一旦你真的
編程數據庫，因為您可以測試 實際索引的速度以查看此
速度優化，使數據庫盡可能 快。你真的不能那樣做。
如果你只是在設計一個數據庫，那麼 在設計索引時你只能走這麼遠
數據庫，但你可以走得很遠，因為我的 意思是，顯然，你可能會使用
where 子句和連接的主鍵。 所以這很好做 Avid clustered
索引上。什麼是數據類型，是當 您創建一列時，該列中的每個值
列必須是某種數據類型。所以 你需要在創建時告訴那個列
數據庫，它是什麼數據類型。 另外，當你設計時，你通常把
那裡的數據類型也是如此，這樣 ，您就可以了解數據庫的運行情況
去工作。所以數據類型主要 分為三類。和命名約定，
或這些數據類型的名稱從一個 數據庫管理系統到另一個數據庫
管理系統可能略有不同。但總的 來說，它們被組織成三個
主要種類。那是日期、數字和字符串 。所以基本上，我們將要結束
這些稍微深入一點，我們 不會深入研究，因為對
現在你只需要了解這些是什麼 。只需了解您的數據庫
應用程序可能與其他應用程序略 有不同。讓我們從下而上開始
為了使字符串變得有趣，字符串可以是 任何字符或類似字母。所以基本上，
你把這些放在引號內。所以
嘿，
這是一個字符串的例子。甚至引號內 的數字也可以用作字符串，在
在這種情況下，這將用作字符串， 基本上，
他們三個
除非轉換為數字，否則沒有任何 數學值。在字符串中，
你經常有一些子類別，你會有一些 東西，要么是 char 要么是 var char，
這意味著字符或可變字符 。這意味著，就像
字符列表，字符或圖表，通常 是設置長度的東西，所以
像電話號碼，或郵政編碼，一些不會改變 的東西，大小明智。所以基本上，
用一個字符，你會得到類似的東西， 尖銳的八，以及其中的每一個值
char 列將存儲為單個字符 。現在就算你不放八
字符，假設你放了六個，那麼裡面 就會有兩個空白字符。
所以它們都存儲為八個。變種另一 方面，char 是可變的，基本上，
這意味著大小可以改變，您可以 擁有從零到八的任何位置。有
也通常是文本的子類別或子數據 類型，通常用於較大的事物
例如評論、消息等。這是字符串 數據類型的基本摘要。
至於數字數據類型，這些是數字。這 和這個不一樣。這是一個字符串
其中有一個數字，其使用方式與 數字數據類型不同。數字數據
類型沒有引號。這只是您正在使用 的數字。就像字符串一樣，有
通常是小數的一些子類別 ，然後浮點或雙小數在
基數 10。現在，我知道我們還沒有 真正了解基數。我只是想約會
備份這裡。所以我們還沒有到那裡。
但我覺得
知道這一點非常重要，事實上，我已經 製作了很多關於二進制、十六進制的視頻
和東西，基本上是使用不同基數的不同 編號系統。那麼，十進制使用
基數 10 是我們用來計數的數字系統 ，你知道，0123456789，然後它
回到 10 1112 1314。它的基數是 10。這 就是十進制中死亡的含義。嗯，有
也是二進制。所以我們有十進制，然後我們 有二進制十進制、基數為 10、二進制和
基地二。所以二進制，我們只有零和 一的選項。現在，你真的不需要
了解如何用二進制計算。但是 如果你想知道我確實有視頻
為此，但要知道我們何時使用十進制 正在使用基數為 10 的系統。
當我們使用浮點數時。我們正在使用 以不同方式存儲的二進製文件。
它以二進制形式存儲，然後您可以將 其顯示為數學或其他數字的十進制。
那麼真正的區別是什麼？你使用 十進制還是使用浮點數？它
只是有點真的取決於。小數通常 在數學上更準確一點。
有一些問題可以用十進制來解決 ，但你只需要研究這些。但
基本上，這個有一些錯誤二 進制它有某些數學問題
方程或數字。例如，
當我們想要存儲
1/4，它是這樣存儲的，我們有 0.01 這 種工作方式是我們有任何東西
在將數字除以的點之後，基本上，一分為二 ，所以我們會有一半，但我們沒有
有，所以我們有一半一半
1/4
有點道理。因此，位置值將 是，就在此處，我們將有
一半，這個位置值為 1/4。然後之後 的任何內容都是 1/8。還有什麼
之後是 116。所以現在我們就 在那裡，我們需要一半，
將它乘以零，得到零，因為那裡 沒有任何東西。我們取 1/4，
乘以 1，因為我們有它，我們會得到 1400。 我們把它加起來，我們得到 1/4。
基本的加法和乘法以了解其工作原理 。但是當我們有一個這樣的數字時
作為
第一點，
和十進制，基本上不可能以二 進制存儲，僅僅因為我們正在工作
在基二系統中。我們不能很容易 地得出第一點。因為 1/8，那不會
相當簡單，你必須基本上 有一堆不同分數的組合
盡可能接近第一點，但您永遠 無法真正完美地到達那裡。
所以這是浮點數的問題。所以 如果你需要尋找類似的東西
那，如果它需要準確性， 你必須將它存儲為小數，
它以不同的方式存儲。對不起 ，如果這個數字讓你不知所措
東西。如果是這樣，甚至不用擔心 。那有點太快了。你需要它
較慢，請查看我對二進制視頻的介紹 。這是一個超長的視頻在哪裡
我基本上是一步一步解釋的。這樣你 就明白了。然後我還有其他幾個
視頻加減法。還有分數。在二進制 中，您還將有一個整數類型，
它只會存儲後面沒有任何小數 的數字。所以只有整數
像 512 28，負 52，諸如此類的數字 ，我們也要擔心它們是否是
未簽名或簽名。如果它們是無符號數， 則意味著它們不能為負數。如果
他們有簽名，這意味著它可以是正的 或負的。可能想知道為什麼會
你曾經這樣做過嗎？好吧，如果你正在 處理一些不會產生負面影響的事情，那麼，
那麼你就不需要那麼消極了。當你 有一個簽名號碼並且它可以是
正或負，潛在值的範圍保持 不變。但既然你包括
負數，最大值不同 。如果你有一個
範圍從 0 到 1000。但是你包括 負數，現在你有負 500
到 500。這將通過數據類型來 說明。所以你可能會說，
double，無符號，可以作為數字使用。這 對於數字來說就足夠了。我不想
再談這個。讓我們談談日期 ，日期，嗯，有幾個不同的
你需要知道的關於日期的事情，有日期 ，然後有時間，有日期，時間，
然後是時間戳。所以讓我們先談談 日期時間，因為它是有道理的
最好的。它基本上只存儲一個日期，比如 你知道的，哦，二月的兩個，然後
你可能有一個冒號 你可能有 22 表示 日期和 22 日，然後冒號可能是 1998
1998 年。那一年，那麼你有時間 ，可以是任何可能的時間
12 3022，這將是秒，您甚至 可能會有一些毫秒
或微秒。這就是您存儲日期時間 的方式。它的實際外觀可能
因數據庫管理系統而異 。有些可能有冒號
在數字之間，有些可能有連字符或 逗號或其他任何東西，實際上並沒有
事情。我不需要考慮那個 。現在，我只想讓你想想
日期是一個日期。而此時此刻
一時間，
日期，時間是日期和時間 的組合。這幾乎是日期。
唯一的另一件事是時間戳。 時間戳是一個準確的時刻
記錄來確定某事的創建或完成時間。 它可以以毫秒為單位，也可以
在月份，日期，然後是第二個 小時，然後是秒，然後是毫秒。
或者它可以只是幾秒鐘，依此類推。它因 人而異。但不管怎樣，事情就這樣過去了
當某事完成時給你一個數字。 這通常是為了像當一個帳戶
被創建。當交易完成或發生 某些事情時，當您
更新一列，該時間戳通常會 更新。這將讓它繼續喜歡
當該行被輸入到數據庫中時。因此，如果 您輸入一個新行，並且其中一個
列是一個時間戳，它會在您提交 後立即為您提供一個值，並且
它被放入數據庫，並創建時間 戳。它說，好的，輸入了這一行
此時。這是時間戳的主要內容。所以基本上 ，我們得到了三種類型的數據類型，
我們得到了字符串，
雪，數字，然後是日期。所有這些 分類都有不同的數據類型
每一個人。但總的來說，只要你 知道什麼是什麼的要點，你就會
沒事，你不用太擔心。因為 當你得到一個真正的編程
一個數據庫，您將更詳細地了解要使用 的數據類型。所以這個視頻，我們會
正在談論連接。事實上，下一 組視頻將是關於加入的。
所以會很多。現在，連接是一個 複雜的主題，它們可能會令人困惑
和棘手的，非常句法，我不知道 這是不是一個詞。但基本上，
從關係數據庫管理到另一個 關係數據庫管理的語法
系統可能會令人困惑和復雜。但不 是潛入並只是學習所有這些
東西，我們將討論連接 類型的概念。和
我知道你可能還不知道什麼是 連接。所以你可能在想，我不
知道你在說什麼。嗯，這就是 我們今天要說的。所以謝謝
加入我，讓我們開始吧。所以加入 是當你採用結構化的東西時
以一種令人困惑的、非用戶友好的方式在數據庫 中，並且您以用戶友好的方式呈現它
辦法。現在這樣做了，我們 可以將數據存儲在數據庫中
最好的結構化，我們保護數據完整性 的地方，它是規範化和分離的
跨具有適當關係和數據類型以及 鍵和索引以及所有內容的表。
但是當我們真的想要展示這些數據 時，例如，在網頁上，或者在程序中，
或分析人員進行分析並對我們的 數據進行計算，或者只是
在數據庫完成所有分析工作 後查看這些計算。出色地，
最終結果通常在某種程度上，它 看起來是有組織和結構化的，
這對我們來說很有意義。這就是加入的目的 。所以它需要一團糟，然後把它拿出來
以一種看起來很漂亮的方式。這 可以在多個表上完成。例如，
我們要在這裡放一張桌子
這裡有一張桌子，
和這裡的一張桌子。這些都可能是 三個不同的表，它們之間有關係
表，我們都知道什麼樣的表的細節 ，但基本上，連接正在進行
採取這一切。
它會向我們展示一個生成的 表格，它更漂亮。更美了，
並且更有條理。這更有意義。
現在，這樣做的方式是使用外鍵主鍵 連接。所以當我們有
這些表格之間的這些關係， 我在這裡畫了這些箭頭，代表
引用主鍵的外鍵連接 。所以這些表之一是
父母和其中之一是孩子，我們想要 最終結果並將它們組合在一起
成一。現在，當您執行此操作時， 這些連接的列將被編入索引
使其更快。現在，當您連接表 時，通常會替換事物的名稱
具有更多用戶友好的名稱。例如，我們 可以讓你知道，假設我們有一個
在一個網站上發表評論。它說，哇，
然後
然後這是由 Caleb 發布的。好吧，你可以 看到，如果你在這裡有一個用戶名，
它實際上可能是評論表中的用戶 ID。例如，我們可以說，這齣現
評論表。這是用戶表。並且 有來自用戶 ID 的外鍵
引用用戶表中的用戶 ID。好吧， 當我們在數據庫中展示這些數據時，
我們希望用實際用戶名替換 該用戶 ID。所以而不是擁有
你知道我們可以把它放到像用戶 ID 4582 那樣的地方。然後你就像，哦，
我真的不知道那是什麼意思。好 吧，既然這些都在評論表裡，
現在我們將從用戶表中獲取 信息，並將該用戶名改為
的用戶 ID。這就是連接在概念上的工作方式。 這是另一件重要的事情。這一切，
從概念上思考，這些視頻 將幫助您理解這些概念
不同類型的連接。在整個過程中， 我將給你一些例子來說明如何
您可能會在 SQL 中輸入它 ，但我不會詳細介紹。
那是因為連接在不同的數據庫 管理系統和數據庫中是不同的
管理系統。所以你只需要知道連接 是如何工作的，以及預期的結果。
然後當你開始使用 MySQL、SQL Server、Oracle 數據庫或其他任何東西時
否則，那麼您只需弄清楚如何進行 它們的連接，您就已經知道了
結果將是因為您了解關節。 然後你只需輸入它。
繁榮，你必須加入那裡。現在 還有一件事要知道很重要，
所有這些都是數據操作。我們 之前討論的大部分內容是
數據定義。所以這基本上是在 DDL 中 。但現在我們要繼續 DML。所以DDL
數據定義語言，和數據操作語言 ，這是SQL的兩部分，我們都
我們都談到了這個和舊的視頻，但 我們現在走得更遠了。那麼你
伙計們可能已經忘記了這一點。但這很 重要。因為現在我們已經有了定義，
數據庫的結構，數據庫可能 已經完全設計和結構化
與列和行。但是現在，我們正在 操縱這些數據以某種方式呈現。
所以通過連接，你實際上並沒有 改變數據庫的結構，你是在改變
該數據庫的介紹，這是非常 重要的知道。你可能是
想知道，為什麼我需要知道這一點，因為 如果我是數據庫設計師，或者其他什麼，
真的，我需要做的就是設計數據庫 的結構，然後是數據庫管理員
或者軟件工程師，或者任何可以進入 那裡並使用我的數據庫的人
設計和創造。他們可以做所有 的數據操作來適應他們的應用程序，
正確的？嗯，也許，但不太可能 。那是因為連接也很重要
了解。因為當你設計你的數據庫 時，你需要在一個用戶中考慮它
友好的方式。然後將其標準化， 使其混亂，然後將其呈現給用戶
友好的方式。這有點令人困惑，因為 你一開始就說你真的很糟糕
在數據庫設計方面。你正在構建一 個表，你把它放在牠喜歡的地方
評論評論表。在其中，您有 一個用戶名。然後你有評論。
然後也許是博客文章或視頻，無論如何 ，這並不重要。你可以有一些
身份證在那裡。基本上，你不知道 自己在做什麼。你把用戶名，什麼
是 Caleb See？
評論蹩腳。
Caleb See 還有一個？涼爽的。迦勒 送行。當你看到這個，並且
你把它拿給你奶奶看，她明白。 她就像，好吧，她可能不明白
它，但如果你解釋它，她就會明白，她
可能。迦勒
貼了評論區。 Caleb c 也發表了很 酷的評論。 Caleb 也發表了評論
高檔。他還發表了評論，太棒了 。但這不是最好的方法，因為
我們了解了數據完整性，還了解了 重複數據，因為現在我們有了這個
這里三遍。所以相反，我們使用用戶 ID 去掉 Caleb C。然後我們去掉
的用戶名。
我們有一個用戶 ID。
然後在這裡我們有用戶 ID 6。讓我們 不要使用那個數字 777。然後結束
這裡我們有一個包含用戶 ID 列的用戶表 ，其中包含我們所有的用戶 ID
每個人。所以我們從這個友好 的設計開始。但實際上，
它不起作用，因為它沒有標準化，有 重複的數據。但它看起來很漂亮。
一旦我們有了它，那麼我們就可以將 其分解並標準化。這樣，我們有多個
表。所以我們有這張桌子。然後 我們有這張桌子。但這不是
我們唯一要做的事情。我們接下來要 做的就是你必須拿起那些碎片
拼圖，然後將它們重新組合在一起 以獲得最終結果。所以我們基本上
想要通過使用我們規範化數據庫 的連接來複製我們這裡的原始表，
並重新創建它。所以我們 要做的是獲取用戶 ID 列，
我們將獲取用戶 ID，你們看到一切 都很好，這就是一切。這
這可能也有一個用戶名列，所以我 在這裡用完了空間，但是用戶名。
而那個用戶名，用戶 ID 7 將連接到 Caleb See，
使用連接，
我們將通過基本上使用這個 指向的外鍵來連接這兩個表
到七並找到與該用戶 ID 相關聯的 用戶名。我們的加入會看起來
像這樣。
用戶名，
評論。表的名字可以是什麼意思 ，你想要什麼，它都可以生成
桌子。或者它甚至不需要名字，如果 你只是把它放在網站或其他東西上。
然後在用戶名列下，將是 Caleb See，然後是 Caleb See，
然後迦勒看到。
然後在評論下，你會變得蹩腳 、酷炫和真棒。但這不是
就像這樣開始，我們從這個表中得到 了用戶名。我們收到了來自
這個表。所以你不僅要設計 數據庫的結構，還要有
構建連接，基本上把我們的數據庫 放回簡單的語言或奶奶
可讀的表格。好的？這基本上就是我們 想要做的。所以假設你得到一個
工作，或者你在為開發人員工作 ，他們說，好吧，在我的網站上，
我想要一個在這個用戶頁面上的表格， 在那裡我可以使用我的用戶名、密碼和
我可以看到他們的用戶名、密碼、 電子郵件、日期、他們的註冊和
一切都是這樣。如果我願意，我 可以進去編輯它。那樣。他們不
必須進入並鍵入 SQL，您將在
發送該 SQL 的實際應用程序。但是 我們需要構造表格，我們需要製作
一個連接，這將能夠將所有這些組合 到一張漂亮的桌子上，那就是
可能是數據庫設計人員的工作。我 的意思是，如果應用程序或數據庫
是巨大的，你可能會有人 做設計，然後有人做
實現，然後是執行連接的人 ，然後是執行此其他操作的人
垃圾。但我的意思是，如果你只是一 個人工作，你必須做所有事情，你就是
還得設計關節。
而我高度，高度，高度
建議您在進入並編寫應用程序 之前這樣做。然後你是
像，哦，廢話，我不想這樣做，或者 哦，我的數據庫結構錯誤。我想
事先做好這一切。不要急於 求成，因為那樣你會像，
伙計，天哪，我的應用程序不起作用 。正確的。原因是，因為你沒有
花時間以正確的方式構建您的數據庫 ，並開發您的數據庫
加入。
好的，一旦你明白了，你就可以走 了。是的，所以有幾個不同的
種連接。有內連接、外連接、交叉 連接、聯合，有各種各樣的
我們將要討論的不同事物。 好的，所以，當energyne。這
內部聯接的工作方式是，它會佔 用一張桌子和另一張桌子。然後
只要有來自這張表和這張 表的行連接，它就會去
將它們呈現在新生成的表格中。所以 讓我們把它分解一下，看看如何
有用。讓我們舉一個例子。因為你 必須使用例子。我們會有一個
顧客桌 我們還將有一張卡片桌 。所以想想像銀行，例如，
你會有一張客戶表，你要 把所有的客戶都放進去
那裡。然後你有一張牌桌， 你將把每一張牌都放在那裡
已發放，或將發放給擁有信用卡 的人，您可以在那裡製作
您甚至可以在其中包含借記卡 ，但我們只會擔心信用
卡現在。所以基本上，我們將把它 畫出來。
而我們不是
要擁有它需要一張卡有一個客戶 ，一個客戶有一張卡。所以既不
這些列中的一部分將被標記為 非空。所以基本上，卡不
需要有客戶。並且客戶不需要 有卡。所以我們會有一個
桌子這邊。
還有這裡的另一張桌子。
通常這將被設計為一對多 的關係，因為一個人可以
有很多卡。通常一張卡是一個人擁有 的，你可以把它設計成多張
許多關係，您可以加入一張卡 或多人可以擁有一張卡。但
是的，您可以根據需要修改示例。 所以讓我們說這是客戶，客戶。
這是牌桌。現在我們可能有一些 東西，當然，我們有一個 ID
客戶。所以我們會有客戶 ID，你 知道，他們的名字，姓氏，
他們的地址、他們的出生日期、 我們需要他們的所有個人信息
銀行的數據。那就是要去的地方 。在這裡，我們將有一張卡片
ID。然後我們還將有一個客戶 ID。因為這是一對多的關係，
我們有孩子和父母。如果這是 一對一的關係，我們可以有
如果我們需要，它還有一個 卡 ID 和客戶表。但我不去
要做到這一點。我們可以在另一個 中進入一對一的關係設計最佳實踐
視頻。但是現在，客戶 ID 將引用 此客戶 ID。在這裡我們
也可以有更多關於汽車的信息 ，我們可以有總金額或
限制最大金額，我想我可以說，最大金額 ，您可以每月支付賬單。而且因為這
是一個非常簡單的例子，我們真的 不必擔心其他表，例如，
你知道，賬單和發票，我的意思是， 還有所有其他垃圾，我們只是保留它
這裡很簡單。假設這就是我們 構建數據庫的方式。我們想讓
通過加入我們在表格中加入信息 的位置，它更加用戶友好。因為
我們不想擁有卡的客戶 ID。所以 我們創建了一個連接。和
我們製作這個新生成的表格。我不 知道為什麼我把它做成圓形，但是
在這裡，我們可以說我們可以 說它是卡客戶。例如，它不
真正重要的是我們給實際表的 標題。我們將在這裡做什麼
是我們決定要採用哪些列。 嗯，我們總是開始的第一件事
使用 ID，因為這就是連接 的方式。而且我們不一定
必須在我們的表中返回該 ID。但我們 需要考慮一下，因為那就是這樣
我們連接表。所以通常ID 只是為了數據庫，通常是
不是你在數據庫之外使用的東西，它沒有 任何現實世界的價值。所以我們
通常不需要在連接中記錄它以查看 應用程序或我們正在做的任何事情
使用此為。現在，如果您是數據庫 管理員並且想要一些更像樣的
像這樣的表，但是您想將 IDS 保留 在那裡，這也很好。但我們不是
我們不會返回客戶 ID。沒有必要 ，它只是一個數字。
但由於它在兩個表中，如果我們確實 將它連接到這裡，它只會在一列中。
所以我們會讓你知道，花費 一個客戶 ID。這將需要結合
這些。我們將擁有客戶 ID， 比如 62，然後是卡。我就像
七，然後是客戶 ID 62 和當前 ID 八。所以這就是那種方式
工作。但我們不會歸還那些 。所以我們要做的是
只返回名字，姓氏。我們 也將返回讓我們添加另一個
列金額支付。所以基本上，它說 的是他們還清了信用卡的程度
bill，假設你借了 10,000，你欠了 6000， 你已經還了 4000。到目前為止，只是
看看人們在多大程度上還清了他們 的賬單。就像我說的，這是
非常簡單的示例，您可以將其設置 為給出百分比的位置。你可以
有更多的賬單和發票表格以及所有 垃圾。但只是為了讓你們明白
聯合概念，它基本上適用於您使用的 任何列。所以在這裡，我們可以
有名字、姓氏和支付的金額 。這些是我們表中的列。
我只是要打開它，所以我們可以 寫一些。我們可以說我們有個人
我們可以說，好吧，好吧。然後他 在他的一張卡上支付的金額是 2200。
我們還有 Caleb 咖哩。支付的金額是 720。而且，如果你願意，你可以
進入並編輯加入最大輸出。所以基本上 就是這樣，或者我們可以有一個專欄
在這裡，例如
欠下的數額。
我們也會在這裡戴帽子。這基本上 可以說，他們支付了多少
怎麼這麼長的樣子。那麼在這裡，我們
得到了數量，
像 3000，我們基本上只是說 3000 中 的 2200。如果你想這樣做，你
可以這樣做。但為了簡單起見，讓我們 保持這樣。然後我們可以有
吉米約翰。支付的金額可能是 2800，依 此類推。如果你可以做更多的行
通緝。現在你想知道，什麼是 內連接，我們之前討論過？
嗯，基本上，內部連接 將只採用卡片中的行
一個客戶和一個客戶在他們相交的地方 有一張卡片。所以這個新表被加入
table 將消除所有沒有卡的 客戶。而且它也在進行
消除任何卡片
沒有客戶。所以我要抹掉 這個，我只是要畫一點
插圖
向您展示這是如何工作的。現在，你可以 在網上找到更多這樣的圖片，我會
描述中的鏈接，如果我記得的話 ，可以這樣想，這是左表，
這是客戶。這是牌桌。而 這中間的部分。這是
有點像連接表或它們相交 的地方。所以這裡的客戶
有一張卡。這是有客戶的卡片。 所以在這裡，這是在進行
包含客戶也擁有一張卡或 一張卡並擁有的所有行
由客戶。因此，如果您有一張沒有客戶 的卡，它不會出現在最終結果之外。
如果您的客戶沒有卡，則不會出現 最終結果。所以這是什麼
你可以把它想像成維恩圖的這一部分 或其他任何東西中的所有這些東西，
那將被退回。現在，有不同 類型的連接，它只會
它只會返回，例如，這一側或這一 側。但這就是我們所在的地方
將進入，在未來的視頻中。所以 如果你想做一個左連接，如果你想
向左加入並從這裡繼續，向右加入 並從這裡過去。但是內部連接只是
兩個表的交集。我有 這個習慣就像擦掉它
用我的手然後我的手像深綠色 。所以我試圖變得更文明一點，
你知道。
那麼你怎麼做呢？出色地，
它是在 select 語句中完成的， 因為記住我們正在使用數據操作
通過選擇完成的語言。所以 它會是這樣的。現在警告
您，語法將與關係數據庫 管理系統從
關係數據庫管理系統，但概念 保持不變。所以你剛剛得到
替換一些東西，插入一些東西，boom，Bada，bang， 你有一個新的加入。
所以我們要說選擇。然後無論在 Select 之後發生什麼，我都要切換
超過。所以 Select 之後的所有內容 都將成為我們想要的列
連接的生成表。所以在最後一個例子 中，我們有名字，然後我們也
有姓氏。我們也有，支付的金額是 多少？我不記得了。但是有些東西
像那樣。所以這將是我們想要 返回的列，然後我們要說，
我們從哪個表中獲取這些列？那麼我們 做從？然後我們說，好吧，好吧，
您可能想知道，有多個表。 所以
我們怎麼知道是哪一個
我們將使用，或者我們將把左邊的 放在第一位，在我們的繪圖中，
我們有用戶或客戶，然後我們 有卡。所以我們要拉它
從客戶。然後你要做一個連接 並將另一個表連接到客戶。
所以我們要說，輸入join。 然後你要說另一張桌子
是卡。現在你要做的是說這些 表是如何連接的？所以方式
我們將它們連接起來，或者我們想要 加入這些表的方式是通過外鍵
連接到主鍵。你在語法 中表示的方式就是這樣
這裡的小聲明基本上是在說明我們 加入它的目的是什麼。而你
打算說，客戶點客戶 ID，以及那 是什麼。基本上是在說什麼
第一部分是表格。第二部分是專欄 。我們必須這樣做的原因
這樣做是因為兩個表都有一個客戶 ID。然後你就可以連接了
對另一張桌子說等於卡點 客戶。
ID。
現在這基本上就是你需要做的所有 事情，它會連接，如果你看
語法，它將在這裡連接並獲得 不同的標記。顏色創造事物
非常有用
我們。
好的，我們已經讓客戶加入了該 卡。那些是桌子。然後我們在
將說明我們想要返回的列和 新的連接。這是名字，姓氏
姓名和支付金額。然後我們說了 它們之間的關係。那是客戶ID
客戶表的等於客戶ID
的卡表。這就是您獲得連接結果 的方式。所以最終的結果是
當然看起來像這樣。你會 有名字，姓氏，
然後掛載
有薪酬的。
你去吧。
這就是內部聯接的工作方式。 剩下我們要討論的下一件事情
連接和右連接以及所有其他很酷的 連接類型。不過主要的是，別擔心
太多關於語法。如果它是壓倒性 的，只需擔心這個概念。明白
如果您進行內部聯接，它將 排除左側或左側的所有行
兩個表中的正確表，它必須 在兩個表中才能工作。
當涉及到這些關節時，這是最 重要的事情。因為如果
你明白這一點，你所要做的就是向上 看。假設您正在使用我的 SQL，
只需查找我的 SQL 語法，內部聯接。
然後你會得到一些語法代碼 ，用他們給你的列替換
列 D 和帶有所需表的 表。這真的很簡單。
所以你真的不需要喜歡是的，從長遠來 看，顯然你應該學習這一點。但
如果你是新手，不用擔心要花 20 年時間研究它。擔心
概念，因為一旦你掌握了概念，就 更容易掌握這些垃圾。所以在
在本視頻中，我們將討論跨多 個表的內部聯接。所以你可能
想知道，好吧，這是什麼意思？
出色地，
當我們有一個連接時，我們連接多個表 。但是如果我們想加入那個加入多個呢？
有更多桌子的桌子？所以基本上 ，我們將連接三個或更多的表
試圖找到綠色標記。就是這樣。好的 ，這是如何工作的？好吧，讓我們
只需畫一些框即可大致了解它 的外觀。好的，所以你可能
就像，好吧，很酷，我們弄清楚了內部聯接 以及它們是如何工作的。但他們如何
當你有三張桌子時工作？來，我們一探 究竟。這裡我們有三張桌子。什麼時候
我們做了一個內部連接，讓我們說在最後一 個例子中，我們連接這兩個表，我們有
某種加入條件，類似於客戶 點，客戶 ID 等於卡
客戶 ID，你知道，好吧，它 並不總是取決於你是什麼
用它做。但基本上，您將在 這裡有一個加入條件。而你
也將在這裡有一個連接條件， 如果
你想加入
另一個表，這些表不一定 要連接，就像多對多
關係，因為當我們設計多對 多關係時，它看起來像這樣
與中間表一樣，情況並非總是 如此，例如，這張表可以
和這個表有關係。而這張 表可能與這張表有關係。
但是這張表不一定與 這張表有關係。思考
像這樣，當您對這兩個表進行連接 時，您將獲得一個結果集。
是的，那麼如果你想知道你的下 一個結果會是什麼
當你有這張桌子並考慮加入這些時 ，你就會得到最終結果
放。因此，如果您跨多個表進行內部聯接 ，
最終結果集會比這小， 因為你仔細想想。如果
你加入這兩個表，你得到一個結果 集。但現在，你必須把所有這些
行，您將只顯示滿足 此連接要求的行
條件，這將減少此表 中的大小或行數。
而且會更短。在大多數情況下。現在 ，
讓我們多談談這個。
讓我們來看看我們之前的卡片 和客戶的例子。但我們是
要添加一個新表，對吧。所以我們 只是要繪製一個樣式。但這是
客戶表。我們有一個客戶 ID，一 個名字，一個姓氏，你也可以有
您想在那裡存儲有關客戶的任何 其他垃圾。然後我們有一張牌桌
或卡，卡 ID，然後是客戶 ID， 然後是最大輸出或其他什麼
否則你想存儲關於汽車 、賬單或任何價格或利息
速度。現在，讓我們在這個等式中放入 另一個表，讓我們將另一個表放入
這個等式。這將是一個卡片類型表。 所以你知道什麼時候你像信用一樣
卡，因為你們所有的大學生都喜歡 ，是的，我需要披薩。嗯，有
卡是一種類型，例如 Visa、MasterCard 或 其他任何美國運通卡。嗯，那就是
有點像卡片類型。通常，銀行 只會發放一種卡類型。但
我們可以說他們可以，就像我們 可以說卡片是什麼類型的卡片
這張表是。現在當你這樣構建時 ，有多少種不同的卡片類型，
四五個主要的，Visa，萬事達， 美國運通，也許還有另外兩個
有點受歡迎，沒有那麼多。所以 如果你把它存儲在一個列中
而這個，你會得到很多重複 的數據。然後例如，與
萬事達卡決定改名，否則 就會被其他人買斷。和
現在所有的卡都被命名為超級卡 ，那會導致問題，因為所有的
你將擁有的，你將擁有一張萬 事達卡，然後是超級卡，它會
令人困惑。所以你可以做的是使用我們 在很長一段時間內討論過的查找表
視頻前。這基本上只是對另一個 表的引用，其中包含所有
可能的選擇。這樣，如果您需要 添加新選項，就可以輕鬆完成
然後只需引用它，或者如果您需要更新 一個選項，或者如果您想放置
有關該選項的額外信息。比如萬事 達卡有標準費用什麼的
你可以把它放在卡片類型表中， 而不是放在卡片表中。因為
如果你有卡片表，比如，看，如果 你有卡片，ID，然後你有卡片
類型，然後您就了解了該卡片類型 。所以卡片類型的興趣什麼的。
嗯，這是一個傳遞依賴， 它違反了範式，我相信，
第二範式。別忘了，第三範式，對 不起。無論如何，這都不好。
所以我們想把這些放在一個新表 中。所以它的查找表是一種防禦
反對這樣的問題。它還減少了完整性 問題。而且還可以減
重複值。所以現在讓我們設計這個 ，我們將有一個查找表，因為
卡的種類。這將有一個卡片類型 ID，然後是卡片類型，即
就像它的名字一樣。然後你可以 有關於卡片的任何其他行
在那裡輸入。
然後在卡片中，
我們將使用外鍵引用它。 所以它說通過查找值
通過查找表。所以我們要 辦卡
類型
ID，即外鍵。現在讓我們畫出 這些連接。客戶 ID 是外國的
客戶的關鍵。卡類型 ID 是 卡類型的外鍵。那麼你
可以看到我們將所有這些信息分佈 在三個表中。我們想添加
年齡，我們想加入這些並創建 一個包含信息的新生成的表
在這三者中，我們希望在這種情況下 它是內部聯接，但您也可以這樣做
帶有外連接和其他類型連接的東西 。我們很快就會討論這些。但
為此，我們希望它看起來像這樣，這 就是我們想要生成的視圖或新的
表格看起來像，我們想要選擇關於 客戶的東西，只需添加一些列
在那裡只是為了把它們放在這裡，我們 可以有名字，姓氏，電子郵件，電話，
現在支付。然後我們也可以在這裡 使用卡片類型，它更多，因為我們
當我們完全偏離主題時，會做 一些很酷的事情。我永遠喜歡
小時候畫漫畫，我總是喜歡畫一 個泡泡，就像一個想法或一個
講話。然後我試著把所有的詞都放 進去，但從未奏效。然後我的主人
畫朋友就像，伙計，先畫單詞， 然後在周圍畫一個氣泡，它是
就像有史以來最好的主意。但我還是 不做。我的意思是，我總是要抹去
我的數據庫表的大小，在那裡 裝更多的垃圾應該總是先寫字
然後在它們周圍畫一個正方形。但是這個 作品，這些都出自這張表。這
來自這張表，卡片類型來自這 張表。這是跨三個表的連接。
你當然可以添加更多。現在，加入 條件，嗯，就是為了這個，
客戶 ID 與客戶 ID 相同 。並且卡類型ID與
卡類型 ID。所以這張表與排除在 這里相比，我會寫出它是什麼
要排除。這不是桌子的一部分，但 我只是把它放在這裡，它會
排除沒有卡的客戶，或者沒有 卡的客戶，這將是第一個
聯合條件，因為我們將從這裡出發 。
然後
第二個加入條件，它將刪除沒有卡片 類型的卡片。還有卡片類型
沒有卡。這意味著基本上如果您將 萬事達卡作為一種卡類型，並且您
尚未創建任何也具有引用 MasterCard 的外鍵的卡片行，
或者無論我說什麼，那都不會 被包括在內，因為什麼都沒有
把它放在一起。而且只說萬事達卡 ，不正常正常。那是因為沒有卡
它並且沒有人擁有擁有它的卡片 。這就是 INNER JOIN 要做的事情。
它會做這一切。所以最終的 結果基本上會變得越來越小
您添加的每張桌子都越來越小。現在 ，還有一些其他的事情要考慮
關於這裡。跟事情有沒有關係 沒有 好，我們來說說方式
我們有一個設置是客戶。他們可以 有一張卡，但他們不一定非得有
一輛購物車。那是因為這裡 沒有必需的列說你必須有
一個卡號。例如，您可能有一個 擁有多張卡的客戶。我們還有
一張牌桌。好吧，我們設置 卡的方式不一定必須具有
一個客戶。如果您想更改它，您 可以在此處獲取此客戶 ID。和
你可以不這樣做，那會改變 最終結果。因為現在，每
單卡就要有客戶。這意味著 沒有客戶的卡片。雖然，
從功能上講，它正在刪除所有沒有 客戶的卡片，每張卡片都有一個
顧客。所以最終結果並沒有消除沒有 客戶的卡片。從功能上來說，
不過，因為這就是內連接所做的 。但既然沒有什麼可以刪除，
它什麼也不做。所以你可以 認為它不這樣做，即使
功能上確實記得這是不同的。好 的。現在，我們也有它
卡，我會說應該有卡 ID 或卡類型 ID，我應該說，因為幾乎
您將獲得的每張卡片都會有卡片 類型，對嗎？除非對某些
原因他們不會，你可能不知道。 從功能上講，這是要進行的
刪除沒有卡片類型的卡片。但是因為 它被標記為非空，所以每張卡片
將有一個卡片類型。所以，
最終結果，
它並沒有真正刪除沒有卡片類型的卡片 。因為每張卡片都有一個卡片類型。
所以沒有什麼可以刪除的。
現在卡類型，
可能有一種可能性，你提供了一種新的卡片 類型，比如，讓我們說，所以我不能
想想任何很酷的名字，比如合法卡類型 12。就像一個新公司出現在那裡，
您將通過您的新銀行賬戶獲得 一張合法的 12 型卡。那可能
當您第一次獲得該卡時，可能 沒有發行過該卡類型的卡
然而。所以最終的結果，你只是真正 刪除了沒有卡片的客戶。和
我猜，沒有卡片的卡片類型，
我會保留那個。所以這將保留 下來，所以這兩個將被刪除。
這是最終結果
這裡。我們將保留無卡和 無卡客戶的卡類型。那是
一個有我們心的大男人。去年 我們談過他，但從未真正談過
加盟條件非常。因此，我將在此 視頻中介紹一個新示例。讓我們
做這個。所以我們將有一個用戶表 ，而不是客戶表用戶表。然後
我們將有一個評論表和一個 視頻表。所以想想像視頻分享
像那個叫的網站，從你開始
知道，但無論如何，我們有
這裡有一張桌子，我們這裡也有一張桌子。
我們還有一張桌子，
在那裡。好吧，這些都是有聯繫 的吧？砰，砰，砰，我要寫
表的名稱。我真的不會在這裡 寫任何評論，只是空間不足。
所以讓用戶得到了評論。然後我們 得到了視頻。所以唯一的辦法
用戶與視頻有任何联係是 通過評論表，因為用戶發帖
對視頻的評論。所以這是有道理的，希望如此 。我什至不知道仍然問你，我是
試圖停止瘋狂尖叫。如果我們要 這樣做，聯合條件是什麼？
內部連接，讓我們討論條件以及 我們應該期望的結果。好的，
所以讓我們定義連接這些表的 鍵。所以我們有一個用戶
ID。然後我們將有一個通用 ID，然後是 一個用戶 ID，然後是一個視頻 ID。和
那麼此視頻 ID 將在此表中由視頻 ID 引用。好的，現在，如果你認為
作為用戶和視頻之間的多 對多關係，您可能
去掉評論ID，只使用用戶 ID和視頻ID的組合。但那
不是最好的方法。一位用戶可以對 一個視頻發表多條評論。那麼你
看，就像，如果我們有這個公用表，我們 就可以有用戶 ID，然後我們就可以有
視頻 ID 然後我們可以有一個評論 ，我們有七個視頻 ID 的用戶 ID 是
106.然後評論蹩腳，然後 用戶ID為7，視頻ID為106
JK。所以這是一個壞主意，你不會 想結合使用它們。除非你在工作
在某些事情上，您只能像對產品 的評論一樣留下來代替
只是使用評論產品或用戶評論，無論如何 。在這種情況下，您可以使用用戶
ID 與產品 ID 或視頻 ID 相結合 以允許這樣做，但我將使用
評論 ID 在此。這將是一 個代理 ID，將用作
主鍵。這些只是外鍵 、用戶 ID 和視頻
ID，它們只是外鍵，它們 不會成為化合物的一部分
以任何方式都是複合鍵，它們 只是另一列，那是外來的
關鍵引用一個表，看看你們了解我 如何設置它的結構。好的，
現在這裡將有一個連接條件， 基本上一個連接條件是
兩個表中都有哪些列，對嗎？您 不必總是說用戶 ID 等於用戶
ID，或者客戶ID等於客戶ID或者 評論等於普通ID，你可以用
喜歡大於小於和所有那些花哨 的東西，但我們只是要使用
等於因為它是最常見的， 也是最容易理解的，它是
將成為用戶 ID。所以我們要讓用戶點 用戶 ID 等於評論點用戶
ID。這是第一個聯合條件。現在 為此，我們將有第二個加入條件
在這兩者之間。我們唯一可以使用 的是視頻 ID，因為它是唯一的
兩個表中的東西。所以我們基本上 會有
評論，
點視頻 ID 等於視頻，點視頻 ID。我們 得說那裡有什麼桌子，因為他們是
在多個表中，所以我們必須使用 點語法，表點列等於 table.com。
我知道你們可能看不懂我寫的 這麼小，但沒關係。只要
正如你所理解的，這是約翰，這 是這兩個人的共同條件，這是
是這兩者的聯合條件。當你加入 這些，你就會加入他們
通過那些列。現在不知道沒有列 怎麼辦？他們將被退回什麼
作為？好吧，我們的結構化用戶可以根據 需要對任意數量的視頻進行評論。
所以他們可以多次出現在評論表中， 所以那裡有一個太多了。現在，評論
只能由一個用戶發布，並且只能 發佈在一個視頻上，因為每個人
評論將成為評論表中的單獨行 。所以對於視頻 ID，我們要
設置為不知道。而且對於用戶 ID，我們將把它設置為
不知道那是因為永遠不應該 有視頻中不存在的評論，
絕不應該對非用戶發布的視頻 發表評論。正確的？現在為
視頻。我們不一定要對此發表 評論。所以我們無需擔心
關於那個。就像用戶一樣，我們 不必擔心必鬚髮表評論。所以
我們唯一需要把不知道放在 這兩列上。為了確保評論
與他們需要的一切一起存在。你 看，用戶ID就不正常了。那是因為
每個用戶都是用戶，每個視頻都 是視頻。但我們不必說每個用戶
必須評論這將使其不切實際 。所以這是名義和
關係類型。那麼當我們進行內部連接 時，在這種情況下，我們要做什麼
要得到？好吧，我只想稍微考慮一下 ，這樣我們就可以理解了
我們的最終結果是什麼。那麼我們想要 什麼？好吧，我們想要一張看起來像
像這樣一點點。我們想要一個看起來 像這樣的表。那是因為我們
不想要任何其他形狀，對吧？
嗯，史蒂文，但基本上，
我們要採取
具有用戶 ID 的用戶，我們可能會獲得 有關他們的更多信息，例如
他們的用戶名。因此，如果您願意 ，也可以將其包含在表中，這將
可能從一開始就完成，因為您可能 會在之後進行連接和其他操作
那。確保你把你的用戶名放 在那裡。你不必在那裡添加
因為那樣你的用戶有一半沒有用戶名 ，而其中一半沒有用戶名
好的。所以用戶名從一開始，可能 包括你的用戶名，然後很可能
包括評論。所以我們需要在評論表 中包含實際的評論。這
我沒有早點把這些放在那裡的原因 是因為我只是想考慮一下鑰匙
目前。但是現在我們可以把那些說我們 正在設計的東西放在那裡。和
然後我們還想要視頻標題。也許是 一個鏈接。但我們會堅持標題
目前。所以這些是我們想要包含 的三列。我們可以設置
它放在一個表格中，每一行都將 是一個新的評論。好吧，讓我們
看，讓我們想想可以排除什麼 。然後我們可以決定哪些
居然會被排除？好吧，我們就問個問題 ，可以排除一個用戶嗎？出色地，
如果我們使用內部聯接，我們只會返回 對某個帖子發表評論的用戶
視頻。所以是的，任何沒有發表評論 的用戶都不會被包括在內。怎麼辦
關於視頻？視頻會被排除嗎？ 或敏感的 INNER JOIN，我們不會包括
任何
沒有用戶評論的視頻。
所以是的，
可以排除視頻。他們很可能會 。所以視頻，它將把 x 放到
說可以排除，用戶也可以排除。 現在，可以排除評論嗎？出色地，
讓我們考慮每個單獨的鍵，我們 有用戶或外鍵，用戶 ID，
這被標記為不知道。所以這意味 著每一條評論都會有一個用戶
而且，視頻 ID 不是。而且每一條 評論都會有一個視頻。所以
在這種情況下，將返回所有評論。 所以我們不能刪除這些。所以
在這裡，每一條評論都將被包含在內 。所以如果我們有 10 條評論，
我們將把它們標記為 1 到 10，我們 實際上要標記它們，但是
我們將在那裡擁有所有 10 個。然後只 有一些用戶會出現在這裡。和所有
他們的評論，所有評論都會顯示在 此列中。所以它就像，就像，
它會像，像，黑色和跛腳。然後 是視頻標題，只有一些視頻會
被包括在這裡。
它是
報廢機會。這就是它的工作方式。 讓我們看看情況如何。是的。讓我們
看到這個在行動。在這裡，我有一些 我創建的表的快照。而我只是
說明這一點，我將根據需要在屏幕 上繪圖，並讓其中一個走
他們平板電腦。如果我畫的到處 都是，那是因為我還沒有安裝
軟件，不是因為我不能寫得比幼兒園 的孩子好。好吧，讓我們開始吧。
在這裡，我們有一個用戶表之類的 東西。我們有用戶 ID 電子郵件用戶名
和密碼，基本上就像剛剛加密 的一樣。這將被加入
評論表在這裡。我的意思是，抱歉 ，這是這裡的視頻表。我。這
是評論表。好的，所以在這裡， 我們得到了每條評論和外鍵
用戶 ID 和視頻 ID 以及實際 評論。然後是視頻表。
視頻表有視頻的標題 ，還有描述，就像
在視頻下方或側面或附加到 標題，無論您想做什麼
你的網頁。這就是視頻的內容， 對吧。正如你所看到的，我在做廣告
我的數據庫設計課程，非常棒 ，對吧？而我們想做的是
我們只想加入這些。所以我們有 用戶名、標題和評論，所有
從三個不同的表。所以用戶名 來自這裡的用戶表。和
那麼標題來自這裡的視頻 標題。然後最後，評論
來自這裡的公共桌子。所以讓我們 回到連接表。我們想要什麼
要做的是，如果我們使用的 是評論表，我們想替換用戶
帶有用戶名的ID和帶有標題的視頻 ID 所以我們來看一下評論表，
我們想用用戶名替換用戶 ID 列中 的所有這些數字，這意味著
我們必須引用用戶表。然後是 視頻 ID，我們要替換為
視頻名稱，這意味著我們必須引用 視頻表。然後是評論ID，
那隻是這個表的主鍵。好 吧，讓我們看看如何
這有效。所以是的，這就是它的工作 原理，來自用戶表的用戶名，標題
來自視頻表和來自評論表的評論 。現在讓我們來看看如何
加入看起來。我這裡有所有的桌子。 現在，它有點小。很抱歉，如果你
看不清楚，但我們這裡有連接表 。這是聯合表。那是
加入。然後我們有評論、 用戶和視頻。我們要
基本上只是藉用一些列。所以 即將出現的標題
從
視頻，所以我只是要去這裡 做做，它會從過來
這裡。然後用戶名將來自出現 。然後最後我們有了
評論。評論將來自這裡 。你甚至可以看到
可能不會。好的。所以有幾件 事，並不是所有的值列都是
包括。所以不是每一行。那是因為 這是一個內部連接。現在，如果你
看看用戶名，我們已經得到了所有的嚮導披薩 ，讓我們關注這個用戶。所以我們走吧
到用戶表。他們得到了所有的天空披薩，就在 那裡。如果我們繼續前進，我們就會得到
在這張桌子下面，我們得到了 ha 12，當然 ，他現在是我的鼠標。然後我們
got Pablo 就是所有的 dot dot，這是 Paulo 很棒 。然後我們得到了牛奶和 COO，也就是
牛奶和餅乾。然後我們得到了黃色的贓物 ，這是黃色的贓物，hashtag
優洛贓物。
然後我們知道我什至不知道 cifs 是什麼人，對吧？
最好的。世界上最好的拼寫器。好的，我不久 前做了這些。所以你可以看到這兩個
人，雖然不包括在內。那是因為 它是一個內部連接，而它們不是
最終結果的一部分。現在讓我們看看視頻 。所以我們得到了視頻，我們得到了數據庫
design 1234567。哪裡是八，雖然我在 這裡沒有看到八。嗯，你可以
見八。在此處的視頻方面，不包括 在內。所以不包括八。基本上，
我們從不同的表中獲取不同的列 ，但不是每一行都包含在內。
那是因為他們不符合內聯的 資格。所以語法什麼的
像這樣就會像這樣。說選擇， 然後是用戶名、標題和評論。
這些都來自不同的三個表。但 它可能會因它如何查找您的
數據庫管理系統。但它看起來像 這樣。然後從用戶，評論
在視頻表中，我們只是通過用戶 ID 進行內連接內連接評論和
評論用戶ID，然後內部通過視頻 視頻ID相同的方式加入視頻
作為評論視頻 ID。那麼內連接和 外連接有什麼區別，那就是
我們將在整個視頻中討論什麼 。這將是大約 20 個視頻。
所以堅持一個檔次。它
不會花太長時間。一旦你了解 什麼是內連接，外連接和
其他垃圾就像超級容易。好的， 有點像一旦你學習了一個編程
語言，第二個只是稍微不那麼 難。正確的？看我寫了一些垃圾
在我後面。讓我們來看看。好的， 所以我們有了所謂的連接條件。那
是在聯合聲明的末尾。你記得 這樣做嗎？我聽不見你我是
只是在開玩笑。好的，所以我們得到了客戶 客戶 ID 和卡客戶 ID。這意味著有
兩張表，客戶表和卡片表 。然後這兩個都有一列
客戶 ID 基本上只是簡單的點語法 表格點列。這是一個
協會。這就是說我們要連接 兩個表。和需要的行
被連接，通過客戶ID的 列連接
和客戶 ID。
所以這裡的兩列，這將建立 連接。我們的加入將
build 將建立在此基礎上，因此我們 知道在哪裡連接事物。所以這個方式
將與一個內在的人一起展示 是的，我們 得到了，讓我重新繪製這兩個表
真的很快，我們有一個客戶。然後我們拿到 了卡。所以這就像一家銀行，而且
人們可以獲得信用卡。而且 一個人不一定要有信用
因為他們可以在沒有信用卡的情況 下去那家銀行。而且，卡不
必須有一個當前的所有者，因為它可能 是一張殘疾人卡，或者它可能是
尚未激活的卡，或者其他 人可能發生的事情
不擁有那張卡。所以沒有必要的列 。現在，當我們加入這些時，
連接表將只包括擁有卡的 客戶，這將是結束
結果。那就是內部連接。所以我們 有客戶卡，加入卡表和
排他性的客戶，推開
全部
沒有卡的客戶，以及沒有 關聯客戶的所有卡
擁有那張卡。外連接的工作方式 略有不同，因為它仍然會返回
從這些表之一的所有行， 您可以決定哪一個，他們
在另一邊有一個關聯的實體。所以 聯合聲明出現在這裡，它是
重要的。所以我們把它放在了客戶 ID 的位置，我只想把它簡稱為 C。
如果我們有它，我們有它所謂 的左連接，我只是要寫它，
它基本上會忽略該聲明 。它將返回所有行
左邊的桌子。然而，正確的仍然 是一個 Bane that join 語句。
所以右邊的聯合聲明是一個原因 客戶。所以有了這個左連接，
所有行都將忽略左側的 這一點。所以它會回來
每一行。但是，在右側 ，它只會返回。那些有
具有客戶 ID 的客戶 ID 在客戶 表中具有相同的值。
例如，我們可以有一張帶有 ID 的卡，客戶 ID 為
七。所以
那是客戶 ID，而不是卡 ID。 所以這是指實際擁有的人
汽車。好吧，我們可以讓那個人 過來。因為如果你基本上插入
這進入加入條件，我們有七 等於七，因為這個卡客戶ID
在這張表中具有相同的價值，這意味著 這張卡是由那個人擁有的。很親切
它是如何工作的。但是對於外連接 ，我們將忽略它。基本上說，
我們將返回左側或右側 的所有行。所以有
這樣做了，並且有三種主要的聯接分類 ，外聯接，我將要這樣做
把它們全部寫出來然後下一個視頻 我們將討論它們，有一個左外
加入，右外加入。這似乎是一個外部 OUTER JOIN。我太笨了我的意思是
來寫。完全外部聯接，對不起 。但基本上，我們將討論這些
兩個右手和滿，可以多 一點
對於某些數據庫管理系統來說很複雜 。所以我們可能會稍微討論一下
更遠的路，希望
現在右外連接，我們基本上 和左外連接一樣。但
而不是左表，它將是 保留所有行的右表。
現在，如果你不知道我在說什麼，請 觀看最後一兩個視頻，那就是
將鞏固你的知識。你會像，準備 好解決這個問題，因為我
不是想讓你看我的其他視頻 ，我是想教你一些
需要理解這一點。而且我不 想全部重教，看在眼裡
的一個小概念。所以讓我們把它畫 出來一點。我們有它到我們有的地方
兩個表，一個用戶表，我們的客戶表 和一個卡片表。所以這就像一個
銀行什麼的。讓我們首先看看 左連接如何進行左連接
把所有這些客戶。然後它將 只需要具有關聯的卡片
客戶並退回那些。所以我們回來了， 我們基本上把點連起來了。然後我們
將得到一個聯合視圖，它將列 出所有客戶，但只列出卡片
有客戶的。所以這就像他們擁有 的客戶列出的卡一樣。和
如果他們有另一張卡要再次列出 該客戶，請列出他們擁有的卡
我們在上一個視頻中深入討論了這一點。 好吧，對於正確的加入，它會起作用
以同樣的方式，除了現在它將為另 一支球隊做這件事。所以我們要
完全相同的設置，我們會有一張卡片，我的 意思是，一個客戶和卡片表。
和
現在，如果我們用右外連接來設置它 ，它會拿走所有的牌，把它們放進去
在連接表中，所以每張卡片， 然後它會列出關聯的所有者
那張卡。所以卡，然後是客戶 。現在有一些事情需要考慮，
如果我們將它設置為卡片表中的位置， 我們就有了客戶 ID，我們給了它一個列
不不的特徵，那會，那可能會 讓你有點困惑，因為那樣
這裡的每張卡都會有一個 關聯的客戶，這就是
右外連接或左外連接 的全部意義在於包括
沒有該關聯的行。所以如果 它設置為不知道，它將
無論如何都返回它們，無論您是否 使用右外部聯接，等等，你們明白，
因為基本上，如果我們為此使用右 外部聯接，它將全部返回它們。
但無論如何它都會返回它們 ，因為每個都有一個關聯
卡，我們以後再討論， 別擔心。現在有東西
其他考慮。這基本上與左外連接 的工作方式完全相同，除了
被切換。所以當我們在上一個視頻 中討論時，你怎麼能說出哪個表
是左邊，
正確的
基本上形式就像選擇一樣 ，也許然後你會喜歡
列名，姓氏和卡金額，或者 您可以將您的卡金額設為
我們很好。然後你會看到一些 內容，比如你放的那一欄
就在這裡，當我們談論時，你放 在右邊的桌子被認為是左邊的
這個設計的東西。所以理論上，你 可以把它切換到左連接工作的地方
與右連接的方式相同，您 只是切換錶的方向。所以
在實踐中，大多數人甚至不使用 右連接，我只是教你讓你明白
當你看到一個。他們通常不使用 右連接，而是使用左連接。然後
他們只會翻轉表格的列，對不起。 所以像這樣，你有你的兩張桌子。
我會給你兩種可能產生相同 結果的可能性。你可以有
您的客戶，然後是卡。您可以使用 右外部聯接。或者你可以有
它到你在這裡的地方，你 有卡和客戶完全一樣
具有相同外鍵的列。除了設計 沒有改變，你只是切換
事情和當你做 SQL 語句 時，你要切換位置
調用該語句中的表。但總體 而言，該功能完全符合
相同的。現在你要使用一個
左外連接。
這些將返回完全相同的東西。因為 如果你這樣做，它會回來的
所有這些行以及與這些行相關聯 的列，如果你這樣做，它就會
返回所有行，以及所有關聯的列，這些 行。所以無論哪種方式，你都是
獲得部分客戶 z 的所有卡片。 所以在實踐中，很多人只會
使用左外連接以保持一致性和清晰度 。所以如果其他人看到它，他們
已經知道這是左外連接，他們 不必擔心左或右，並且
然後把它畫出來，弄得一頭霧水。 大多數人只使用左外連接，但是
你總是可以使用正確的外連接，如果你 真的希望這取決於你。嗯，我已經
一直在談論不是沒有列， 基本上是不允許有列的
沒有價值。當涉及到連接時，這可能 會引起一些混亂，因為您可能
得到你意想不到的結果 。我只是要解釋一下
更多，這個視頻會很快。所以如果 你已經理解了，直接跳過它
如果那是你想要的。好的，所以 我將回顧一個用戶評論的例子
系統。所以基本上，你要和 用戶有一張桌子，然後你要
有一張普通桌子之類的東西，你 可能有一個桌子，比如視頻，
或博客，或任何您評論的內容 。但現在不在插圖中，
別擔心。好吧，在這個例子中 ，我們有一些列標記為 not
知道。這意味著你不能把 它們放在沒有價值的地方
在該列的那一行中。例如，如果在 評論中，我們有評論 ID，然後
我們有用戶 ID。我們給了它一個標稱特性 的列，那麼，這有什麼作用呢？
這基本上是說這個評論表 中的每一行都必須有
與該評論關聯的用戶 ID。 那將是發布該評論的人。
現在，另一方面，用戶不 必發表評論。這是一對多
關係，用戶不必發表評論 。但必須擁有評論
由用戶。知道這一點很重要。所以 有三種可能的連接選項
我們可以在這張桌子上做。第一個是內連接 ，我要把它們放在大寫字母中，因為
這樣做可能更好。現在內連接 並不重要，留下或
是的，因為它將佔據他們兩 個的中間。所以你的定位
select 語句的查詢中的表並 不重要。重要的是
您正在使用內連接，內連接 會給您和內連接帶來什麼
加入會給你
所有有評論的用戶。那是因為 如果用戶沒有評論，
它不會出現在他的 ID 中，也不會出現 在評論表中。他會被排除在外。
有一條評論沒有
有一個用戶，那麼它也會被排除在 外。但事實並非如此。因為它是
不是。好吧，另一個選項 是左外連接。我要到位
放置在左邊第二個位置，
外
加入。然後我們可以把評論放在左邊 。所以如果你需要幫助職位，如果
你需要幫助思考這個問題，在你的腦海 裡，把這兩個表調換一下。但
我不會那樣做，因為那已經是插圖 的一部分了。我們很好。正確的？
另一個選項實際上讓我們 先談談要做什麼，離開
外連接會給你所有的評論 ，
然後給你發布這些評論的 相關用戶。所以每一個
評論將被包括在內。所以回報
結果將是所有評論，以及關聯的 用戶，好嗎？不過現在想想，
這些東西實際上會給你同樣 的東西。那是因為如果你
做一個內部連接，它會給你所有 有評論的用戶。好的？所以是
將把所有有評論的用戶 帶到那裡。然後就是
將獲取所有擁有用戶的評論並 將其放入其中，確保所有
有用戶的評論，有用戶的所有 評論。所以這些將給
你同樣的結果。所以只要明白這一 點。第三個選項是翻轉左連接
這樣的表與用戶表進行左外連接 並離開。好的，現在怎麼辦
這是要做什麼？它會給你 所有的用戶和相關的評論
來自這些用戶。現在，讓我們 來談談，所以我們要么要么
包括全部或排除其中一些。所以 基本上，如果它包括所有的
用戶，我要給它打上星號。如果 它只包括一些用戶，我會去
用 X 標記它。同樣的評論，所有 的評論，它將成為一個明星，
一些評論將是 X。所以用戶 確實有評論，只有一些用戶
將發表評論。所以這將是 用戶端的 x。
但
所有有評論的用戶，這 將包括所有評論，因為
所有評論都標記為不知道。所以 每個用戶發表評論都有一行
評論表。所以它將把它們全部歸還 。所以它將把它們全部打開
用戶端。
那是一顆星星。
現在，左外連接左返回的 評論，所有評論和相關聯
用戶。所有的評論。所以在評論 方面，它將全部返回。但該
用戶，並非所有人都只是其中的一 部分。現在，左外連接將返回所有
用戶和相關評論。所以第一個是 一些用戶的所有評論。第二
一是部分網友的全部評論。第三個 是所有用戶和所有評論，這個，那個
當您嘗試計劃需要使用哪個連接 時，您需要做什麼，去
通過加入的所有可能性是適量 的。所以你看到這些
兩個其實是一樣的，這個只 是一點點不同。這包括所有
的用戶。所以你可能想知道，你應該 使用這兩個中的哪一個？那麼，到
老實說，這並不重要。如果 您想返回所有評論，
不要擔心它是否不正常 或不只是使用左外連接
左邊的評論。然後你可以 保證你不必擔心
不管是不是不正常。所以如果你 只想要用戶，這就是我會做的
和評論包括在內。並且 您不想包含任何沒有
用戶，這永遠不會發生，然後你做 一個
內部聯接。
所以你所做的只是你認為假裝所有的 評論，所有的專欄都是可知的，
或者它們不必具有值。然後你 圍繞它計劃你的關節。它可以
仍然以同樣的方式工作。如果這就 是你想做的。否則，你只是計劃像
這。並意識到你可以使用其中的任何 一種，而且它會很好地工作
你想做什麼。這個視頻我們 將討論使用外連接。當有
三個或更多表，我們將討論使用 三個表的示例。但是你可以
只要您理解概念，基本上將 其應用於任何示例，我真的推薦
您觀看了有關在有三個或更多 表時使用內部聯接的視頻，
因為概念將基本相同 ，只是結果不同
回。所以為此，最好的思考方式 是假設我們有三張桌子，
現在忽略這兩個，我們有一個用戶 評論和視頻表。所以基本上，它是
一個可以對視頻發表評論的系統 ，每個得到評論的視頻都會
在這張表中。每個發表評論 的用戶也將在這個表中連接
那個視頻，對吧？我要 做的是使用左外連接
這一邊和一個右外連接在這一邊 。我們將看看這些結果是什麼
喜歡。好的，那麼首先，讓我們 加入用戶和評論表。那就是
最好的思考方式是想像這兩個表在 這裡連接起來形成一個新的
臨時連接表。然後想像 這個新的臨時表與
第三個表給出最終結果連接表。所以如果 我們在這裡做一個左外連接，每個
在左外部的這種情況下， 單個用戶將被帶到此表
加入。它只會接受有用戶 的評論，因為必須有關聯
兩個表中的用戶 ID。但 很可能每條評論都會
有一個關聯的用戶，因為該用戶 ID 列可能會設置為不知道
這樣你就沒有任何人沒有發布 的評論，因為那會很奇怪。
所以這也將返回所有評論。偉大的。 現在我們有了那個新表。你看我們
基本上只是從這裡拿走了所有東西 。讓我們想像一下把這個和加入它
視頻，我們將使用右外連接 。所以這將是 Right Outer
加入外部加入，我們將拍攝所有 視頻並將它們帶到這裡。那是
基本上右外連接是如何 工作的，它們會自動從
正確的表。然後我們將在 這個表中任何有關聯的行
與視頻表。所以這意味著評論必須 有一個視頻，所有這些
將要。好的，那麼這裡將刪除什麼 ？那麼，一些用戶將被刪除。
這是因為一些用戶不 會出現在評論表中。
如果他們不在評論表中，他們 就無法與視頻表建立關聯。
所以想想這裡的 join 語句，我們 可能會有這樣的東西，用戶
這裡的ID等於這裡的用戶ID。然後 我們會把它送到它的地方
完成，我們將把它放到這裡的視頻 ID 處。這相當於一個視頻
身份證在這邊所以當我們抓住所有這些時 ，我們就有了所有的用戶和所有的評論，
因為所有的用戶都會有一個用戶 ID。我們不必讓這些用戶在
評論表。因為它是一個左外連接 ，它會自動獲取所有用戶，
所有的評論都會被返回，因為每條 評論都會有一個關聯的用戶。
但是一旦我們到了這裡，情況就有點不 一樣了。現在是關於視頻，而不是關於
用戶。所以我們將獲取所有具有視頻 ID 的評論，以及所有視頻
有視頻 ID。因為它是右外連接 ，所以我們將拍攝所有視頻
他們在評論表中是否有視頻 ID。 所以第一件事，拿走所有
視頻，我們也將採取所有 的評論只會採取一些用戶。
這是因為如果一個用戶，讓我們舉 一些例子數據，假設我們有
這裡有一個 ID 為 7 的用戶。 他沒有發表評論，而是因為
我們做一個左外連接。反正他是來這裡 的。所以現在他在這個新生成的
桌子。好吧，他有一個用戶ID。 但是他在評論表裡有視頻ID嗎？
與視頻表中的視頻 ID 相關聯？ 不，他沒有。所以他不會讓
就過了這個階段。而且他不會作為連接表 出現在這個最終的外部表中。
所以最終結果將是所有視頻、所有 評論和一些用戶。那隻是
當有三個表時使用左右外部聯接 的示例。或者你可以做
與內部連接相同的事情。所以如果 你做了一個內部連接，它只會
你有評論的用戶。所以我的意思是， 您基本上可以將相同的示例應用於
很多不同的情況來獲得你想要 的結果。只要你明白如何
左連接的工作原理、右連接的工作原理以及 內部連接的工作原理，您基本上可以得到
你真正需要得到的一切。我們唯一 沒有真正討論過的就是完整的
OUTER JOIN，您有時可能需要。 這有點不同。所以我們會
很快就談到了。在本視頻中， 我們將暫時停止已加入的連接
一直在討論最後八個左右的 視頻。我們將討論一些
有點不相關，但有點相關，如果有 道理的話。但無論如何，我們將討論
別名。所以別名是指當你重命名 某物並賦予它類似於暱稱或
更多的是用戶友好的名稱，或者您 更習慣看到的名稱。你可以做
當您編寫 SELECT 語句和 SQL 時，您可以這樣做
更容易寫或更容易閱讀。所以當你 想給一個表一個別名時，你會
使用 A S 或 as 關鍵字。這將 說明我們接下來的任何事情
我們想叫這張桌子。所以假設我們 有那個用戶表。而不是使用
用戶你想說一個客戶，那麼 當你使用桌子和其餘的
查詢並且您使用您的連接，而不是 使用用戶，您可以使用客戶。和
通常，您不會取一個簡短的名稱 並使其變得更長。你會做某事
比如用 U 替換用戶
然後，而不是你做用戶點用戶 ID， 你將成為你的死用戶
ID。
這是別名的一個例子。當你在桌子 上做的時候。通常是進行選擇
陳述更容易。但是您也可以對列執行此操作 。現在當你在一個列上做它時，它是
工作方式略有不同。所以當我 選擇
聲明，您將所有列放在頂部 。所以這只是你的一個例子
可能會對數據庫說，您將選擇電子 郵件、名字和姓氏。什麼時候
您對列使用別名，不僅 更改列的名稱，而且
它會改變它的呈現方式。所以 當你獲得新的結構化視圖時
生成的表格，它看起來像這樣 ，而不是首先說電子郵件
姓名或姓氏，你可以說，電子郵件，fn。 哎呀，fn，Ln 為名字，姓氏，
或者你可以去掉那個下劃線，你可以 用你知道的第一個空格替換它
名稱。
這與其他別名對錶的工作 方式類似，除了您將
它就在列之後。所以你可以說選擇電子 郵件，作為聯繫人，逗號，名字，
因為，然後你加上引號得到了一個 引號，那是因為你告訴它這是什麼
你希望它是
你想把它放在引號中，
這樣，它被理解為一個字符串。你可以在 這裡看到，我把那個空間放在那裡。
並且沒有可能會導致問題的引號 。逗號，然後下劃線最後
最後的
名稱。
好吧，看到這一切。這基本上就是別名 的工作方式，您可以使用別名來製作
東西更容易寫更容易呈現。而且 ，它可以改變視圖的外觀。
所以它看起來更漂亮，對吧？在下 一個視頻中，我們將討論連接，
您引用同一個表或自聯接 。基本上，你將採取
您擁有的表格，基本上是最後告訴 他們的，您是否要從本質上複製它，
並連接這兩個相同的表。 唯一可行的方法是如果
你給它一個別名，所以這個表將被 稱為 T one 和 this one V T two，例如。
這是何時使用別名的 示例。除了重命名列
或你的桌子。自連接的工作方式 是你拿一張桌子，你本質上是
加入它自己。這就是使自我連接 混亂的原因。而且很多
人們找不到它們的實際用途 ，我要給你一個標記，
我剛拿到白色馬克筆，所有的子關節 都很複雜。而且很多人找不到
他們的實際目的。在這個視頻中 ，我將給你至少一個充分的理由
為他們。所以希望這個視頻是有幫助的。 所以當你有一個自我加入時，基本上想想
複製您擁有的表格並製作精確 副本。然後加入那兩個
桌子在一起。這是你可以考慮的 好方法。所以對於這個例子，我要
在網站上使用用戶帳戶系統。 你知道一些網站是如何像
推薦選項。基本上，如果你推薦某人， 你會得到他們 20% 的錢和/或他們的
積分或 10% 的錢，以此類推。這 就像推薦營銷。當你這樣做時
你被分配了一個推薦你的人， 對，它可以變成這樣的鏈條
人或此人或此人或此人 。所以在用戶表中，
您可能有一個用戶 ID。然後最重要 的是，你將擁有，你知道，電子郵件，
名字、姓氏和推薦 你的人，我把推薦人
你在一個被稱為被引用的列 中，這實際上是一個外鍵
同一張桌子。所以在這裡，你會得到諸如 12 之類的數字，
這將指向回 12 的用戶 ID。 例如，用戶 ID 11 可能
成為用戶 ID 為 12 的用戶推薦 的人。 現在，您可以
使它真正適用於連接，如果您使用 自連接。基本上，我們想要的
做的是我們想用ID替換referred by，我們想使用join來替換這個
該用戶的電子郵件號碼，我也忘記 放在這裡了。所以你知道，只要扔
裡面有一封電子郵件。所以我們會接受 這個，然後我們輸出的結果就會看起來像
像這樣。這就是我們將要擁有 的桌子。然後我們要插入
數據到那個表。所以你可能有一個像 Caleb curry 這樣的用戶，他的電子郵件是
將是 swag@yolo.com。然後它被引用 ，我們將替換那個號碼
使用用戶的電子郵件，例如
霍華德南
是的。
點組織
所以這只是我們可以用這個自連接做 什麼的一個例子。現在為了這個
為了工作，我們必須告訴數據庫 我們將使用同一個表
基本上是兩個不同的表。這可能有點 令人困惑。為了做到這一點
要工作，您必須使用所謂的別名。 我在上一個視頻中談到了那些，
所以一定要檢查出來。所以一開始， 我們只是想出一個我們的名字
可以調用每個表，我們可以有 第一個表，也就是用戶表。
然後是第二個表，這將是用戶表 的另一個副本。現在我們在
實際上並不喜歡複製數據。 這只是為了說明點，它將
使用同一個表中的數據從中提取 數據，我們可以說這個是
例如 v 一和 v 二。這些是我們的 別名。為了定義這些，我們
把我們的數據放在我們的表之後，然後 把 v1.所以我們可以說，用戶為 v1，然後
以 v2 身份加入用戶。這有點像你會 做的事情。所以現在我們有一個用戶
作為 v1。然後我們以 v2 的身份加入 用戶。它有點讓人覺得哦，這個
人們想在這種情況下使用同一張桌子 。讓我們試著弄清楚這一點。讓我們
開始，我們將把它放在一個 select 語句中。我會給你一些
特定的語法只是這樣才有意義。所以 我們有一個選擇語句。
然後在選擇之後
聲明，我們總是把我們想要從中獲取數據 的列放在一起。現在這可以變得友好
然而，令人困惑的是，因為我們 有兩個基本上兩個不同的表
將從中獲取數據。所以我們要 想好我們要拿哪張表取哪幾列
從我們之前設置的方式來看，我們 有這張桌子和這張桌子。這是 v
一，這是 v 二。嗯，那是我們 想像中的大腦，我們沒有
有，我們會說這張表是為用戶準備 的。這張表是供推薦人使用的。
所以我們要從這個表中獲取 用戶 ID，也許是第一個
姓名、姓氏和電子郵件。然後從 這張表中，我們將收到電子郵件
人的
誰介紹了你，所以我們會接受
由......推薦
人的電子郵件。所以這將起作用的 方式是我們將擁有用戶 ID，例如
7 和 Caleb curry，然後是他們的電子 郵件，然後它的 ID 會是 7 之類的
八點左右，被推薦人， 然後去第二張桌子
收到那個人的電子郵件，你必須記住 這一點。你必須弄清楚你是什麼
在開始 Select 之前要為您的表 命名。因為現在我們要去
要說這些列，我們必須通過在它們 前面放一個點並說來限定這些列
他們來自哪個表。我們可以只使用 我們已經擁有或組成的別名。
所以我們可以說，選擇 v 一個，句點或 點。我們可以說名字，逗號，然後
我們可以說 V 一個點的姓氏，逗號
一
點電子郵件。逗號。最後，我們 將採用 v 2，我們將採用那個人的
電子郵件，或者您可以填寫他們的名字或姓 氏，
無論你想放在那個被引用的東西 中，如果你想說他們的第一個
name，你可以說v2 dot名字，如果你 想成為他們的姓氏，可以是v2 dot
姓。或者，如果您想要兩者的 組合，則可以使用連接函數
或者其他的東西。所以我們將只使用 電子郵件。所以我們要取 v 兩個點
電子郵件。現在我們知道要從哪些 列和哪些表中獲取數據，
我們實際上必須把 from 語句放在 原處，然後說一些像 from 和 then
把我們從中獲取這些數據的表 。這是我們要定義別名的地方。
所以我們可以說，從用戶
作為
一
這將基本上告訴數據庫用戶表 被稱為 v 一。現在
我們可以加入。
加入，
這將默認為內部聯接。如果你只是 像那樣使用 join 。我們可以說
加入用戶作為兩個基本上會 告訴他們用戶也將被知道
作為 v2 但在這種情況下它將被 視為不同的表。那你去
做這將說明我們要去哪裡 加入這些事情。現在這是
它可能會變得非常混亂，因為 有太多的可能性，你可以
放在這裡。對於這種情況，我們 將採用 v1，我們將採用
由列引用，這將與 V 到 u 用戶 ID 列相同。所以
如果你能想到這一點，想像一下兩 個具有完全相同數據的表。這是
第一個，這裡是 v2，我們有一個用戶 ID。 然後在這裡，我們還有一個被提及的
to by 或referred by guess 將引用 v2 表的用戶ID。所以
這意味著我們需要基本上建立 這種聯繫並說如果有六個
在這裡，它們是通過表引用的， 它需要與這裡的用戶 ID 相同
有六個。如果你需要更多的實際數據來理解 這一點，想像一下，我們有這個
這邊的傢伙他的名字是塞繆爾。 我們這裡有這個人。
他的名字是。
是的，這就是他的名字。還要參考 Samuel， 這意味著它將擁有用戶 ID
六個，在用戶 ID 的這個用戶行中， 假設為 12。所以 Samuel 的 ID 為
12，當他被用戶ID為6的人 推薦時，我聽說過，
然後是另一個表，它也是同 一個用戶表，它將引用
身份證號為六的人，
這是這個人。
希望這是有道理的。但實際上， 你不會有兩個完全相同的副本
的數據，它足夠聰明地理解這些 都是一張表。所以基本上是
將引用由，然後返回到 用戶列，並將其加入
將兩張桌子放在一起看起來像什麼 。這就是為什麼我變得善良
的混亂。但是當你按原樣處理這個 查詢並將其放入數據庫時，
你會得到一些看起來像普通連接表 的東西，會有一個非常大的表，
它將包含我們選擇的列，v1 dot fn。除此之外，我們還要去
擁有 V 一個班級名稱和 v1 電子郵件，以及 v2 電子郵件。那麼如果我們舉個例子
數據，它看起來像 Caleb、Curry 和 電子郵件，然後是 v2 電子郵件
就像另一個人的電子郵件。所以諸如此 類
冷靜的，
這就是它的樣子。它只會 為您提供所有行。是的，
你可以亂搞，做各種很酷的 連接和各種東西。但是有
還有一件事我想告訴你。這 與別名有關。嗯，你知道，
這可能不是你現在的樣子 。它可能會令人困惑
一封電子郵件，然後在它旁邊的另一 封電子郵件，比如這些是什麼意思？
好吧，您可能想說一列是用戶 ，另一列是執行此操作的人
提到他們。因此，您也可以為此使用 別名。所以為此你也使用 as，但是
而不是放在 from 中，你只 需要把它放在那個列之後
你想改變。所以你可以放在這裡、這裡、 這里和這裡。所以如果我想讓桌子
電子郵件，或推薦人，你可以說像 ，v 兩點電子郵件，如被推薦人
by，這個你要加引號來表示 你想要那個字符串作為
該列的標題。然後當你拿到那張新桌子 時，加入，而不是說電子郵件，
它會說被引用，然後是數據列表 。喲，我的兄弟們怎麼了，
這個視頻是視頻的一部分，我 想，我們只是在討論這個
通過展示我在黑板上解釋的這個真實例子 ，更深入一點。這樣你就可以
看到我有一個用戶表。在我的用戶表中，你 知道，我收到了用戶 ID 通行證電子郵件
對於名字、姓氏和由這個 引用的引用是外鍵引用
用戶 ID。它的工作原理有點有趣 。所以你可以看到這裡是這個人
YOLO 的 allama swag 是指 YOLO 平靜，在 這種情況下，這將是 Hi mom at low
水平平靜，他基本上提到了每個人，這就 是為什麼這裡有一個零。如果你滾動
下來，我們也有一些人是被一個人 介紹的。基本上我們想做的是
我們想用此人的電子郵件替換此 引用。為此，我們可以使用
自我加入。誰知道可能有更簡單的 方法來做到這一點。所以如果有
請務必讓我知道。好的，這裡有一個 可以做到這一點的查詢。所以讓
我只是刷新這個。這就是它要 做的事情。它將選擇第一個
姓名、姓氏、電子郵件。被 轉介的人的郵件，也將採取
推薦人的電子郵件，推薦其他 人的人，內部人的電子郵件
這首選列。好的，所以你可以看到我們 得到了名字、姓氏和電子郵件。那是
一件事，然後通過電子郵件推薦。那麼 這是如何工作的，我們可以取列，
我們還替換了被推薦人和放置被推薦人 的電子郵件，這就是它顯示的原因
就在這裡，這就是我們想要的，那很 好。然後我們說我們要去哪張桌子
獲取用戶表並將其命名為 v1，您基本上 可以將其命名為任何名稱，只要
當你在這裡更新時，它仍然可以 工作。那隻是我編的名字，我不能
想一些很酷的事情。但是基本的，基本上 是一個版本，你知道，這個內部連接是
拿了我們另一個版本的表，然後說，不 ，這個內部是可選的。這樣你就可以
把它拿走，它會以完全相同的方式 工作。然後我們要說如何
它是相關的。所以基本上，這通過 電子郵件提到，需要有一個 ID
指代一個人的表。所以被引用者 將有一個 ID，這需要
以匹配用戶 ID。所以在第一個表中， 讓我們回到用戶表。這兩個，
例如，需要引用一個真實的人， 它需要是內部的實際數據
用戶表的第二個版本。 它將轉到第二個版本
用戶表，找到ID為2的那個人 。它將接收那封電子郵件
並在此處顯示。所以希望這是有道理 的，伙計們，當然，你可以
把這個弄得亂七八糟，你可以 把它弄亂然後放你自己的東西
在裡面得到你自己的結果。您甚至 可以在此處更改此聲明以獲得
更瘋狂的結果。所以是的，伙計們，感謝 您觀看地球上的和平，並抓住您
在下一個視頻中。並訂閱，以及 v 一個點的姓氏和 V 啊，這是一個
晚上現在白痴。對於表的別名。我們 要告訴我的 SQL 啊廢話掘金。
這不是我的 SQL 數據庫。