生成される「テーブル定義書」の機能説明ページです
コンテンツ(テーブル定義書)サンプル ver.7.3.1
※ただいま Ver.7.3.2 用ドキュメント整備中です(2024/09/28)。古いバージョンの内容が残っていたり、リンク先が未作成であったりする箇所がありますがご容赦ください。
- 画面構成
- ① 検索機能欄
検索対象文字を入力し検索します。 - ② テーブル一覧 兼 検索結果一覧
テーブル一覧を表示します。検索機能を使用した場合は検索結果が表示されます。 - ③ テーブル情報ヘッダ欄
テーブルの基本的な情報を表示します。インデックス表示やビュー表示、SQL文の生成/編集機能、Excel式生成機能のボタンもついています。 - ④ テーブル情報明細欄
テーブルのカラム情報の一覧を表示する欄です。項目が多い場合は、タイトル行固定でスクロールします。
- ① 検索機能欄
- 機能一覧
- 機能説明
- 検索機能
項目名や項目ID.で対象テーブルを検索することができます。
対象の文字を含んだテーブルがある場合は一覧として表示されます。
検索結果を選択すると検索文字までスクロールした状態でテーブル詳細情報を表示します。
・検索モード(クリックで切り替え)
・キーワード検索()
検索対象キーワードを指定して対象テーブルを検索します
明細ページ内にある検索キーワードがハイライト表示されます
※複数キーワード指定可
・テーブル検索()
テーブルID / テーブル名に限定した検索です
・部分一致オプション()
・ビュー内対象オプション()複数キーワードを検索したい場合は、スペースで区切った文字を入力することも可能です
キーワードの区切りは TAB / 改行 でも判別されるため、EXCELの複数セルをコピペすることも可能です。例えばEXCELのプログラム設計書に記載された「使用テーブル一覧」等のセルをコピペ→検索すると便利です。
※以下利用例
プログラム設計書「使用テーブル一覧」等のセルを選択してコピペすることも可能です(貼り付けた瞬間にスペース区切り文字に変換されます)
機能一覧へ - 検索結果一覧コピー機能
検索結果といっしょに表示されるボタンで、下記のようなタブ区切り形式の検索結果がクリップボードにコピーされます。
M0001 組織マスタ M0002 社員マスタ M0003 メーカーマスタ M0004 商品マスタ M0005 ユーザーマスタ T0001 注文テーブル T0002 注文明細テーブル
- リレーションリンク機能
- コード定義ポップアップ機能
- クリップボードコピー機能
ヘッダ部のテーブルID.、テーブル名、説明文、あるいは明細のカラムID.、カラムコメント列をクリックするとその文字列がクリップボードにコピーされます。
SQL文生成機能やビュー式、カラム文字連結などを含めて、このクリップボードコピー機能を利用した場合、ヘッダ部のテーブル説明(Desc.)の最右端に「Copy To Clipboard」のメッセージが表示されます。
機能一覧へ - カラム文字連結コピー機能
カラム名、カラムID.を カンマ(CSV)、タブ(TSV)、改行(¥n)で連結してクリップボードにコピーする機能になります。ドキュメントやExcelを使ったデータ管理などのタイトル行として利用できます。
-- ■CSVボタン 組織コード,組織名,削除フラグ,登録日,登録社員コード,更新日,更新社員コード -- ■TSVボタン ※PK項目に * 文字(アスタリスク)が付加されます 組織コード* 組織名 削除フラグ 登録日 登録社員コード 更新日 更新社員コード -- ■¥nボタン 組織コード 組織名 削除フラグ 登録日 登録社員コード 更新日 更新社員コード
TSVボタンはExcelで貼り付けを行うことを想定した機能になります。
機能一覧へ - シーケンス型 現在値取得&初期化コマンド生成機能
シーケンス型項目の現在値の取得および初期化するコマンドを生成し、クリップボードにコピーします。(以下データベース別操作。枠線内をクリックします。)
●MySQL / MariaDB の場合
-- GET AUTO INCREMENT NEXT VALUE SELECT AUTO_INCREMENT FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'T0007' ; -- GET AUTO INCREMENT MAX VALUE SELECT MAX(COL001) FROM T0007 ; -- INTIAL(UPDATE!!) AUTO INCREMENT ALTER TABLE T0007 AUTO_INCREMENT = 1 ;
●PostgreSQL の場合
-- GET SEQUENCE ID select REPLACE(REPLACE(column_default,'nextval(''',''), '''::regclass)', '') SEQ_ID from information_schema.columns where table_name in ('T0005','t0005') and column_name in ('SEQ_NO', 'seq_no') ; -- GET SEQUENCE VALUE select last_value from [SEQ_ID] ; -- OR select max(SEQ_NO) from T0005 ; -- INTIAL(UPDATE!!) SERIAL select setval('[SEQ_ID]', 1, false) ;
●Oracle の場合 (現在値取得のみ。「BY DEFAULT」「ALWAYS」の2種類があります。)
-- GET SEQUENCE ID SELECT DATA_DEFAULT FROM USER_TAB_COLUMNS WHERE TABLE_NAME = 'T0007' AND COLUMN_NAME = 'SEQ_NO' ; -- GET IDENTITY MAX VALUE SELECT SEQUENCE_NAME ,INCREMENT_BY ,CACHE_SIZE ,LAST_NUMBER FROM USER_SEQUENCES WHERE SEQUENCE_NAME = '[SEQ_ID]' -- OR SELECT MAX(SEQ_NO) FROM T0007 ;
●SQL Server の場合
-- GET IDENTITY MAX VALUE SELECT IDENT_CURRENT('T0011') ; -- INTIAL(UPDATE!!) IDENTITY DBCC CHECKIDENT(T0011, RESEED, 1) ;
- インデックス表機能
- ビュー式機能
ビューの場合、欄のボタンでビュー式を表示することができます。ビュー式のコピー、参照テーブルへのリンク参照が行えます。
ビュー式ページのボタンで元の明細画面に戻ります。
※ビュー内のテーブルID は明細ページにジャンプするリンクになっています。
明細画面欄のボタンでDDL文を生成しクリップボードにコピーします。
-- DROP VIEW ( V0001 ) ---------------------------------------------------- DROP VIEW IF EXISTS V0001 CASCADE ; -- CREATE VIEW ( V0001 ) -------------------------------------------------- CREATE VIEW V0001 AS SELECT T1.ORDER_NO AS ORDER_NO,T2.GOODS_CD AS GOODS_CD,M4.GOODS_NAME AS GOODS_NAME,T1.USER_ID AS USER_ID,M5.USER_NAME AS USER_NAME FROM (((T0001 T1 JOIN T0002 T2 ON(T1.ORDER_NO = T2.ORDER_NO)) LEFT JOIN M0004 M4 ON(T2.GOODS_CD = M4.GOODS_CD)) LEFT JOIN M0005 M5 ON(T1.USER_ID = M5.USER_ID)) ;
明細画面欄のボタンでビューが参照しているテーブルIDの一覧をクリップボードにコピーします。(1行目はビューID。2行目から使用テーブルID)
V0001 M0004 M0005 T0001 T0002
- 外部キー制約(FK)参照/DDL生成機能
対象テーブルに外部キー制約(FOREIGN KEY)が設定されている場合、欄のボタンで外部キー制約情報を表示することができます。参照する側 / 参照される側の情報を表示できます。
外部キー制約ページのボタンで元の明細画面に戻ります。
また外部キー制約画面欄のボタンでDDL文(DROP+ADD)を生成しクリップボードにコピーします。
-- DROP FOREIGN KEY ------------------------------------------------------- ALTER TABLE M0003 DROP FOREIGN KEY FK_M0003_01 ; ALTER TABLE M0003 DROP FOREIGN KEY FK_M0003_02 ; ALTER TABLE M0003_WK DROP FOREIGN KEY FK_M0003_WK ; ALTER TABLE M0004 DROP FOREIGN KEY FK_M0004_01 ; -- ADD FOREIGN KEY -------------------------------------------------------- ALTER TABLE M0003 ADD CONSTRAINT FK_M0003_01 FOREIGN KEY (CRE_EMP_CD) REFERENCES M0002 (EMP_CD) ; ALTER TABLE M0003 ADD CONSTRAINT FK_M0003_02 FOREIGN KEY (UPD_EMP_CD) REFERENCES M0002 (EMP_CD) ; ALTER TABLE M0003_WK ADD CONSTRAINT FK_M0003_WK FOREIGN KEY (MAKER_CD,TEL_NO,CAPITAL_CD) REFERENCES M0003 (MAKER_CD,TEL_NO,CAPITAL_CD) ; ALTER TABLE M0004 ADD CONSTRAINT FK_M0004_01 FOREIGN KEY (MAKER_CD) REFERENCES M0003 (MAKER_CD) ;
- 外部キー制約(FK)解除
対象テーブルに外部キー制約(FOREIGN KEY)が設定されている場合、欄のボタンで外部キー制約を解除するコマンドを生成し、クリップボードにコピーします。
-- DISABLED FOREIGN KEY --------------------------------------------------- SET FOREIGN_KEY_CHECKS = 0 ; -- ENABLED FOREIGN KEY ---------------------------------------------------- SET FOREIGN_KEY_CHECKS = 1 ;
- 簡易SQL文生成機能
欄の ボタンクリックで該当テーブルのSELECT/INSERT/UPDATE/DELETE文がクリップボードにコピーされます。
-- ■サンプル(メモ帳などにペースト) SELECT * FROM M0001 WHERE ORG_CD = '' -- (PK)char(2) LIMIT 500 ; INSERT INTO M0001 ( ORG_CD , ORG_NAME , DEL_FLG , CRE_REC , CRE_EMP_CD , UPD_REC , UPD_EMP_CD ) VALUES ( '' -- ORG_CD : char(2) :NotNull (PK) , '' -- ORG_NAME : varchar(50) :NotNull , '' -- DEL_FLG : tinyint(4) :Def[0] , '' -- CRE_REC : datetime(6) :Def[current_timestamp(6)] , '' -- CRE_EMP_CD : varchar(4) , '' -- UPD_REC : datetime(6) :Def[current_timestamp(6)] , '' -- UPD_EMP_CD : varchar(4) );
加工しやすいように項目情報も付加しています。
- SQL一括生成機能 (イチ押し!)
Excelなどで大量に作ったテーブルデータを入力欄に貼り付けて、一気にSQL文を生成する機能です。(操作イメージ動画)
ボタン(①)のクリックの繰り返しで、欄(②)の表示/非表示が切り替わります
欄に用意したExcelデータのセル(TSV)をコピー&ペーストすることで、任意のSQL (欄のボタンで選択 ) を欄に生成できます。
ボタンで生成SQLをクリップボードにコピーすることができます。コピペするデータ(Excelセル)を増やせば、何百件ものSQL文を一気に生成することが可能です。(操作イメージ動画)
※メモ帳にペーストしたイメージ
また、以下オプションを選択することでSQL文を見やすくしたり入力を楽に行うことができるようになります。-
SQL文を改行を挟んだ見やすい形に整形します。生成したSQLを実行したらエラーになってしまった場合の原因究明に重宝します。(「数値型の項目にアルファベット文字を指定してしまっていた」などが発見しやすくなります )-- ■ CRLFチェックなし (1行構成) INSERT INTO M0001 (ORG_CD,ORG_NAME,DEL_FLG,CRE_REC,CRE_EMP_CD,UPD_REC,UPD_EMP_CD) VALUES ('501','経営改革推進課',A,current_timestamp(6),'3872',current_timestamp(6),'3872'); --★どこに誤りがあるSQLなのか見つけづらい
-- ■ CRLFチェックあり (改行入りで項目補助情報付加) INSERT INTO M0001 ( ORG_CD , ORG_NAME , DEL_FLG , CRE_REC , CRE_EMP_CD , UPD_REC , UPD_EMP_CD ) VALUES ( '501' -- (PK) ORG_CD :char(2) :NotNull , '経営改革推進課' -- ORG_NAME :varchar(50) :NotNull , A -- DEL_FLG :tinyint(4) :Def[0] , current_timestamp(6) -- CRE_REC :datetime(6) :Def[current_timestamp(6)] , '3872' -- CRE_EMP_CD :varchar(4) , current_timestamp(6) -- UPD_REC :datetime(6) :Def[current_timestamp(6)] , '3872' -- UPD_EMP_CD :varchar(4) ); -- ★数値型項目"DEL_FLG"の値に"A"が設定されいるという誤りが一目瞭然
コピー元のExcel上でデータをすべてのカラムで指定しなくてもよいように、データが空欄の場合はカラムデフォルト値がSQLに組み込まれます。
例えば「登録日時」や「更新日時」というタイムスタンプ型のカラムがあり、デフォルト値としてシステム日時(SYSDATE())が設定してあった場合、コピー元のEXCELで空欄にしたままコピペしてSQL生成すると、自動的に「SYSDATE()」などのデフォルトがセットされたSQL文が生成されます。
入力データの区切り文字をタブ文字のみとします。チェックを外した場合は、タブとカンマをデータの区切り文字とします。
INSERT文の生成と同時に同じキーのDELETE文も生成します。データの微調整で何度も同じキーデータを登録したい場合に重宝します。
登録(INSERT)したいデータが既に存在するかどうか確認したい場合、SELECT文を発行して確認することになると思いますが、入力データが複数行の場合、このチェックをつけることで、入力したデータに対する複数のSELECT文を UNION でつなげた 1つのSQL文として生成することができます(1つのSQLとして実行されるため、結果が1つになるので見やすくなります)。生成したINSERT文を実行する前の確認用SELECT文として重宝します。(このUNION SELECTが 0件であれば「生成したINSERT文は重複エラーにならずに実行可」という判断ができると思います)
-
- DDL生成機能 (一連DDL群)
欄のボタンクリックで「既存テーブルから新テーブルへデータ移行込みでテーブルを再作成」というシナリオを想定にしたDDL群を生成します。
具体的には以下DDL群を生成します。
-
- DROP FOREIGN KEY : 外部キー制約解除(制約がある場合)
- TABLE RENAME : 既存テーブルをリネーム(前後に件数取得SQL)
(TB_xxx → TB_xxx_TEMP) - DROP TABLE : 既存テーブル削除(データ移行しない場合の利用を想定)
- CREATE TABLE : 新テーブルを生成
- COMMENT TO TABLE : テーブル/項目のコメント情報の生成
- INSERT [TB_xxx] SELECT [TB_xxx_TEMP] : 既存テーブル(~_TEMP) のデータを新テーブルへ移行
(新旧テーブル件数取得SQL付加+COMMIT文) - CREATE INDEX : インデックス生成
- ADD FOREIGN KEY : 外部キー制約設定(制約がある場合)
- DROP TABLE : 既存テーブル(~_TEMP)の削除
- TABLE RENAME : リカバリ
(TB_xxx_TEMP → TB_xxx)
上記DDLが何かしらエラーになった場合を想定したリカバリDDL
- サンプルDDL(テーブル)
サンプルDDL(ビュー) - ※DBの種類により生成される書式やコマンド数は多少異なります
-
- ビューリストコピー
明細画面欄のボタンで対象テーブルを参照しているビューIDの一覧をクリップボードにコピーします。(1行目はテーブルID。2行目から使用ビューID)
T0001 V0001 V0002 v0003
- テーブル定義書TSV生成機能
- 検索機能