7

3NF/BCNF'deki ilişkileri birbirinden nasıl ayırt edebileceğimiz konusunda birçok farklı kaynak okuyorum. Ve şimdiye kadar bu benim anlayış ...3NF içinde bir ilişki bulmak ancak BCNF'de değil

Ben bir örnek olarak bu ilişkiyi kullanacağız ...

R = {A, B, C, D, E}

ve

F = {A -> B, B C - > E, E D -> A}

olduğunu ettik.

İlk olarak ilişkinin anahtarlarını bulmalıyız. I used this video to help me do that. Ve RBCNF yılında, biz F her fonksiyonel bağımlılık sol taraftaki Keys biridir emin olmalısınız olduğundan emin olmak için Şimdi

Keys = {ACD, BCD, CDE}

aldık. Anında bunu biliyoruz, çünkü ilk FD A -> B ve A anahtarlardan biri değil. Yani BCNF'de değil. Şimdi

R3NF yılında, biz F her fonksiyonel bağımlılık sol taraftaki F her fonksiyonel bağımlılık sağ tarafı KeysYA biridir emin olmalısınız olduğundan emin olmak için Keys'un bir alt kümesi. Her FD'nin sağ tarafına bakarsanız, bunlar B, E ve A'dur. Bunların her biri Key'un bir alt kümesidir, yani bu, 'un 3NF'da olduğu anlamına gelir.

Yani bu ilişki 3NF içindedir nadir olguda (wiki göre) biri ama BCNF değil olduğunu. Bu yöntem doğru mu? Güvenilir mi? Ben bir şey eksik miyim?

+1

Evet, her şeyi doğru yaptınız. – laurids

+0

bunu kontrol etmek isteyebilirsiniz: http://class2go.stanford.edu/db/Winter2013 – laurids

cevap

1

İlk önce superkeys, aday anahtarları ve birincil nitelikleri öğrenmeniz gerekir.

Ancak, başparmak bu kural yardımcı olur: birden örtüşen aday tuşları yoksa

A 3NF tablo BCNF içinde olması garanti olduğunu. Bir 3NF ilişkin aday tuşları

  • tüm atomik veya

o olmayan atom ama çakışmayan olup

  • ise başka deyişle

  • , ilişkinin BCNF'de olduğu garanti edildi. BCNF ihlal ama 3NF aşağıdaki fonksiyonel bağımlılıkları vardır karşılayan

    en basit ilişki: Bu durumda

    A,B -> C C -> B

    , aday tuşları (A,B) ve (A,C) bulunmaktadır.

    • tüm fonksiyonel bağımlılıkları sağ tarafı bir birincil nitelik çünkü
      O 3NF karşılamaktadır.

    Bu ihlal BCNF

    • C -> B ama sol tarafı bir SuperKey olmadığı için.
    2

    BCNF:

    X- Y asal veya İşte
    olmayan asal X olmalıdır olabilir> Y süper anahtar

    3NF:

    Y ardından olmayan asal
    , X
    bir süper anahtar başka

    X değil gerekirse olmalıdır olduğunu X-> Y süper anahtar

    Umut, bu yardımcı olur

    +2

    Bunlar açık veya doğru değil. Bazı ders kitabı tanımlarına, hatta wikipedia'ya bakın. – philipxy

    +0

    Tanımlar belirsiz. Örneğin, BCNF için basitçe X'in bir süper anahtar olması gerektiğini söyleyebilirdiniz. 3NF'nin tanımı doğrudur, ancak bunu açıklamanın en karmaşık yolu budur! – AHA