2014-08-28 121 views
5

我校書Database Systems定義基數如下:什麼是基數的定義SQL

關係的基數是它包含的記錄數。相比之下,元組的數量被稱爲關係的基數,並且隨着元組被添加或刪除而改變。高基數 - 許多元組,低基數 - 少量元組。

雖然上Cardinality (SQL statements)維基百科文章,如下定義它:

基數是指包含在一個數據庫表中的特定列(屬性)的數據值的唯一性。基數越低,列中的重複元素就越多。有三種基數:高基數,正常基數和低基數。

它們都可能是正確的,但我不能將兩個定義連接爲相關定義。換句話說會好的!

+1

基數是唯一值/記錄數的數量。我認爲該書簡化了該問題。最大基數爲1。 – Mihai 2014-08-28 11:51:23

回答

7

他們講的是同樣的事情,它與元組(relational algebra)或行(外行的術語)有關。

當它說高基數是是獨特的並且因此行或組的數目較高特定屬性(或場)的可能值:

StudentID Lastname Firstname Gender 
101   Smith John  M 
102   Jones James  M 
103   Mayo  Ann  F 
104   Jones George  M 
105   Smith Suse  F 

作爲只要學生IDcardinalityhigh,因爲它是唯一的。它有五(5)個元組/行。

另一方面姓氏具有正常的基數,特別是只有三(3)個獨特的元組/行。因此它有normal cardinality

最後性別只有兩個可能的唯一元組,因此Low Cardinality

您可能會在此處混淆CardinalityDegree之間的關係,該關係在關係(或表格)中有attributes/fields的數量。

另一方面,當談到Cardinality時,Database的教科書通常與一個實體相關的另一個實體有關,也就是說,參與給定關係類型的實體可能發生的關係的數量。因此,例如對於binary relationshipcardinality可以是one-to-one,one-to-manymany-to-many

4

兩個定義都試圖說基數是「行數」。區別在於比較是「在表格中」還是「在特定列中」。

數據庫文本書中的版本重點關注關係代數和表的結構(該術語中的「關係」)。

維基百科條目更實用。它包含教科書定義,假定表具有主鍵(主鍵的基數與表相同)。但是,它也可以應用於標誌列。如果標誌只有兩個值(01),那麼我們可以說列的基數爲2.

這對優化查詢很重要。基數是選擇加入,彙總和選擇數據的最佳方法的一個組成部分。實際上,大多數數據庫使用比基數更多的信息,即關於列及其值的優化的所謂「統計」。

0

如果我們有表A和B,將基數看作與表A的行相關的表B的行數。如果表是PERSON和VEHICLE,並且關係是RODE_ON,則基數因爲過去大多數人乘坐很多不同的車輛,大多數車輛駕駛着很多人。如果關係是OWNS,那麼基數很低 - 大多數人擁有一輛車,一些擁有一輛車,而一輛車通常擁有一兩個車主,而不是更多。

請注意,關係一側的基數不等於另一側的基數。如果桌子是PERSON和FINGER,並且關係是BELONG TO,那麼一個人手指多,但每個手指只屬於一個人。