「なんとなく」から卒業！データベースの仕組みを学生目線でわかりやすく解説！

https://www.pi-pe.co.jp/regist/is?SMPFORM=man-lanerf-2473a633d82734eb22aa64cad426ae23&utm_source=pup-qiita&utm_medium=contentlink&utm_campaign=/SPIRAL_internship/items/7aa334afa64b504f6e48&utm_content=link-top&f000099824=https://qiita.com/SPIRAL_internship/items/7aa334afa64b504f6e48

---

## はじめに

こんにちは！私は現在、大学生として学びながらSPIRALのインターンとして開発業務にも携わっています。
みなさんはローコード開発をご存じでしょうか？(↓詳しくはこちらへ！) 

https://qiita.com/SPIRAL_internship/items/1b5505c99fd2ec462885 

今回は、**「そもそもデータベースってなに？」** というところから、実際の開発にどう関わってくるのかを、学生目線でわかりやすく紹介していきます！
「データベースってなんとなくで使ってる……」「SQLとか聞くだけで眠くなる……」 
そんな人に向けた記事となっています！ぜひ読んでみてください！

※本記事の内容はローコード開発ツール **「SPIRAL®」** を基にしていますが、他のローコード開発ツールでも基本的な概念は同様ですのでご理解ください。

---

▼お試しはこちら

https://www.pi-pe.co.jp/regist/is?SMPFORM=man-lanerf-2473a633d82734eb22aa64cad426ae23&utm_source=pup-qiita&utm_medium=contentlink&utm_campaign=/SPIRAL_internship/items/7aa334afa64b504f6e48&utm_content=link-middle&f000099824=https://qiita.com/SPIRAL_internship/items/7aa334afa64b504f6e48

---

### 1. そもそもデータベースって何？

みなさん、 **「データベース」** って聞いて何を思い浮かべますか？ 
「なんか情報を保存する場所っぽい」そんな印象を持ってる人が多いのではないでしょうか。何を隠そうぼくも少し前までそういう印象でした。 
簡単により正確に言うと、データベースとは **「大量のデータを整理して、安全に、効率よく扱えるようにするシステム」** です！ 

**例：学生名簿で考えてみよう** 
たとえば、大学の学生名簿があるとします。
名前・学籍番号・学部・学年などの情報を持っていて、それをエクセルで管理しても、最初のうちはうまくいくかもしれません。 
でも……
- 人数が増える
- 書きこむ人によってフォーマットがバラバラになる
- 情報の更新が手作業でミスが出る

みたいなことが起きたらもう大混乱！
だからこそ、正規化された形で、検索や更新がスムーズにできる**データベース**が必要になるわけです。 

### 2. データベースの基本構造をざっくり紹介！
- テーブル
データベースで一番大きな枠組み。さっきの大学の例でいうと、「学生情報テーブル」「履修科目テーブル」のようなデータの種類ごとの入れ物。
- レコード
一人の学生の情報や、一つの履修科目の情報が詰まっている実際の一つ一つのデータ。
- フィールド
「名前」「学年」「科目名」などのさらに細かいデータの属性を決めている部分。
- 主キー
「主キーってよく聞くけどどういう意味なんだろう……」という人も多いと思います。 
簡単に説明すると、**テーブル内の各レコードを識別する**ための機能です。 
たとえば「学生情報テーブル」では、**"名前"** や **"学年"** はデータが重複する可能性があり得ますが、**"学籍番号"** は絶対に1人にしか割り当てられないので、主キーに適しています！ 

主キーの役割は： 
- レコードの特定（データの検索や更新時に便利）
- データの整合性を保存（同じデータの重複登録を防ぐ）
- 他のテーブルとの関連づけに使用（外部キーとして参照）

主キーは基本的に **"重複なし・空白なし"** となっていて、データベース設計で非常に重要な概念です！ 

### 3. リレーショナルデータベースの考え方
リレーショナルデータベースは、複数のテーブルを**関連付けて使える**タイプのデータベースです。 
例：学生と履修科目 
- 学生 テーブル：**学籍番号** / 氏名 / 学部
- 履修 テーブル：**学籍番号**/ 科目名 / 単位数

