株式会社光翼では、DX推進のコンサルティングを行っております。
今日は、ChatGPT と Google Bard の結果比較をシステム開発における「企業会員サイトの企業マスタのテーブル設計出力から、DBML出力まで」を例に比較してみたいと思います。
今回は、Google Bard の場合を記載します。
ChatGPT の場合は、「ChatGPT と Google Bard の結果比較(テーブル設計からDBML出力ーChatGPT の場合)」をご覧ください。
投入したプロンプト
■プロンプト① 企業会員サイトの企業マスタのテーブル定義を教えてください。 ■プロンプト② 上記テーブル定義に、日本標準産業分類コードを追加してください。そして、create文も示してください。 ■プロンプト③ 下記の産業分類マスタ(Industry_Master)の create文を教えてください。 --- NO カラム和名 カラム名 データ型 主キー Not Null 1 大分類コード major_code VARCHAR(1) 〇 〇 2 中分類コード middle_code VARCHAR(2) 〇 〇 3 小分類コード minor_code VARCHAR(3) 〇 〇 4 細分類コード sub_code VARCHAR(4) 〇 〇 5 コード jisic_code VARCHAR(10) 〇 6 項目名 name VARCHAR(255) 〇 7 レコード作成日時 created_at TIMESTAMP 〇 8 最終更新日時 updated_at TIMESTAMP 〇 ■プロンプト④ 次のスキーマをDBMLに変換してください。但し、プライマリーキーは、PK ではなく、「primary key」 と表記してください。 また、「NotNull」の表記は、省略してください。 --- CREATE TABLE company_master ( company_id INT NOT NULL AUTO_INCREMENT, company_name VARCHAR(255) NOT NULL, company_category VARCHAR(255) NOT NULL, representative_name VARCHAR(255) NOT NULL, phone_number VARCHAR(255) NOT NULL, email_address VARCHAR(255) NOT NULL, address VARCHAR(255) NOT NULL, establishment_date DATE NOT NULL, capital VARCHAR(255) NOT NULL, employee_number INT NOT NULL, sales_amount INT NOT NULL, business_contents VARCHAR(255) NOT NULL, homepage_url VARCHAR(255) NOT NULL, jisic_code VARCHAR(255) NOT NULL, PRIMARY KEY (company_id) ); CREATE TABLE industry_master ( major_code VARCHAR(1) NOT NULL, middle_code VARCHAR(2) NOT NULL, minor_code VARCHAR(3) NOT NULL, sub_code VARCHAR(4) NOT NULL, jisic_code VARCHAR(10) NOT NULL, name VARCHAR(255) NOT NULL, created_at TIMESTAMP NOT NULL, updated_at TIMESTAMP NOT NULL, PRIMARY KEY (major_code, middle_code, minor_code, sub_code) );
Google Bard の結果
■プロンプト①
企業会員サイトの企業マスタのテーブル定義を教えてください。
企業会員サイトの企業マスタのテーブル定義は、以下のとおりです。
項目 データ型 説明 企業ID 整数型 企業を識別するID 企業名 文字列型 企業の名称 企業カテゴリ 文字列型 企業の業種や分野 代表者名 文字列型 企業の代表者の氏名 電話番号 文字列型 企業の電話番号 メールアドレス 文字列型 企業のメールアドレス 住所 文字列型 企業の住所 設立年月日 日付型 企業の設立年月日 資本金 数値型 企業の資本金 従業員数 数値型 企業の従業員数 売上高 数値型 企業の売上高 事業内容 文字列型 企業の事業内容 ホームページURL 文字列型 企業のホームページのURL このテーブルは、企業会員サイトに登録する企業の情報を管理するために使用されます。企業IDは、企業を識別するための主キーです。企業名、企業カテゴリ、代表者名、電話番号、メールアドレス、住所、設立年月日、資本金、従業員数、売上高、事業内容、ホームページURLは、企業に関する基本的な情報を保持します。
このテーブルの具体的な利用方法としては、以下のようなものが挙げられます。
- 企業会員の検索や一覧表示
- 企業会員の登録や更新
- 企業会員向けのサービスの提供
なお、このテーブルは、企業会員サイトの運用状況やニーズに合わせて、追加の項目や制約を追加するなどの変更を行うことが可能です。
■プロンプト②
上記テーブル定義に、日本標準産業分類コードを追加してください。そして、create文も示してください。
上記テーブル定義に、日本標準産業分類コードを追加した場合のテーブル定義は、以下のとおりです。
項目 データ型 説明 企業ID 整数型 企業を識別するID 企業名 文字列型 企業の名称 企業カテゴリ 文字列型 企業の業種や分野 代表者名 文字列型 企業の代表者の氏名 電話番号 文字列型 企業の電話番号 メールアドレス 文字列型 企業のメールアドレス 住所 文字列型 企業の住所 設立年月日 日付型 企業の設立年月日 資本金 数値型 企業の資本金 従業員数 数値型 企業の従業員数 売上高 数値型 企業の売上高 事業内容 文字列型 企業の事業内容 ホームページURL 文字列型 企業のホームページのURL 日本標準産業分類コード 文字列型 日本標準産業分類のコード 日本標準産業分類コードは、企業の業種を分類するためのコードです。このコードを追加することで、企業の業種をより細かく分類して管理することができます。
create文は、以下のとおりです。
SQL
CREATE TABLE company_master ( company_id INT NOT NULL AUTO_INCREMENT, company_name VARCHAR(255) NOT NULL, company_category VARCHAR(255) NOT NULL, representative_name VARCHAR(255) NOT NULL, phone_number VARCHAR(255) NOT NULL, email_address VARCHAR(255) NOT NULL, address VARCHAR(255) NOT NULL, establishment_date DATE NOT NULL, capital VARCHAR(255) NOT NULL, employee_number INT NOT NULL, sales_amount INT NOT NULL, business_contents VARCHAR(255) NOT NULL, homepage_url VARCHAR(255) NOT NULL, jisic_code VARCHAR(255) NOT NULL, PRIMARY KEY (company_id) );
このcreate文では、日本標準産業分類コードの項目を追加するために、
jisic_code
というカラム名を指定しています。また、データ型は、日本標準産業分類コードが文字列型であることから、VARCHAR(255)
を指定しています。なお、このcreate文は、あくまでも一例です。実際の運用状況やニーズに合わせて、カラム名やデータ型を変更することができます。
■プロンプト③
下記の産業分類マスタ(Industry_Master)の create文を教えてください。 --- NO カラム和名 カラム名 データ型 主キー Not Null 1 大分類コード major_code VARCHAR(1) 〇 〇 2 中分類コード middle_code VARCHAR(2) 〇 〇 3 小分類コード minor_code VARCHAR(3) 〇 〇 4 細分類コード sub_code VARCHAR(4) 〇 〇 5 コード jisic_code VARCHAR(10) 〇 6 項目名 name VARCHAR(255) 〇 7 レコード作成日時 created_at TIMESTAMP 〇 8 最終更新日時 updated_at TIMESTAMP 〇
産業分類マスタ(Industry_Master)の create 文は、以下のとおりです。
SQL
CREATE TABLE industry_master ( major_code VARCHAR(1) NOT NULL, middle_code VARCHAR(2) NOT NULL, minor_code VARCHAR(3) NOT NULL, sub_code VARCHAR(4) NOT NULL, jisic_code VARCHAR(10) NOT NULL, name VARCHAR(255) NOT NULL, created_at TIMESTAMP NOT NULL, updated_at TIMESTAMP NOT NULL, PRIMARY KEY (major_code, middle_code, minor_code, sub_code) );
この create 文では、以下の点に注意しています。
- 大分類コード、中分類コード、小分類コード、細分類コードの 4 つのコードは、すべて主キーとして指定しています。これは、これらのコードが重複しないことを保証するためです。
- コードは、すべて文字列型で指定しています。
- 項目名は、文字列型で指定しています。
- レコード作成日時と最終更新日時は、TIMESTAMP 型で指定しています。
なお、この create 文は、あくまでも一例です。実際の運用状況やニーズに合わせて、カラム名やデータ型を変更することができます。
具体的な説明は、以下のとおりです。
- 大分類コード、中分類コード、小分類コード、細分類コードの 4 つのコードは、すべて主キーとして指定しています。これは、これらのコードが重複しないことを保証するためです。
SQL
major_code VARCHAR(1) NOT NULL, middle_code VARCHAR(2) NOT NULL, minor_code VARCHAR(3) NOT NULL, sub_code VARCHAR(4) NOT NULL, PRIMARY KEY (major_code, middle_code, minor_code, sub_code)
- コードは、日本標準産業分類のコードであるため、文字列型で指定しています。
SQL
jisic_code VARCHAR(10) NOT NULL
- 項目名は、文字列型で指定しています。
SQL
name VARCHAR(255) NOT NULL
- レコード作成日時と最終更新日時は、TIMESTAMP 型で指定しています。
SQL
created_at TIMESTAMP NOT NULL, updated_at TIMESTAMP NOT NULL
また、このテーブルでは、以下の制約を指定することも考えられます。
- 大分類コード、中分類コード、小分類コードは、連番である必要があるため、UNIQUE 制約を指定します。
SQL
UNIQUE (major_code, middle_code, minor_code)
- 項目名は、重複してはならないため、UNIQUE 制約を指定します。
SQL
UNIQUE (name)
これらの制約を指定することで、データの整合性を保つことができます。
■プロンプト④
次のスキーマをDBMLに変換してください。但し、プライマリーキーは、PK ではなく、「primary key」 と表記してください。 また、「NotNull」の表記は、省略してください。 --- CREATE TABLE company_master ( company_id INT NOT NULL AUTO_INCREMENT, company_name VARCHAR(255) NOT NULL, company_category VARCHAR(255) NOT NULL, representative_name VARCHAR(255) NOT NULL, phone_number VARCHAR(255) NOT NULL, email_address VARCHAR(255) NOT NULL, address VARCHAR(255) NOT NULL, establishment_date DATE NOT NULL, capital VARCHAR(255) NOT NULL, employee_number INT NOT NULL, sales_amount INT NOT NULL, business_contents VARCHAR(255) NOT NULL, homepage_url VARCHAR(255) NOT NULL, jisic_code VARCHAR(255) NOT NULL, PRIMARY KEY (company_id) ); CREATE TABLE industry_master ( major_code VARCHAR(1) NOT NULL, middle_code VARCHAR(2) NOT NULL, minor_code VARCHAR(3) NOT NULL, sub_code VARCHAR(4) NOT NULL, jisic_code VARCHAR(10) NOT NULL, name VARCHAR(255) NOT NULL, created_at TIMESTAMP NOT NULL, updated_at TIMESTAMP NOT NULL, PRIMARY KEY (major_code, middle_code, minor_code, sub_code) );
以下のとおりです。
コード スニペット
table company_master { id: int primary key company_name: string company_category: string representative_name: string phone_number: string email_address: string address: string establishment_date: date capital: string employee_number: int sales_amount: int business_contents: string homepage_url: string jisic_code: string } table industry_master { major_code: string primary key middle_code: string minor_code: string sub_code: string jisic_code: string name: string created_at: timestamp updated_at: timestamp }
具体的には、以下の点に注意しています。
- プライマリーキーは、
primary key
と表記しています。NotNull
の表記は、省略しています。- データ型は、SQL と同じものを使用しています。
なお、この DBML は、あくまでも一例です。実際の運用状況やニーズに合わせて、変更することができます。
具体的な説明は、以下のとおりです。
- 会社マスタのテーブルでは、以下の項目を定義しています。
id
:会社を識別する主キーcompany_name
:会社名company_category
:会社カテゴリrepresentative_name
:代表者名phone_number
:電話番号email_address
:メールアドレスaddress
:住所establishment_date
:設立年月日capital
:資本金employee_number
:従業員数sales_amount
:売上高business_contents
:事業内容homepage_url
:ホームページURLjisic_code
:日本標準産業分類コード- 産業分類マスタのテーブルでは、以下の項目を定義しています。
major_code
:大分類コードmiddle_code
:中分類コードminor_code
:小分類コードsub_code
:細分類コードjisic_code
:日本標準産業分類コードname
:項目名created_at
:レコード作成日時updated_at
:最終更新日時これらのテーブルは、いずれも主キーを定義しています。主キーは、テーブル内の各レコードを一意に識別するために使用されます。
この出力されたDBMLから、ER図を「https://dbdiagram.io/」で、出力しようとしましたが、出力できませんでした。
ChatGPT で、出力されたDBMLと表記方法が、異なるようです。。。。
ちなみに
上記DBMLの表記バージョンは、いくつですか?
ときいてみたところ、
上記の DBML は、DBML 2.0 の表記バージョンです。
DBML 2.0 は、2022 年にリリースされた最新のバージョンです。このバージョンでは、以下の変更が行われています。
- プライマリーキーの表記が、
PK
からprimary key
に変更されました。NotNull
の表記が、省略可能になりました。- データ型の記述方法が、SQL と同様に変更されました。
なお、DBML には、1.0 から 3.0 までのバージョンが存在します。ただし、現時点では、DBML 2.0 が最も広く使用されています。
ということでした。ChatGPT も、「提供されたDBMLは、バージョン 2 です。」という回答でした。
Google Bard の場合は、「ChatGPT と Google Bard の結果比較(テーブル設計からDBML出力ーChatGPT の場合)」をご覧ください。
株式会社光翼では、このようなAI活用を伴うもの、伴わないもの、ミックスしたものなど、お客様の状況に応じたご提案をいたしております。
ご興味をお持ちの方は、お問い合わせフォームより、お問い合わせくださいませ。