メインメニューを開く

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

< 利用者:Nayuta Ito
2021年2月22日 (月) 16:04時点におけるNayuta Ito (トーク | 投稿記録)による版 (数学者(国内約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 \} \)に対し、次のテーブルが用意されている:

\( T_i \)
D
\( 0 \)
\( 1 \)

このとき、次の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」は無限個の無限長の条件の前後どちらに置いてもよい。