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

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

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

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

データベース

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

データベース設計

データベース設計はデータベースの論理的や物理的な部分を特定する工程です。

Q&A

3回答

899閲覧

DBに新規登録したアイテムと、過去のアイテムとの紐付けをする方法

neoz

総合スコア31

SQL

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

データベース

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

データベース設計

データベース設計はデータベースの論理的や物理的な部分を特定する工程です。

0グッド

0クリップ

投稿2021/07/30 05:40

データベース設計をしております。

以前、以下の質問でお答えいただいた内容を踏まえ、
データベースに登録したアイテムの内容を更新する場合は更新ではなく新規作成をする
ことに決めました。
(DBの正規化をどこまで行うかhttps://teratail.com/questions/346761

ただ、ここで新たに疑問が出てきました。

例えば①企業テーブル ②売上テーブルの2つがあったとします。
これらから、各社の毎月の売上データを確認できます。

このとき、①企業テーブル に登録している会社名が変わると、社名変更後の企業名を新規登録することになりますが
社名変更後企業と、社名変更前企業が同一のものであることは、どのようにして判定するようにするべきでしょうか?

この紐付けをしていないと、②の売上テーブルから社名変更前と後のデータを引っ張って来れないと考えています。

一案考えたのは、企業テーブルに「以前の名称カラム」を作り、社名変更後企業の行に社名変更前のidを持たせることです。
この場合、社名変更後の企業を登録する際に、社名変更前の企業名やidを指定することを想定します。
こうすることで、以前の名称を次々に遡ることが可能かと考えています。

質問を改めてまとめると
・アイテムの更新をせず、常に新規作成をしていくDBの場合、フロントでの取り回しの簡便さも鑑み、どのように同一のものを判定するのが一般的でしょうか?
・上記で考えた方法は一般的でしょうか?

となります。よろしくお願いします。

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

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

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

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

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

guest

回答3

0

①企業テーブル に登録している会社名が変わると、社名変更後の企業名を新規登録することになりますが
社名変更後企業と、社名変更前企業が同一のものであることは、どのようにして判定するようにするべきでしょうか?

この紐付けをしていないと、②の売上テーブルから社名変更前と後のデータを引っ張って来れないと考えています。

前の質問で回答しましたが、その要件であれば、「関数従属あり」という事です。
なので、①企業テーブルは履歴型で保持する事になり、②売上テーブルはその履歴を特定できる項目が必要です。

一般的かどうかは分かりませんが、①にはキーと適用日付、②にはキーと売上日があれば関係は保持できるでしょう。
※キーはナチュラルキーではなくサロゲートキーである必要があります。

投稿2021/07/30 06:35

編集2021/07/30 08:43
sazi

総合スコア25327

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

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

0

企業テーブルは、ID+有効期間をキーにするかな。
IDは同一、有効期間(旧社名の期間、新社名の期間)で新旧わける。

売上テーブルは、社名カラムを持たせるのもありかと。
売上情報を取得する時に、いろんなマスタと連結すると重くなる。

投稿2021/07/30 06:42

編集2021/07/30 06:46
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

0

変更の可能性があり、変更前の情報を参照する要件があるのでしたら変更履歴を別途持つことになります。
履歴には同じidと利用期間を持っておくことになると思います。

投稿2021/07/30 05:45

m.ts10806

総合スコア80875

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問