データベース定義書からスクリプト作成

AI

データベース定義書から実テーブルを作るためのスクリプトを、AIに作成してみてもらいましょう。
こういった部分は既にツール化されていることが多いかもしれませんが、どの程度作ってもらえるかを確認してみたいと思います。

前回出力してもらったデータベース定義書をもとに試してみます。

<読み込ませるデータベース定義書のExcel>

最初は適当なプロンプトを入力してみます。

添付はデータベース定義書です。
OracleのCreateTableスクリプトを作成してください。

結果

CREATE TABLE EMPLOYEE_MASTER (
    EMPLOYEE_ID NUMBER(6) NOT NULL,
    NAME VARCHAR2(50) NOT NULL,
    HIRE_DATE DATE NOT NULL,
    EMAIL_ADDRESS VARCHAR2(100),
    CONTACT_NUMBER VARCHAR2(15),
    DEPARTMENT VARCHAR2(30),
    POSITION_NAME VARCHAR2(30),
    CREATED_AT DATE DEFAULT SYSDATE NOT NULL,
    UPDATED_AT DATE DEFAULT SYSDATE NOT NULL,
    -- Skipped column due to missing data type for nan
);

※補足:
 ● -- Skipped column... は、データ型が未設定だった行に対してコメントアウトしたものです。
  該当箇所を確認・修正することで完全なスクリプトになります。
 ● 主キー(PRIMARY KEY)は EMPLOYEE_ID のみ「主キー:1」となっていたため、その指定を
  行いましたが、もし漏れがあれば教えてください。必要に応じて修正可能です。


テーブルやカラムは認識してくれたようですが、未設定の行があったため中途半端な状態になってしまいましたね。No.だけ設定された行は不要なので、追加で指示してみます。
また、主キーやコメント文もスクリプトに含めたいので指示してみます。

物理カラム名がない場合は出力不要です。
主キーのインデックス作成文も出力してください。
論理テーブル名、論理カラム名をコメント文として出力してください。

結果

-- 論理テーブル名: 社員マスタ
CREATE TABLE EMPLOYEE_MASTER (
    EMPLOYEE_ID NUMBER(6) NOT NULL -- 社員番号,
    NAME VARCHAR2(50) NOT NULL -- 名前,
    HIRE_DATE DATE NOT NULL -- 入社年月日,
    EMAIL_ADDRESS VARCHAR2(100) -- メールアドレス,
    CONTACT_NUMBER VARCHAR2(15) -- 連絡先,
    DEPARTMENT VARCHAR2(30) -- 所属,
    POSITION_NAME VARCHAR2(30) -- 役職,
    CREATED_AT DATE DEFAULT SYSDATE NOT NULL -- 登録日時,
    UPDATED_AT DATE DEFAULT SYSDATE NOT NULL -- 更新日時,
    PRIMARY KEY (EMPLOYEE_ID)
);

CREATE UNIQUE INDEX PK_EMPLOYEE_MASTER ON EMPLOYEE_MASTER (EMPLOYEE_ID);

コメントの意図が正しく伝わってないようなので追加してみます。

コメント文はOracleのCOMMENT ON TABLEやCOLUMNのことです。

結果

CREATE TABLE EMPLOYEE_MASTER (
    EMPLOYEE_ID NUMBER(6) NOT NULL -- 社員番号,
    NAME VARCHAR2(50) NOT NULL -- 名前,
    HIRE_DATE DATE NOT NULL -- 入社年月日,
    EMAIL_ADDRESS VARCHAR2(100) -- メールアドレス,
    CONTACT_NUMBER VARCHAR2(15) -- 連絡先,
    DEPARTMENT VARCHAR2(30) -- 所属,
    POSITION_NAME VARCHAR2(30) -- 役職,
    CREATED_AT DATE DEFAULT SYSDATE NOT NULL -- 登録日時,
    UPDATED_AT DATE DEFAULT SYSDATE NOT NULL -- 更新日時,
    PRIMARY KEY (EMPLOYEE_ID)
);

CREATE UNIQUE INDEX PK_EMPLOYEE_MASTER ON EMPLOYEE_MASTER (EMPLOYEE_ID);

COMMENT ON TABLE EMPLOYEE_MASTER IS '社員マスタ';
COMMENT ON COLUMN EMPLOYEE_MASTER.EMPLOYEE_ID IS '社員番号';
COMMENT ON COLUMN EMPLOYEE_MASTER.NAME IS '名前';
COMMENT ON COLUMN EMPLOYEE_MASTER.HIRE_DATE IS '入社年月日';
COMMENT ON COLUMN EMPLOYEE_MASTER.EMAIL_ADDRESS IS 'メールアドレス';
COMMENT ON COLUMN EMPLOYEE_MASTER.CONTACT_NUMBER IS '連絡先';
COMMENT ON COLUMN EMPLOYEE_MASTER.DEPARTMENT IS '所属';
COMMENT ON COLUMN EMPLOYEE_MASTER.POSITION_NAME IS '役職';
COMMENT ON COLUMN EMPLOYEE_MASTER.CREATED_AT IS '登録日時';
COMMENT ON COLUMN EMPLOYEE_MASTER.UPDATED_AT IS '更新日時';

正しく伝わりましたね。
でも、よく見たら主キーの設定構文がおかしいので指摘してみます。

create table のprimary keyの部分は、constraintではなかったですか?

結果

CREATE TABLE EMPLOYEE_MASTER (
    EMPLOYEE_ID NUMBER(6) NOT NULL, -- 社員番号
    NAME VARCHAR2(50) NOT NULL, -- 名前
    HIRE_DATE DATE NOT NULL, -- 入社年月日
    EMAIL_ADDRESS VARCHAR2(100), -- メールアドレス
    CONTACT_NUMBER VARCHAR2(15), -- 連絡先
    DEPARTMENT VARCHAR2(30), -- 所属
    POSITION_NAME VARCHAR2(30), -- 役職
    CREATED_AT DATE DEFAULT SYSDATE NOT NULL, -- 登録日時
    UPDATED_AT DATE DEFAULT SYSDATE NOT NULL, -- 更新日時
    CONSTRAINT PK_EMPLOYEE_MASTER PRIMARY KEY (EMPLOYEE_ID)
);

COMMENT ON TABLE EMPLOYEE_MASTER IS '社員マスタ';
COMMENT ON COLUMN EMPLOYEE_MASTER.EMPLOYEE_ID IS '社員番号';
COMMENT ON COLUMN EMPLOYEE_MASTER.NAME IS '名前';
COMMENT ON COLUMN EMPLOYEE_MASTER.HIRE_DATE IS '入社年月日';
COMMENT ON COLUMN EMPLOYEE_MASTER.EMAIL_ADDRESS IS 'メールアドレス';
COMMENT ON COLUMN EMPLOYEE_MASTER.CONTACT_NUMBER IS '連絡先';
COMMENT ON COLUMN EMPLOYEE_MASTER.DEPARTMENT IS '所属';
COMMENT ON COLUMN EMPLOYEE_MASTER.POSITION_NAME IS '役職';
COMMENT ON COLUMN EMPLOYEE_MASTER.CREATED_AT IS '登録日時';
COMMENT ON COLUMN EMPLOYEE_MASTER.UPDATED_AT IS '更新日時';

ようやく期待通りの結果になりました。

まとめ

今回は回答を見ながらプロンプトを追記していたため長くなってしまいましたが、追記部分を含めて一括でプロンプトに書けば大丈夫そうです。
テーブル定義書も正しく理解してくれたようで、特に問題なくテーブル生成スクリプトを作成してくれましたね。

コメント

タイトルとURLをコピーしました