この場合共通するデータである **「学籍番号」** を使って、誰がどの科目を履修しているかを関連付けできます。これが「リレーション（関連付け）」の考え方です！ 

### 4. データベースの操作
少々専門的な知識ですが、名前はよく聞くSQLの説明をします！
「SQL（Structured Query Language）」はデータベースにアクセスする際に使う言語のことです！
例：学生名簿から学年が3の学生だけを表示 
*select * from 学生 where 学年 = 3;* 
 
**select**：データを取り出す 
**from**：どのテーブルから 
**where**：どこのデータを 

SQLはとてもシンプルな言語で、英語っぽい単語を組み合わせるだけで、データベースに操作を指示できるものとなっています！

### 5. 実際の開発でどう使われている？〜SPIRALのデータベース構造〜
ここまで、データベースの基本的な仕組みや操作方法について紹介してきましたが、「実際の現場ではどう使われているの？」と思った方もいるかもしれません。 そこで、私がインターンしているSPIRAL®というローコード開発ツールを例に、実際の開発現場で使われているデータベースの種類を紹介します。 
- 通常DB
最も基本的なDBの種類で、登録、変更、削除が行え、お問い合わせフォームを作ったり会員管理をしたりすることができます！ 
- 履歴DB
会員のアドレスやログイン認証情報などを格納するマスタDB（通常DB）に対し、マスタ情報に紐づく履歴データなどを格納するDBのことです。
例えば、「学生の情報変更履歴」などのデータが、履歴DBを活用すると扱いやすくなります！ 
- トランザクションDB
登録があったときに、別のDBに対して変更を加えられる特殊なDBで、登録、変更、削除が行えます！
例えば、セミナーの申込みがあったときにセミナー申込みDBにデータを登録させつつ、セミナーマスタDBの残席数を減算することができます。
一度の登録で、複数のDBに対して登録、変更、削除を行いたいときはトランザクションDBを活用することで効率的なDB運用が可能になります！
- 仮想DB
仮想DBで使用できるフィルタ型、連携型、集合型は実際には登録データはなく、担当者が使いやすいように表示方法などを変更できるDBとなっています！
- STOPDB
STOP DBはメール配信の際に使用でき、このDBに登録されているメールアドレスには配信を行わないようにできます！

## まとめ！
データベースは、ただ情報を保存するだけでなく、整理・検索・更新を効率よく行うための大事な仕組みです！ 
テーブルや主キーといった基本を押さえれば、扱いやすさがぐっと上がります。**リレーショナルデータベース**や**SQL**の考え方を知ることで、データ同士のつながりや操作の流れも見えてきます。SPIRAL®のようなツールでは、用途に応じたさまざまなDBが用意されていて、実際の開発にも直結しています。難しそうに見えても、仕組みがわかれば意外と身近に感じられるはずです！




最後までお読みいただき、ありがとうございました。



---

私がインターンしているスパイラル株式会社は、ローコードプラットフォーム、SPIRAL ver.1の**トライアルアカウント**を**無償提供**しています。このアカウントの記事でも紹介するように、たくさんの機能ございます。 
  
▶︎ フォーム 
▶︎ 認証エリア 
▶︎ ログイン 
▶︎ メール送信 
▶︎ カスタムプログラム 
  
などの作成できますので、ぜひ試してみてください!! 
  
https://www.pi-pe.co.jp/regist/is?SMPFORM=man-lanerf-2473a633d82734eb22aa64cad426ae23&utm_source=pup-qiita&utm_medium=contentlink&utm_campaign=/SPIRAL_internship/items/7aa334afa64b504f6e48&utm_content=link-bottom&f000099824=https://qiita.com/SPIRAL_internship/items/7aa334afa64b504f6e48
  
そして、今チームでトライアル登録者向けに、オンボーディングコンテンツを作成しています。**SPIRAL ver.1**にご興味のある方、ぜひこちらもご覧ください👇 
  
https://knowledge.spirers.jp/special/detail/11680