タグ付けされた質問 「database-theory」

6
データベース計算でのグループ、モノイド、およびリングの使用法は何ですか?
Twitterのような会社が、グループ、モノイド、リングなどの代数的概念に興味を持つのはなぜですか?github:twitter / algebirdでリポジトリを参照してください。 私が見つけることができたのは: Bloom filter、HyperLogLog、CountMinSketchなどの興味深い近似アルゴリズムのためのモノイドの実装。これらにより、これらの洗練された操作を数字のように考え、それらをhadoopまたはオンラインで加算して、強力な統計および分析を生成できます。 そしてGitHubページの別の部分で: もともとは行列がの要素である値だった火傷のマトリックスAPIの一部として開発されました モノイド、グループ、またはリングを。その後、Scalding内やTwitter内の他のプロジェクトで、コードの適用範囲が広がったことは明らかでした。 この広範なアプリケーションは何でしょうか?ツイッター内で、一般的な関心のために? データベースの構成集合体はモノイドのような構造を持っているようです。 Quoraに関する同じ質問:抽象代数(代数付き)に対するTwitterの関心は何ですか? 私は数学のバックグラウンドを持っていますが、コンピューター科学者ではありません。モノイドとセミグループを「現実世界」で使用するのは素晴らしいことです。これらは通常、役に立たない理論的構成要素と見なされ、多くの抽象的な代数コースで無視されます(興味深いことは何もありません)。

3
サブクエリは、SQLクエリに表現力を追加しますか?
SQLにはサブクエリが必要ですか? 関係データベース用の構造化照会言語の十分に一般化された実装を想像してください。正規のSQL SELECTステートメントの構造は、これが意味をなすために実際に非常に重要なので、リレーショナル代数に直接アピールしませんが、式の形式に適切な制限を加えることで、これらの用語でこれを組み立てることができます。 SQLのSELECTクエリは、一般的に投影(から成るSELECT部分)のいくつかの数JOINの操作(JOINパート)、いくつかの数SELECTION の操作(SQLにおいて、WHERE句)、セット単位(操作UNION、EXCEPT、INTERSECT、など)、他の続きますSQL SELECTクエリ。 結合されるテーブルは、式の計算結果にすることができます。言い換えると、次のようなステートメントを作成できます。 SELECT t1.name, t2.address FROM table1 AS t1 JOIN (SELECT id, address FROM table2 AS t3 WHERE t3.id = t1.id) AS t2 WHERE t1.salary > 50,000; SQLクエリの一部として計算テーブルをサブクエリとして使用することに言及します。上記の例では、2番目の(インデントされた)SELECTサブクエリです。 すべてのSQLクエリは、サブクエリを使用しないように記述できますか?上記の例は次のことができます。 SELECT t1.name, t2.address FROM table1 AS t1 JOIN table2 AS t2 ON t1.id = t2.id WHERE …

6
要素の繰り返しなしでペアのセットから組み合わせを生成する
ペアのセットがあります。各ペアの形式は(x、y)で、x、yは範囲の整数に属します[0,n)。 したがって、nが4の場合、次のペアがあります。 (0,1) (0,2) (0,3) (1,2) (1,3) (2,3) 私はすでにペアを持っています。次に、n/2整数が繰り返されないようにペアを使用して組み合わせを作成する必要があります(つまり、各整数は最終的な組み合わせで少なくとも1回出現します)。理解を深めるための正しい組み合わせと間違った組み合わせの例を次に示します 1. (0,1)(1,2) [Invalid as 3 does not occur anywhere] 2. (0,2)(1,3) [Correct] 3. (1,3)(0,2) [Same as 2] ペアができたら、可能性のあるすべての組み合わせを生成する方法を誰かが提案できますか?

