0

這是一個觀鳥者數據庫示例。假設您有三個實體:BirdSpeciesLocationObserver。要有一個實體Observation,你需要所有這三個。沒有他們沒有觀察。具有唯一編號的弱實體

我的理解是,上面的要求使得Observation成爲一個弱實體。但是,如果同一個人可以多次在同一地點發現同一物種呢?那麼該條目將不會是唯一的。

因此,我的問題是,您是否可以擁有一個Observation的主鍵,它只是一個數字,對於每個觀察結果而言依次遞增,並且該實體仍然是一個弱實體?

回答

0

我認爲新實體的弱點是受其關係的制約,現在它的主要關鍵是物質。

要理解這一點,想象一下,不是每個觀察值都有一個連續遞增的數字,而是有一個日期時間。這並不改變這樣一個事實,即如果你刪除三個實體中的一個,那麼就沒有觀察。

+0

弱實體不是由它們的關係來定義的,而是依賴於父實體的關鍵來確定它的身份。請參閱https://en.wikipedia.org/wiki/Weak_entity或更好的閱讀Peter Chen的「實體關係模型 - 統一數據視圖」 – reaanb

0

弱實體由單個父實體的主鍵和另一個屬性標識。弱實體通常是整體的一部分。 Observation(不引入代理鍵)是三元關係,而不是弱實體。

要記錄同一地點同一物種的同一個人的多個觀測值,我會在Observation關係和主鍵中包含一個日期/時間值,或者是一個非主數列以記錄觀察結果。請記住,關係不能有重複的條目,因此它不是唯一性,如果沒有明顯的列,那麼它是有風險的,但是您可以記錄多個條目。但是,SQL DBMS不具有正確的關係,並且可以讓你在腳下拍攝自己。

一旦您引入了代理鍵,您就可以將該關係變爲關聯實體。由代理鍵標識的實體總是強壯的實體,因爲它們是通過自己的屬性來標識的。代理鍵允許您記錄其他重複條目,這就是爲什麼代理鍵常常與其他屬性上的唯一鍵相互補充的原因。