2014-04-23 82 views
0

我正在爲我的Database Systems考試進行學習,顯然Attribute-Based ChecksTuple-Based Checks之間存在差異。可悲的是,沒有很好的解釋,Google搜索後我仍然很困惑。任何人都可以解釋他們之間的區別?基於屬性的檢查與基於元組的檢查

謝謝。

回答

1

SQL uses the terms table, row and column for relation, tuple and attributes respectively. - www.dbtutorialnucleus.co.in

因此,你可以有支票或基於屬性(列)或元組(行)的約束。

編輯:「它們在功能,性能和聲明方面有什麼不同?」

功能:不同的是你會推斷,如果你有一個包含多個列的約束,它將基於元組。

性能:它有所不同,但平均而言,約束一個列的速度比多個速度快,但如果您的邏輯需要一個元組,那麼您必須擁有該元組。

聲明:據我所知,它們的語法是相同的,區別是隱含的,但可能很容易出現需要明確區分的系統。

+0

我知道這些術語的意思,我可以推斷出一個使用列,另一個從名稱使用的行。但是它們在功能,性能和聲明方面有什麼不同? –

+0

我不確定我能提供多少特異性。在實踐中,您可以使用符合您需求的產品。這與INNER或OUTER JOIN的選擇類似 - 它們是相關的,但不同。 –

+0

「如果您有一個包含多個列的約束,它將基於元組。」這是我正在尋找的信息。謝謝! –

1

基於屬性和基於元組的檢查是完整性約束的類型。

雖然基於屬性的執行對單獨列的檢查,但基於元組的記錄包含記錄。 對於instanse,如果要指定在兩列基於屬性的約束,你需要一個語法,如:

create table..... 
column1 CHECK(column1 >= 1,000) 
column2 CHECK(column2 >12000) 
..... 

上述語法將檢查插入列1和2 但是每個值的條件,可能會出現這樣的情況,當你需要這些條件之一時才能滿足。然後,您不再可以檢查列級別上的那些。在這種情況下:

create table..... 
column1 ..., 
column2...., 
check(column1 >= 1,000 or column2 >12000) 

一個不錯的解釋可以在這裏找到: http://infolab.stanford.edu/~ullman/fcdb/jw-notes06/constraints.html