3
キャプチャするSQLの拡張
Immermanによると、SQLクエリに関連付けられた複雑度クラスは、(一次クエリとカウント演算子)の安全なクエリのクラスです。SQLは安全なクエリをキャプチャします。(換言すれば、すべてのSQLクエリはで複雑性を有する、そして内のすべての問題 SQLクエリとして表現することができます。)Q (F O (C O U N T ))Q (F O (C O U N T )))Q (F O (C O U N T ))Q(FO(COUNT))\mathsf{Q(FO(COUNT))}Q (F O (C O U N T ))Q(FO(COUNT))\mathsf{Q(FO(COUNT))}Q (F O (C O U N T ))Q(FO(COUNT))\mathsf{Q(FO(COUNT))} この結果に基づいて、理論的な観点から、効率的に解決できるがSQLでは表現できない興味深い問題が数多くあります。したがって、まだ効率的なSQLの拡張は興味深いようです。だからここに私の質問があります: をキャプチャするSQLの拡張機能(業界で実装および使用)があり(つまり、すべての多項式時間の計算可能なクエリを表現でき、他のクエリは表現できません)。PP\mathsf{P} 3つの条件をすべて満たすデータベースクエリ言語が必要です。SQLを拡張してをキャプチャする拡張機能を定義するのは簡単です。しかし私の質問は、そのような言語が実際的な観点から理にかなっているかどうかであるので、実際に使用されている言語が欲しいです。これが当てはまらず、そのような言語がない場合、実用的な観点からそのような言語を面白くしない理由があるかどうかを知りたいですか?たとえば、実際に発生するクエリは、通常、そのような言語を必要としないほど単純ですか?PP\mathsf{P}

2
「差分」操作は、「結合」をすでに含むクエリ言語に表現力を追加しますか?
集合差演算子(たとえば、EXCEPT一部のSQLバリアント)は、関係代数の多くの基本的な演算子の1つです。ただし、差集合演算子を直接サポートしていないデータベースもありますがLEFT JOIN(外部結合の一種)、実際には同じ効果を得るために差集合操作の代わりにこれを使用できます。 これは、LEFT JOIN演算子が維持されている限り、クエリ言語の表現力が集合差演算子がなくても同じであることを意味しますか?この事実をどのように証明しますか?

1
Coddのリダクションアルゴリズムについて
Coddのアルゴリズムは、タプル関係計算の式を関係代数に変換します。 アルゴリズムの標準実装はありますか? このアルゴリズムはどこでも使用されていますか?(業界ではSQLとバリアントのみが必要なようです。学界のデータベース理論家についてはわかりません。) 削減の複雑さは何ですか? これは1年以上前にSOに投稿されましたが、良い答えを受け取りませんでした。

1
結合は並列化できますか?
述語で2つの関係を結合したいとします。これはNCですか? NCにないことの証明はであることの証明になると私は理解しているので、それが未解決の問題であるという証拠を答えとして受け入れます。P≠ NCP≠NCP\not=NC 一般的なケースだけでなく、特定のケースにも興味があります(たとえば、並列化できる特定のデータ構造がある場合)。 編集:コメントからこの投稿にいくつかの明確化をもたらすために: 等結合検討できます。X = B 。y。シングルプロセッサでは、ハッシュベースのアルゴリズムはO (| A | + | B |)で実行され、これは各セットを読み取る必要があるため、私たちができる最善の方法です。A 。X = B 。yA.x=B.yA.x = B.yO (| A | + | B |)O(|A|+|B|)O(|A|+|B|) 述語が各ペアをチェックする必要がある「ブラックボックス」である場合、ペアであり、それぞれが中にあるかどうかにかかわらず、2 a b可能性があります。各ペアをチェックすると、可能性が半分に分割されます。そのため、私たちにできる最善のことはO (a b )です。| A | ⋅ | B ||A|⋅|B||A|\cdot|B|2a b2ab2^{ab}O (a b )O(ab)O(ab) logknlogk⁡n\log^k n

3
この主キーの定義はどういう意味ですか?
私の教科書では、リレーショナルデータベースの主キーの次の定義を説明していますが、完全には理解していません。助けをいただければ幸いです。 ましょ関係すること。次に、Rの主キーは、次の2つのプロパティを満たすの属性セットのサブセット、たとえばです。RRRRRRRRRKKK 一意性プロパティ: 2つの異なるタプルがに対して同じ値を持つことはありません。RRRKKK 不可逆性プロパティ:適切なサブセットに一意性プロパティはありません。KKK Irreducibilityプロパティに迷っています。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.