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

株式会社光翼では、DX推進のコンサルティングを行っております。

今日は、ChatGPT と Google Bard の結果比較をシステム開発における「企業会員サイトの企業マスタのテーブル設計出力から、DBML出力まで」を例に比較してみたいと思います。

まずは、ChatGPTの場合を記載します。

Google Bard の場合は、「ChatGPT と Google Bard の結果比較(テーブル設計からDBML出力ーGoogle Bard の場合)」をご覧ください。

投入したプロンプト

■プロンプト①
企業会員サイトの企業マスタのテーブル定義を教えてください。

■プロンプト②
上記テーブル定義に、日本標準産業分類コードを追加してください。

■プロンプト③
下記の産業分類マスタ(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	コード	JapanSICCode	VARCHAR(10)		〇
6	項目名	name	VARCHAR(255)		〇
7	レコード作成日時	created_at	TIMESTAMP		〇
8	最終更新日時	updated_at	TIMESTAMP		〇

■プロンプト④
次のスキーマをDBMLに変換してください。但し、プライマリーキーは、PK ではなく、「primary key」 と表記してください。 また、「NotNull」の表記は、省略してください。
---
CREATE TABLE Enterprise (
    EnterpriseID INT PRIMARY KEY,
    Name VARCHAR(255) NOT NULL,
    Description TEXT,
    Industry VARCHAR(100),
    JapanSICCode VARCHAR(10), 
    FoundedDate DATE,
    ContactPerson VARCHAR(255),
    ContactEmail VARCHAR(255),
    ContactPhone VARCHAR(20),
    AddressLine1 VARCHAR(255),
    AddressLine2 VARCHAR(255),
    City VARCHAR(100),
    State VARCHAR(100),
    ZipCode VARCHAR(20),
    Country VARCHAR(100),
    Website VARCHAR(255),
    IsActive BOOLEAN,
    CreatedAt TIMESTAMP,
    UpdatedAt TIMESTAMP
);

CREATE TABLE Industry_Master (
    major_code VARCHAR(1) PRIMARY KEY NOT NULL,
    middle_code VARCHAR(2) PRIMARY KEY NOT NULL,
    minor_code VARCHAR(3) PRIMARY KEY NOT NULL,
    sub_code VARCHAR(4) PRIMARY KEY NOT NULL,
    JapanSICCode VARCHAR(10) UNIQUE,
    name VARCHAR(255) NOT NULL,
    created_at TIMESTAMP NOT NULL,
    updated_at TIMESTAMP NOT NULL
);


ChatGPT-3.5 の結果

■プロンプト①
企業会員サイトの企業マスタのテーブル定義を教えてください。

企業会員サイトの企業マスタのテーブル定義は、具体的な要件やデータモデルによって異なります。ただし、一般的な企業マスタの例を以下に示します。これは参考例であり、実際のプロジェクトにおいては要件に基づいて適切に調整する必要があります。

CREATE TABLE Enterprise (
    EnterpriseID INT PRIMARY KEY,
    Name VARCHAR(255) NOT NULL,
    Description TEXT,
    Industry VARCHAR(100),
    FoundedDate DATE,
    ContactPerson VARCHAR(255),
    ContactEmail VARCHAR(255),
    ContactPhone VARCHAR(20),
    AddressLine1 VARCHAR(255),
    AddressLine2 VARCHAR(255),
    City VARCHAR(100),
    State VARCHAR(100),
    ZipCode VARCHAR(20),
    Country VARCHAR(100),
    Website VARCHAR(255),
    IsActive BOOLEAN DEFAULT true,
    CreatedAt TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    UpdatedAt TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);

この例では、Enterprise テーブルに企業に関する基本的な情報が含まれています。具体的なデータベースシステムによっては、データ型や制約が異なる場合がありますので、適宜調整が必要です。

以下は各列の説明です:

  • EnterpriseID: 企業の一意の識別子(主キー)
  • Name: 企業の名前
  • Description: 企業の説明や概要(テキスト形式)
  • Industry: 企業が属する業界
  • FoundedDate: 企業の設立日
  • ContactPerson: 連絡先担当者の名前
  • ContactEmail: 連絡先メールアドレス
  • ContactPhone: 連絡先電話番号
  • AddressLine1, AddressLine2: 住所の詳細(複数行に分かれている場合)
  • City, State, ZipCode, Country: 住所の都市、州、郵便番号、国
  • Website: 企業のウェブサイト
  • IsActive: 企業がアクティブかどうかを示すフラグ
  • CreatedAt, UpdatedAt: レコードの作成日時と最終更新日時

これは基本的な例であり、実際の要件に基づいて調整することが重要です。データベースの正規化やインデックスの設定などもプロジェクトの要件に合わせて検討する必要があります。

■プロンプト②
上記テーブル定義に、日本標準産業分類コードを追加してください。

もちろんです。日本標準産業分類コード(通称:日本SICコード)を追加したテーブル定義は以下のようになります。

CREATE TABLE Enterprise (
    EnterpriseID INT PRIMARY KEY,
    Name VARCHAR(255) NOT NULL,
    Description TEXT,
    Industry VARCHAR(100),
    JapanSICCode VARCHAR(10), -- 日本標準産業分類コードを追加
    FoundedDate DATE,
    ContactPerson VARCHAR(255),
    ContactEmail VARCHAR(255),
    ContactPhone VARCHAR(20),
    AddressLine1 VARCHAR(255),
    AddressLine2 VARCHAR(255),
    City VARCHAR(100),
    State VARCHAR(100),
    ZipCode VARCHAR(20),
    Country VARCHAR(100),
    Website VARCHAR(255),
    IsActive BOOLEAN DEFAULT true,
    CreatedAt TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    UpdatedAt TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);

この例では、JapanSICCode という列を追加しました。これは企業が日本標準産業分類に属する際のコードを格納するためのものです。この列のデータ型はVARCHAR(10)としていますが、実際の要件によっては適切なデータ型を選択してください。

データを挿入する際には、企業ごとに適切な日本SICコードを指定してください。データベースが正確で信頼性の高い情報を保持できるようになります。

■プロンプト③

下記の産業分類マスタ(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	コード	JapanSICCode	VARCHAR(10)		〇
6	項目名	name	VARCHAR(255)		〇
7	レコード作成日時	created_at	TIMESTAMP		〇
8	最終更新日時	updated_at	TIMESTAMP		〇

以下が、提供された情報を元にした産業分類マスタ(Industry_Master)のCREATE文です。

CREATE TABLE Industry_Master (
    major_code VARCHAR(1) PRIMARY KEY NOT NULL,
    middle_code VARCHAR(2) PRIMARY KEY NOT NULL,
    minor_code VARCHAR(3) PRIMARY KEY NOT NULL,
    sub_code VARCHAR(4) PRIMARY KEY NOT NULL,
    JapanSICCode VARCHAR(10) UNIQUE,
    name VARCHAR(255) NOT NULL,
    created_at TIMESTAMP NOT NULL,
    updated_at TIMESTAMP NOT NULL
);

このCREATE文では、各コード列(major_codemiddle_codeminor_codesub_code)を主キーとして定義しています。また、JapanSICCode列にはUNIQUE制約があります。各列にはNOT NULL制約が設定されており、created_atupdated_at列はTIMESTAMP型で、これらもNOT NULL制約が設定されています。

■プロンプト④

次のスキーマをDBMLに変換してください。但し、プライマリーキーは、PK ではなく、「primary key」 と表記してください。 また、「NotNull」の表記は、省略してください。
---
CREATE TABLE Enterprise (
    EnterpriseID INT PRIMARY KEY,
    Name VARCHAR(255) NOT NULL,
    Description TEXT,
    Industry VARCHAR(100),
    JapanSICCode VARCHAR(10), 
    FoundedDate DATE,
    ContactPerson VARCHAR(255),
    ContactEmail VARCHAR(255),
    ContactPhone VARCHAR(20),
    AddressLine1 VARCHAR(255),
    AddressLine2 VARCHAR(255),
    City VARCHAR(100),
    State VARCHAR(100),
    ZipCode VARCHAR(20),
    Country VARCHAR(100),
    Website VARCHAR(255),
    IsActive BOOLEAN,
    CreatedAt TIMESTAMP,
    UpdatedAt TIMESTAMP
);

CREATE TABLE Industry_Master (
    major_code VARCHAR(1) PRIMARY KEY NOT NULL,
    middle_code VARCHAR(2) PRIMARY KEY NOT NULL,
    minor_code VARCHAR(3) PRIMARY KEY NOT NULL,
    sub_code VARCHAR(4) PRIMARY KEY NOT NULL,
    JapanSICCode VARCHAR(10) UNIQUE,
    name VARCHAR(255) NOT NULL,
    created_at TIMESTAMP NOT NULL,
    updated_at TIMESTAMP NOT NULL
);

以下が、提供されたスキーマをDBMLに変換し、「PK」は “primary key” と表記し、「NotNull」の表記は省略したものです:

Table Enterprise {
  EnterpriseID INT [primary key]
  Name VARCHAR(255)
  Description TEXT
  Industry VARCHAR(100)
  JapanSICCode VARCHAR(10) 
  FoundedDate DATE
  ContactPerson VARCHAR(255)
  ContactEmail VARCHAR(255)
  ContactPhone VARCHAR(20)
  AddressLine1 VARCHAR(255)
  AddressLine2 VARCHAR(255)
  City VARCHAR(100)
  State VARCHAR(100)
  ZipCode VARCHAR(20)
  Country VARCHAR(100)
  Website VARCHAR(255)
  IsActive BOOLEAN
  CreatedAt TIMESTAMP
  UpdatedAt TIMESTAMP
}

Table Industry_Master {
  major_code VARCHAR(1) [primary key]
  middle_code VARCHAR(2) [primary key]
  minor_code VARCHAR(3) [primary key]
  sub_code VARCHAR(4) [primary key]
  JapanSICCode VARCHAR(10) [Unique]
  name VARCHAR(255)
  created_at TIMESTAMP
  updated_at TIMESTAMP
}

このDBMLは、主キーは “primary key” と表記し、Not Null 制約は省略しています。これにより、DBMLはテーブル構造をより簡潔に表現します。

この出力されたDBMLから、ER図を「https://dbdiagram.io/」で、出力したものが下記です。

Google Bard の場合は、「ChatGPT と Google Bard の結果比較(テーブル設計からDBML出力ーGoogle Bard の場合)」をご覧ください。

株式会社光翼では、このようなAI活用を伴うもの、伴わないもの、ミックスしたものなど、お客様の状況に応じたご提案をいたしております。

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

関連記事