2016-09-28 6 views
0

Ich habe drei Tabellen - Kunde, Miete, Buch. Die Kardinalität zwischen Kunde und Miete ist (1,6) und die Kardinalität zwischen Miete und Buch ist (1, unendlich). Ich weiß, wie man (0,1) Kardinalität definiert. Aber ich bin mir nicht sicher, wie ich (1,6) definieren soll. In (0,1), kann ich so tun -Wie definieren Sie obere Grenze (relationales Kalkül)

∀x∀y∀z (Miete (x, y) ∧rent (x, z) → y = z)

Aber wie wollen Sie definieren (1,6). Vielen Dank.

+0

Bitte definieren Sie genau, was Sie (denken Sie) mit der Kardinalität zwischen zwei Tabellen meinen. Bitte sagen Sie, welche Designmethode Sie verwenden. – philipxy

+0

Meinst du, * Prädikatenkalkül *? Das ist, wofür Ihr Beispiel geschrieben ist und was wir erwarten würden, dass ein Contraint geschrieben wird. Ein (Domänen- oder Tupel-) Kalkülausdruck bezeichnet eine * Relation *, obwohl solch ein Ausdruck, der eine Relation ohne Spalten zurückgibt, als Proposition angenommen werden kann . PS Siehe meine Korrektur und Vereinfachung für die angenommene Antwort. – philipxy

Antwort

0

Man könnte es ausdrücken (in Prädikat Kalkül, wie Sie Ihre Frage zum Ausdruck gebracht haben) auf diese Weise:

∀ x (x ∈ Customers → ∃ y rent(x,y)) 

∧ 

∀ x (x ∈ Customers → cardinality ({ y | rent(x,y)}) ≤ 6) 

Wenn Sie möchten, können Sie die Bedingung cardinality(set) ≤ n mit einem komplexen logischen Ausdruck der Form schreiben:

∀y1∀y2 ... ∀yn (rent(x,y1) ∧ rent(x,y2) ∧ ... ∧ rent(x,yn) 
        ∧ y1 ≠ y2^... (all the possible pairs) ... 
    → ∄ ys (rent(x,ys) ∧ ys ≠ y1^ys ≠ y2^...^ys ≠ yn) 

oder in prägnanter Weise (die Notiz von @philipxy sehen):

∀y0∀y1 ... ∀yn (rent(x,y0) ∧ rent(x,y1) ∧ ... ∧ rent(x,yn) → y0 = y1 ∨ ... 
+0

Ihr erster Codeblock ('cardinality (rent)> 0') hat in der ersten Konjunktion fälschlicherweise y free. Da ein gegebenes x ein oder mehrere ys hat, erhalten wir '∀ x (x ∈ Kunden → rent y rent (x, y))'. Eine einfachere "Kardinalität (Rente) ≤ n" ist "∀y0∀y1 ... ∀yn (Miete (x, y0) ∧ Miete (x, y1) ∧ ... ∧ Miete (x, yn) → y0 = y1 ∨ ... (alle möglichen Paare) ...) '. PS Sie haben * Prädikatenkalkül * gegeben, was die Frage zu sein scheint, die mit "relationalem Kalkül" gemeint ist. – philipxy

+0

@philipxy, korrigiert, danke! – Renzo

Verwandte Themen