2016-09-28 3 views
0

私は3つのテーブル - 顧客、家賃、本を持っています。顧客と家賃の間の基数は(1,6)であり、家賃と本の基数は(1、無限)です。私は(0,1)基数を定義する方法を知っています。しかし、私はどのように定義するか分からない(1,6)。 (0,1)で、私は次のように行うことができます -どのように上限(リレーショナル計算)を定義しますか

∀x∀y∀z(z)はY = Z→家賃(x、y)は∧rent(X、)

しかし、どのように行います定義する(1,6)。ありがとう。

+0

2つのテーブルの間のカーディナリティによって、あなたが思うものを正確に定義してください。どのデザイン方法を使用しているかを教えてください。 – philipxy

+0

あなたは*述語計算*を意味しますか?これは、あなたの例題が書かれているものと、拘束が書かれていると予想されるものです。A(ドメインまたはタプル)の微積分表現は*関係*を表しますが、列のない関係を返すそのような表現は命題。 PS承認された回答の修正と簡略化を参照してください。 – philipxy

答えて

0

(あなたがあなたの質問を表明してきたように、述語計算で)あなたはこの方法でそれを表現することができます:

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

∧ 

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

ご希望の場合は、フォームの複雑な論理式と条件cardinality(set) ≤ nを書くことができます。

∀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) 

以上の簡潔な方法(@philipxyの注を参照)中:

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

あなたの最初のコードブロック( 'cardinality(rent)> 0')は、第1の接頭語で間違ってyフリーです。与えられたxは1つ以上のyを持つので、 '∀x(x∈Customers→∃y rent(x、y))'を得る。賃貸料(x、y0)∧rent(x、y1)∧rent(x、yn)→y0 = y1 ∨...(すべての可能なペア)...) '。 PSあなたは*述語計算*を与えました。これは "リレーショナル計算"が意味する質問のようです。 – philipxy

+0

@philipxy、修正済み、ありがとう! – Renzo

関連する問題