質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Q&A

2回答

995閲覧

MySQLでサブタイプテーブルのCREATEについて

BASHAR

総合スコア2

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

0グッド

0クリップ

投稿2020/05/03 05:35

前提・実現したいこと

以下の設計図のCREATEをどのように書くのか知りたいです。

発生している問題

設計図が以下のとき、結局CREATEはわけるのかわけないのかがわからないです。

該当の設計図

イメージ説明

悩んでいるCREATE方法

こうして結局わけないのでしょうか?

sql

1CREATE TABLE 全社員 2( 3 `社員NO` int not null 4 ,`名前` varchar(100) not null 5 ,`年齢` varchar(100) not null 6 ,`入社年月日` datetime not null 7 ,`社員区分` varchar(100) not null 8 ,`給与ランク` varchar(10) 9 ,`月給` varchar(10) 10 ,`時給` varchar(10) 11 ,`出勤不可能曜日` varchar(10) 12 ,PRIMARY KEY (`社員NO`) 13); 14INSERT INTO 全社員 15 (`社員NO`,`名前` ,`年齢`, `入社年月日`, `社員区分`, `給与ランク`, `月給`, `時給`, `出勤不可能曜日`) 16VALUES 17 (1, '田中', '21', '2020-05-03', '正社員', 'A', '10', null, null ) 18 ,(2, '高橋', '22', '2020-05-03', 'パート・アルバイト', null, null, '20', '水' ) 19;

それともやはりわけてこう書くのでしょうか。

SQL

1CREATE TABLE 社員マスタ 2( 3 `社員NO` int not null 4 ,`名前` varchar(100) not null 5 ,`年齢` varchar(100) not null 6 ,`入社年月日` datetime not null 7 ,`社員区分` varchar(100) not null 8 ,PRIMARY KEY (`社員NO`) 9); 10INSERT INTO 社員マスタ 11 (`社員NO`,`名前` ,`年齢`, `入社年月日`, `社員区分`) 12VALUES 13 (1, '田中', '21', '2020-05-03', '正社員' ) 14 ,(2, '高橋', '22', '2020-05-03', 'パート・アルバイト' ) 15; 16 17CREATE TABLE 正社員 18( 19 `社員NO` int not null 20 ,`給与ランク` varchar(10) not null 21 ,`月給` varchar(10) not null 22 ,PRIMARY KEY (`社員NO`) 23 ,FOREIGN KEY (`社員NO`) REFERENCES 社員マスタ(`社員NO`) 24); 25INSERT INTO 正社員 26 (`社員NO`, `給与ランク`, `月給`) 27VALUES 28 (1, 'A', '10' ) 29; 30 31CREATE TABLE パート・アルバイト 32( 33 `社員NO` int not null 34 ,`時給` varchar(10) not null 35 ,`出勤不可能曜日` varchar(10) not null 36 ,PRIMARY KEY (`社員NO`) 37 ,FOREIGN KEY (`社員NO`) REFERENCES 社員マスタ(`社員NO`) 38); 39INSERT INTO パート・アルバイト 40 (`社員NO`, `出勤不可能曜日`, `出勤不可能曜日`) 41VALUES 42 (2, '20', '水' ) 43;

それとも全く違う書き方になりますか?
初心者質問ですみません。

あと、もしわけるのだとしたら「 not null を作らない方がいいから」という理由であっていますか?

MySQLバージョン情報

MySQL 5.7.29

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

スーパータイプ、サブタイプという表現は見た記憶がないけど、

それともやはりわけてこう書くのでしょうか。


月給、時給は数値型だろうし、
年齢は生年月日 date型 から計算できるから、テーブルに年齢を持つ設計は少ない。

投稿2020/05/03 05:52

Orlofsky

総合スコア16417

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2020/05/03 05:58

年齢に100桁あてるのも設計として謎ですね。
Orlofsky

2020/05/03 06:05

将来、恒星間移動のため長期間の人工冬眠に備えて、です。
guest

0

「設計図」がどのようにしてできたのか知りませんが、
「設計図の通り」に作るのだとしたらテーブルは個々になると思います。

設計図作った方に確認しては。

投稿2020/05/03 05:38

m.ts10806

総合スコア80875

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問