「利用者:Nayuta Ito/プロジェクト・SQL」の版間の差分
Nayuta Ito (トーク | 投稿記録) 細 |
Nayuta Ito (トーク | 投稿記録) (星野源が解読を諦めるレベル) |
||
6行目: | 6行目: | ||
==定数記号== | ==定数記号== | ||
NULLと呼ばれる特殊な定数記号が必要である。これはZFCの外に存在する必要はなく、空集合などで代用できる。この記事では、NULL={}を仮定するが、必ずしもそうである必要はない。 | NULLと呼ばれる特殊な定数記号が必要である。これはZFCの外に存在する必要はなく、空集合などで代用できる。この記事では、NULL={}を仮定するが、必ずしもそうである必要はない。 | ||
+ | |||
+ | ==文字列== | ||
+ | 文字とは、\( 32 \)以上\( 127 \)以下の整数のことである。また、[http://www9.plala.or.jp/sgwr-t/c_sub/ascii.html この表]の対応によって実際の文字と整数とを同じように扱う。すなわち、文字「0」は\( 32 \)を意味し、文字「R」は\( 82 \)を意味する。 | ||
+ | |||
+ | 文字全体の集合を\( \mathbb{C^*} \)とする。とくに、\( \mathbb{C^*} \)と\( [48, 57] \cup [65, 90] \cup [97, 122] \)との共通部分を\( \mathbb{C} \)とする。SQLで複素数が出てくることはないので、複素数と記号が被る心配はない。 | ||
+ | |||
+ | \( 1 \)文字以上の有限の文字の列を文字列と呼ぶ。'''空列は文字列ではない。'''例えば、「R*」という文字列は\( 82, 42 \)という数列であり、「Hello, World」という文字列は\( 72, 101, 108, 108, 111, 44, 32, 87, 111, 114, 108, 100 \)という数列である。 | ||
+ | |||
+ | 文字列全体の集合を\( \mathbb{S^*} \)で表す。また、元が全て\( \mathbb{C} \)の元であるような文字列全体の集合を\( \mathbb{S} \)で表す。SQLで十六元数が出てくることはないので、十六元数と記号が被る心配はない。 | ||
==関係データベース== | ==関係データベース== | ||
− | '''関係データベース'''(リレーショナルデータベース、relational database、RDB) | + | # '''関係データベース'''(リレーショナルデータベース、relational database、RDB)とは、\( 0 \)個以上の関係表からなる集合である。ただし、 |
− | + | ## '''関係表'''とは、組\( \langle N, R \rangle \)である。ただし、 | |
− | + | ### \( N \)は\( \mathbb{S} \)の元である。表の名前を意味する。 | |
+ | ### \( R \)は表の本体であり、組\( \langle S, D \rangle \)からなる。ただし、 | ||
+ | #### \( S = \{ S_1, \cdots, S_n\} \)は'''関係スキーマ'''と呼ばれる\( \mathbb{S} \)の空でない有限部分集合である(たぶん無限でもよいが、一応有限を想定する)。 | ||
+ | #### \( D \)は\( 0 \)個以上の'''タプル'''の集合である。ただし、 | ||
+ | ##### タプルとは、\( \{ (S_1, T_1), \cdots, (S_n, T_n) \} \)の形の集合である。 | ||
==SQL== | ==SQL== |
2021年2月18日 (木) 13:35時点における版
この記事では、SQLのインタプリタをZFCで実装する。ZFCはC言語の亜種ではない。
導入
SQLは関係データベースと呼ばれる非常に複雑な集合に対して定義される非常に複雑な演算子である。SQLは演算子であるにもかかわらず、その記法があまりにも複雑であるため、Search Query Languageと呼ばれることもある。
定数記号
NULLと呼ばれる特殊な定数記号が必要である。これはZFCの外に存在する必要はなく、空集合などで代用できる。この記事では、NULL={}を仮定するが、必ずしもそうである必要はない。
文字列
文字とは、\( 32 \)以上\( 127 \)以下の整数のことである。また、この表の対応によって実際の文字と整数とを同じように扱う。すなわち、文字「0」は\( 32 \)を意味し、文字「R」は\( 82 \)を意味する。
文字全体の集合を\( \mathbb{C^*} \)とする。とくに、\( \mathbb{C^*} \)と\( [48, 57] \cup [65, 90] \cup [97, 122] \)との共通部分を\( \mathbb{C} \)とする。SQLで複素数が出てくることはないので、複素数と記号が被る心配はない。
\( 1 \)文字以上の有限の文字の列を文字列と呼ぶ。空列は文字列ではない。例えば、「R*」という文字列は\( 82, 42 \)という数列であり、「Hello, World」という文字列は\( 72, 101, 108, 108, 111, 44, 32, 87, 111, 114, 108, 100 \)という数列である。
文字列全体の集合を\( \mathbb{S^*} \)で表す。また、元が全て\( \mathbb{C} \)の元であるような文字列全体の集合を\( \mathbb{S} \)で表す。SQLで十六元数が出てくることはないので、十六元数と記号が被る心配はない。
関係データベース
- 関係データベース(リレーショナルデータベース、relational database、RDB)とは、\( 0 \)個以上の関係表からなる集合である。ただし、
- 関係表とは、組\( \langle N, R \rangle \)である。ただし、
- \( N \)は\( \mathbb{S} \)の元である。表の名前を意味する。
- \( R \)は表の本体であり、組\( \langle S, D \rangle \)からなる。ただし、
- \( S = \{ S_1, \cdots, S_n\} \)は関係スキーマと呼ばれる\( \mathbb{S} \)の空でない有限部分集合である(たぶん無限でもよいが、一応有限を想定する)。
- \( D \)は\( 0 \)個以上のタプルの集合である。ただし、
- タプルとは、\( \{ (S_1, T_1), \cdots, (S_n, T_n) \} \)の形の集合である。
- 関係表とは、組\( \langle N, R \rangle \)である。ただし、
SQL
結論
SQLとは、以下のように定義される演算子である:
[ここにとんでもなく複雑かつ難解でifやforを連打することによりデータベースエンジニア、数学者だけでなくプログラマにも理解できないであろう論理記号の列および番号付きリストを悪用した複雑な制御構造を挿入]