【初心者向け】Spring BootによるWebアプリ開発ハンズオン ~Step2:データベース構築~

1. はじめに

本シリーズではSpring Boot3を用いてWebアプリの開発する方法をご紹介していきます。ひととおり実践して基礎を理解してもらえれば、自分が作りたいWebアプリを開発することができると思いますので、ぜひ挑戦してみてもらえると嬉しいです。下記のStep1の環境構築から続いて、Step2としてPostgresデータベースの構築手順について紹介していきます。
【Java】Spring Boot 3によるWebアプリ開発入門 ~Step1:環境構築~

2. Postgresインストール

下記サイトからご自身の環境に適したインストーラをダウンロードして下さい。今回はPostgres 15.6、およびWindows x86-64のインストーラをダウンロードしています。
https://www.enterprisedb.com/downloads/postgres-postgresql-downloads

ダウンロードしたインストらーを実行します。下図のようなSetup画面が出てくるので「Next」を押下します。

インストール先ディレクトリを指定して「Next」を押下します。

Postgresを起動するポート番号を指定します。特にこだわりなければデフォルトの5432で問題ありません。
「Next」を押下します。

続いてロケール設定となります。ロケールとは、データベース内での文字列の比較やソート、日付や時刻の書式化などの操作に影響を与える地域や言語の設定となります。特定の言語や設定に影響を受けないようにっここでは「C」を指定して「Next」を押下します。

「Next」を押下します。

「Next」を押下します。

しばらく待ってください。

インストールが完了したら「Finish」を押下します。

3. Postgresデータベース接続

pgAdminというデータベース操作が簡単にできるツールが一緒にインストールされていますので起動してみて下さい。

少し起動に時間がかかるので少々お待ちください。

下図のような画面が開かれますので、左側の「Servers」を開きます。

Serversの下にPostgreSQL 15がありますのでこちらをクリックしてください。

インストール時に指定したpostgresユーザ向けのパスワードを記入します。

下図のようにダッシュボードが開かれたらインストールしたPostgreSQL 15への接続は成功しています。

5. データベース&テーブル作成

続いてWebアプリから接続するデータベースおよびテーブルを作成してきましょう。
「PostgreSQL 15」を右クリックして、Create > Databaseをクリックします。

特別な要件がなければ、Database名を入力して「Save」ボタンを押下します。今回はデータベース「quiz」を作成しています。

下図のようにデータベース「quiz」に関する情報が表示されたら成功です。

続いてデータベース「quiz」にテーブルを作成していきます。今回作成するテーブルは下記の4つです。

quiz(クイズテーブル)
quizidを主キーとしてクイズ、クイズのカテゴリ、選択肢、解答、解説を格納します。また、ステータスという項目でクイズの完了/未完了を切り替えられるようにしています。ユーザごとにステータスを持たせる形としているので、useridも項目として追加しています。

users(ユーザテーブル)
ユーザごとにクイズのステータスを表示させたいので、useridを指定してユーザに関する情報を登録します。ユーザ登録すると自動的にこのテーブルにレコードがInsertされる挙動にします。ユーザ名でユーザを一意に特定するので、UNIQUE制約を付与しています。

roles(ロールテーブル)
ユーザがログインした後、権限に応じて表示させる内容を変えるためにロールを作成します。roleidを主キーにしてrolenameを指定します。

users_roles(ユーザ/ロール中間テーブル)
ユーザIDとロールIDを紐づけるテーブルを作成します。


続いて、実際にテーブルを作成していきます。データベース「quiz」を右クリックして「Query Tool」を選択してみて下さい。

Queryのボックスの中にSQL文を記入して実行します。
一例として、quizテーブルのSQL文の例を下記に記載します。idについては重複せずにカウントアップしていく形としたいのでserial型を指定しています。それ以外はvarchar型、Integer型をしています。

CREATE TABLE quiz (
    quizid SERIAL NOT NULL,
    userid integer NOT NULL,
    quiz varchar(255),
    category varchar(255),
    option1 varchar(255),
    option2 varchar(255),
    option3 varchar(255),
    option4 varchar(255),
    answer integer,
    explain varchar(1000),
    status varchar(255),
    PRIMARY KEY (quizid)
);

Messagesタブに下記のようなメッセージが出力されていれば成功しています。

続いてサンプルデータを挿入してみましょう。下記のようなINSERT文を実行してみて下さい。

INSERT INTO quiz VALUES(
	default,
	1,
	'Linuxのシステムに関する一般的なログファイル名は?',
	'Linux',
	'/var/log/logs',
	'/var/log/messages',
	'/var/log/maillog',
	'/var/log/spooler',
	1,
	'/var/log/messagesは、UnixおよびUnix系オペレーティングシステム(例えばLinux)で使用される標準的なログファイルの一つです。このファイルはシステムやアプリケーションからの重要なメッセージやイベントを記録するために使用されます。',
	'未完了');

SELECT文でINSERTしたレコードが表示されれば成功です!

SELECT * FROM quiz;

そのほかのテーブルについてのDDLも記載しておきます。

create TABLE users (
    userid integer NOT NULL,
    username varchar(255) NOT NULL UNIQUE,
    password varchar(255) NOT NULL,
    primary key (userid)
);

create TABLE roles (
    roleid SERIAL NOT NULL,
    rolename varchar(255) NOT NULL,
    primary key (roleid)
);

create TABLE users_roles (
    user_id integer NOT NULL,
    role_id integer NOT NULL
);

5. まとめ

Postgresデータベースのインストール、データベースおよびテーブル作成について記載しました。次のStep3では、いよいよJavaアプリ作成についてご紹介しますので、引き続き見てもらえると嬉しいです。
【Java】Spring Bootによるクイズアプリ開発 ~Step3:クイズアプリ実装~

コメント