メインメニューを開く

差分

利用者:Nayuta Ito/無限データベース

1,882 バイト追加, 2021年2月22日 (月) 16:04
数学者(国内約5000人)とデータベーススペシャリスト(約2万人)の共通部分で何が起こるかのデモです
ここでは、表が無限個あるデータベースや、無限の列または行を持つ関係表について考える。また、それらを扱うための無限長のSQLについても扱う。「無限」は可算無限とは限らず、非可算無限を扱うこともある。

==正規形==
第1正規形にできるのは自明として、第2正規形にできない無限関係表とかありそう

==選択公理==
以下に選択公理と同値な命題を示す。

テーブル\( T_1, T_2, \cdots \)(非可算でもよい)が空でないとする。このとき、

SELECT COUNT(*) FROM \( T_1, T_2, \cdots \)

は1行以上のレコードを返す。

==実数==
全ての\( i \in \mathbb{N} \backslash \{ 0 \} \)に対し、次のテーブルが用意されている:

<table border="1px">
<caption>\( T_i \)</caption>
<tr bgcolor = "bisque"><td>D</td></tr>
<tr><td>\( 0 \)</td></tr>
<tr><td>\( 1 \)</td></tr>
</table>

このとき、次のSQLを実行すると、\( 0.00111\cdots = 0.01000 \cdots \)のような重複込みの\( 0 \)以上\( 1 \)以下の全ての\( 2 \)進実数が得られる:

SELECT FIRST="0.", * FROM \( T_1, T_2, \cdots \)

重複なしで取り出してみる。

SELECT FIRST="0.", * FROM \( T_1, T_2, \cdots \) WHERE NOT ((\(T_1\)=1 AND \(T_2\)=1 AND \(T_3\)=1 AND \( \cdots \)) OR (\(T_2\)=1 AND \(T_3\)=1 AND \( \cdots \)) OR (\(T_3\)=1 AND \( \cdots \)) OR \( \cdots \))

このSQLの長さはω^2である。

1/2以上1/4未満の実数だけを取り出してみる。

SELECT FIRST="0.", * FROM \( T_1, T_2, \cdots \) WHERE \(T_1\) = 1 AND \(T_2\) = 0 AND NOT ((\(T_1\)=1 AND \(T_2\)=1 AND \(T_3\)=1 AND \( \cdots \)) OR (\(T_2\)=1 AND \(T_3\)=1 AND \( \cdots \)) OR (\(T_3\)=1 AND \( \cdots \)) OR \( \cdots \))

「\(T_1\) = 1 AND \(T_2\) = 0」は無限個の無限長の条件の前後どちらに置いてもよい。
Wikiいけめん
217

回編集