ChatGPT と Google Bard の結果比較(テーブル設計からDBML出力ーGoogle Bardの場合)

株式会社光翼では、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:ホームページURL
    • jisic_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活用を伴うもの、伴わないもの、ミックスしたものなど、お客様の状況に応じたご提案をいたしております。

ご興味をお持ちの方は、お問い合わせフォームより、お問い合わせくださいませ。

関連記事