在sql server中主碼,主屬性,索引這三個重要的概念如何理解?

時間 2021-06-03 15:35:16

1樓:山上有木

碼是可以區別乙個元組的屬性或屬性的集合。

比如乙個學生表,有學號、姓名、性別、年齡、系別、專業這幾列(每列都是乙個屬性),那麼:

學號唯一,所以是乙個碼

(姓名,性別)唯一,所以是乙個碼

(姓名,性別,年齡)唯一,所以是乙個碼

候選碼是能夠唯一標識一條記錄的最小屬性集。

學號唯一,而且沒有多餘屬性,所以是乙個候選鍵

姓名唯一,而且沒有多餘屬性,所以是乙個候選鍵

(姓名,性別)唯一,但是單獨姓名乙個屬性就能確定這個人是誰,所以性別這個屬性就是多餘屬性,所以(姓名,性別)不是候選鍵

主碼:人為規定的候選鍵中的乙個,例如學生表中,我們通常會讓「學號」做主鍵,學號能唯一標識這乙個元組。人為規定!

主屬性:如果乙個屬性是構成某乙個候選碼的屬性集中的乙個屬性,則稱它為主屬性。(有的屬性可能不包含在候選碼裡)

索引:碼、屬性之類的都是邏輯概念,而索引是對於內模式而言的。屬於物理儲存的路徑概念,而不是邏輯的概念。資料庫會自己維護索引。

以前,在SQL86和SQL89標準中,基本表沒有主碼概念。所以需要使用者建立索引來彌補。但如果在定義基本表時,還要定義索引,就把資料庫的物理結構和邏輯結構混在一塊了。

因此在SQL2中引入了主碼(主鍵)的概念,使用者在建立基本表時用主碼子句Primary key直接定義主碼。

但至今大多數DBMS仍使用索引機制,有索引建立和撤銷語句,其功能僅限於查詢時起作用。

在SQL server中 SQL query 跑的很慢可能的原因有哪些?

AngkorW 來來來,這個問題,我最擅長 假設你的伺服器處於最佳狀態 資料庫索引也是大部分都是合理的 這個時候你要看看你的資料庫快取執行計畫了 主要看Adhoc的數量,如果總是生成新的的adhoc,那你要採取行動了 梁勇 看下執行計畫,然後索引碎片也看看。下面的方法試試效能優化 日常維護 經常用 ...

在SQL Server中怎樣自動跟蹤每天全備份的一張表中的變化?

戰鬥會 Change Data Capture Track Data Changes SQL Server Change Tracking Track Data Changes SQL Server 官網是最好的教程啦 黃贇 根據資訊中心每天給你這張表的方式,會有不同的方法,實現起來可以簡單也可以複...

主係表在漢語中是什麼結構?

公子小白 什麼叫主係表我一直不懂我也不想懂這就是因為解釋不了某些語法現象而臆造出來的概念 他已經是家喻戶曉 這句話其實是 他已經是家喻戶曉的人 的簡略而已賓語是人 it is a dog be是動詞只不過是靜態的就因為這個動詞沒有實際動作就改個名叫繫詞?如此教語法難怪學生學不會 首先,我們決不能用A...