DB構築の続きを、ちょっとやってみようかな、と。
設計って実務ではやったことないんですけど、うまいことやるのは難しそうですね。
どういうシステムを作るのか、どういう機能があればいいのか、を設計の段階で詳しく詰めないといけませんからね。
DB構築に限った話ではないんですが、詳細までしっかり決まって設計書を作り、その設計書が一度も変更にならない。
そういうことってあるんですかね?
私が携わったシステムは、コーディング中、さらにはテスト中の仕様変更なんてのもザラでした。
前回、データベース名を"akb48g"と作りましたので、それにちなんだDBを構成しようかと。
このデータベース名のことを、インスタンスなんて呼んだりもするそうです。
メンバーの情報を呼び出せるようなDBを構築してみようかと。
というわけで、必要なテーブル項目をば。
メンバーID
氏名
誕生日
身長
血液型
加入日
期
昇格日
所属チーム1
所属チーム2
卒業・脱退日
所属事務所
こんなところでしょうかね。
ぱっと見て、わからないところはありますでしょうか。
メンバーIDとは、管理を楽にするためにつけるID番号です。
所属チームが2つあるのは、兼任組を考慮した結果です。
テーブルを作るのは、CREATE文ですね。
一つのデータベースに、複数のテーブルを作ることができます。
CREATE TABLE Member
(member_id INTEGER NOT NULL,
name VARCHAR(20) NOT NULL,
birthday DATE ,
heigh DECIMAL ,
blood_type VARCHAR(2) ,
kanyu_bi DATE NOT NULL,
ki DECIMAL NOT NULL,
shokaku_bi DATE ,
team1 INTEGER NOT NULL,
team2 INTEGER ,
sotsugyo_bi DATE ,
jimusho VARCHAR(50) ,
PRIMARY KEY (member_id));
はい、このようなCREATE TABLE文ができます。
大文字小文字は、どうでもいいんですけどね。
CREATE TABLE Member
の箇所で、テーブル名を宣言しています。
「これから"Member"という名前のテーブルを作ります」という意味です。
その下にカッコで括って、テーブルの設定を定義していきます。
一番左に書いてあるものが、列です。カラム、とも言います。
Excelで例えれば、アルファベットで表示されているものです。
これには任意の名前を付けることができます。
一部、付けられない名称もありますけれども。
アルファベットの世界なので、一般的には英語で命名しますが、
英語がわからなかったらローマ字でさくっとつけてしまいましょう。
次にある、INTEGERとか、DATEとかいうのは、データ型です。
たとえばINTEGER型を指定しているカラムには、整数のデータしか入れることができません。
DATE型には、日付(年月日)を入れる。
といった具合です。(業務で使っているOracleは、確か時分秒まで入った気がする)
上の例で使っているのは、あとVARCHARとDECIMALですね。
VARCHARは、「ヴァーキャラ」と読みまして、可変長文字列を入れることができます。
……ついつい「ヴァーチャル」って言っちゃいがちですが。
VARCHAR(20)といったように、かっこで数字を指定してやります。
この数字は最大文字列を表していまして、この場合だとこのカラムには20文字まで入れることができる、といった意味になります。
Oracleだと、VARCHAR型でなく、VARCHAR2型というのを使いますけどね。
最後にDECIMAL。
これは小数を入れるデータ型です。INTEGERには整数しか入れられませんので。
他にもデータ型はいろいろありますが。
ひとまずはこの辺で。
右に"NOT NULL"とか書いてあったり書いてなかったりするのは、これは「データがない状態を許容するかどうか」です。
nullはヌルと読みます(人によってはナルと読むらしい)。データがない状態のこと。
プログラムではどんな言語でもよく聞く言葉で、「ぬるぽ」の語源にも一役買っているそうですよ。
それは私はあまり詳しくないんですけれども。
NOT NULLと書いてある列には、データを登録する際に、そのカラムをデータなしにできない、ということです。
名前なんかは必ずほしいですからね。NOT NULLという制約をかけています。
誕生日なんかは、ひょっとしたら分からない場合もあるかもしれないので、データが入れられない可能性があるところには、制約を掛けません。
一つのカラムを指定したら、カンマで区切ってください。
そして最後の行。
PRIMARY KEY (member_id)
と書いています。
これはプライマリキー(もしくは主キー)といいまして、一意性を保つためにカラムを指定しています。
私はこう教わったんですけど、DBについて何も知らない人間が、この説明で理解できるのか、って話ですよ。
簡単に言ってしまえば、プライマリキーに指定したカラムは、データが重複してはいけない、ということです。
テーブルを作ったら、行(レコード)を登録(挿入)していくのですが、同じメンバーIDを持っている行は、入れられないようにする、ということです。
入れようとしたらエラーになります。
では、作ってみます。
akb48g=#
というところに、一気に入力していきます。

セミコロンが命令の終わりを意味していますので、それまでは改行しても構いません。
最後まで入力して改行すると、このような表示が出ます。
CREATE TABLEと表示されたら、テーブルの作成に成功した、という意味です。
うまくいかなかったら、必ずERRORと出るはずですので。
ちなみにデータを呼び出すには、SELECT文を使います。
SELECT * FROM Member;

SELECT文の書き方は、またいずれ。
(0行)と表示されました。
これはまだデータが登録されていないからですね。
けれどこれで、テーブルが作られている、ということは確認できました。
では次回は、データを挿入してみましょう。
時間のある時に。
……別に勉強のためにこのブログ見てる、って人はいなさそうですけどね。
