我正在爲我的Database Systems考試進行學習,顯然Attribute-Based Checks
和Tuple-Based Checks
之間存在差異。可悲的是,沒有很好的解釋,Google搜索後我仍然很困惑。任何人都可以解釋他們之間的區別?基於屬性的檢查與基於元組的檢查
謝謝。
我正在爲我的Database Systems考試進行學習,顯然Attribute-Based Checks
和Tuple-Based Checks
之間存在差異。可悲的是,沒有很好的解釋,Google搜索後我仍然很困惑。任何人都可以解釋他們之間的區別?基於屬性的檢查與基於元組的檢查
謝謝。
SQL uses the terms table, row and column for relation, tuple and attributes respectively.
- www.dbtutorialnucleus.co.in
因此,你可以有支票或基於屬性(列)或元組(行)的約束。
編輯:「它們在功能,性能和聲明方面有什麼不同?」
功能:不同的是你會推斷,如果你有一個包含多個列的約束,它將基於元組。
性能:它有所不同,但平均而言,約束一個列的速度比多個速度快,但如果您的邏輯需要一個元組,那麼您必須擁有該元組。
聲明:據我所知,它們的語法是相同的,區別是隱含的,但可能很容易出現需要明確區分的系統。
基於屬性和基於元組的檢查是完整性約束的類型。
雖然基於屬性的執行對單獨列的檢查,但基於元組的記錄包含記錄。 對於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
我知道這些術語的意思,我可以推斷出一個使用列,另一個從名稱使用的行。但是它們在功能,性能和聲明方面有什麼不同? –
我不確定我能提供多少特異性。在實踐中,您可以使用符合您需求的產品。這與INNER或OUTER JOIN的選擇類似 - 它們是相關的,但不同。 –
「如果您有一個包含多個列的約束,它將基於元組。」這是我正在尋找的信息。謝謝! –