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

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

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

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

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

データベーススペシャリスト

データベーススペシャリスト試験 (DB)は、IPA 独立行政法人 情報処理推進機構の実施している国家資格です。

Q&A

解決済

2回答

1413閲覧

複数のスーパータイプと単数のサブタイプにおける、主キーの扱い方

NaoMatsubayashi

総合スコア10

SQL

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

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

データベーススペシャリスト

データベーススペシャリスト試験 (DB)は、IPA 独立行政法人 情報処理推進機構の実施している国家資格です。

1グッド

2クリップ

投稿2022/08/04 02:09

前提

SQL言語のスーパータイプとサブタイプについて、質問します。
参考としている教科書があります。末尾に記述します。

問題点

複数のスーパータイプから単数のサブタイプを構成する場合、主キーは何を設けるべきでしょうか。
参考書には、スーパータイプの1つから主キーを選ぶ趣旨の内容が、記述されていました。
私の感覚では、スーパータイプの主キーの全てをサブタイプの主キーとする方法が、正しく思えます。つまり、複合キーとする方法です。
上記が間違いであるならば、どうして間違いなのか、ご説明いただけると幸いです。

まとめ

SQL言語のスーパータイプとサブタイプについて、質問します。ご回答、よろしくお願い申し上げます。

参考

データベーススペシャリスト2022年版

logres_Fan👍を押しています

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

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

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

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

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

logres_Fan

2022/08/08 04:50

>複数のスーパータイプから単数のサブタイプを構成する場合  何か具体例はありませんか? > スーパータイプの主キーの全てをサブタイプの主キーとする方法が、正しく思えます。つまり、複合キーとする方法です。  親子関係の事でしょうか。
NaoMatsubayashi

2022/08/09 01:29

ご回答、ありがとうございます。 >何か具体例はありませんか? 参考書には、6つのエンティティがあり、BPエンティティが地点エンティティと生産先エンティティの排他的サブタイプで、BPエンティティが調達先エンティティの共存的とあります。 >親子関係の事でしょうか。 親子関係における主キーの選択方法です。
guest

回答2

0

ベストアンサー

 注意事項「某設定に準拠した回答。概念モデル(=所謂、ポエムモデル)なので、論理設計で駄目出しされてスカスカになります。真に受けずに軽く流して下さい。」

 調達先の下位要素として置かれているので、設問上、調達先コードがBPの主キーになります。とりあえず、サブタイプを切り出す前に戻せなくなる懸念があるから複合主キーに出来ない、としておけばいいのかも。調達先兼生産先兼地点の下位要素として置かれていれば、調達先コードと生産先コードと地点コードの複合主キーになったと思います。

 私も初めは複合主キーを思い浮かべました。ただ、BPテーブルありきでは思考が制限されてしまいます。一度頭をリセットして、別物の『論理』モデルをゼロから創造するのがおすすめです。


調達先

{調達先コード}調達先名BPフラグ仕入先フラグ生産コード地点コード信用ランク
0001AAA⬜️☑️
0002BBB☑️⬜️22
0003CCC☑️☑️33

生産先

{生産先コード}生産先区分調達先コード地点コード部門コード
1内製3
2外作00022
3外作00033

地点

{地点コード}所在地地点区分調達先コード生産コード物流部部門コード
1東京都…自社倉庫1
2大阪府…調達先兼生産先の倉庫00022
3北海道…調達先兼生産先の倉庫00033

⬇️サブタイプを切り出す。⬆️サブタイプを元に戻す。

調達先

{調達先コード}調達先名BPフラグ仕入先フラグ
0001AAA⬜️☑️
0002BBB☑️⬜️
0003CCC☑️☑️

生産先

{生産先コード}生産先区分
1内製
2外作
3外作

地点

{地点コード}所在地地点区分
1東京都…自社倉庫
2大阪府…調達先兼生産先の倉庫
3北海道…調達先兼生産先の倉庫

BP※調達先の下位要素(概念モデル設計者の設定・命名)

{調達先コード}生産コード地点コード
000222
000333

仕入先※調達先の下位要素(概念モデル設計者の設定・命名)

{調達先コード}信用ランク
0001
0003

部品生産部※部門の下位要素(概念モデル設計者の設定・命名)

{部門コード}生産先コード
31

倉庫※地点の下位要素(概念モデル設計者の設定・命名)

{地点コード}物流部部門コード
11

部門

{部門コード}部品名部門区分
1物流部在庫
2製品生産部製造
3部品生産部製造

投稿2022/08/09 06:39

編集2022/08/09 17:06
logres_Fan

総合スコア161

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

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

NaoMatsubayashi

2022/08/10 01:13

ご回答、ありがとうございます。グラフを載せていただいたおかげで、理解が捗りました。 ご丁寧に解説いただき、誠にありがとうございました。
guest

0

実際に設計しないとなかなか分からないかも?
タイプ/サブタイプのテーブルへの実装

投稿2022/08/07 07:29

Orlofsky

総合スコア16415

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

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

NaoMatsubayashi

2022/08/08 02:19

ご回答、ありがとうございます。 リンクのページは拝読させていただきましたが、複数のスーパータイプから単数のサブタイプを構成する場合について、記述されていなかったかと思います。 理解が及ばず、申し訳ございません。より具体的に回答していただけると、たいへん嬉しゅうございます。よろしくお願い申し上げます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問