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

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

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

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

SQL Server

SQL Serverはマイクロソフトのリレーショナルデータベース管理システムです。データマイニングや多次元解析など、ビジネスインテリジェンスのための機能が備わっています。

SQL

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

データベース

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

データベース設計

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

Q&A

3回答

1910閲覧

親と子の関係性のレコードは、親だけを論理削除しますか、両方論理削除しますか?

pgm_bakabon

総合スコア61

MySQL

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

SQL Server

SQL Serverはマイクロソフトのリレーショナルデータベース管理システムです。データマイニングや多次元解析など、ビジネスインテリジェンスのための機能が備わっています。

SQL

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

データベース

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

データベース設計

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

0グッド

1クリップ

投稿2019/05/08 01:59

質問

掲題通りの質問をさせてください。
親と子の関係性のレコードは、親だけを論理削除しますか、両方論理削除しますか?
皆さまのご意見をお伺いしたいです。

※かならず親ありきで子のレコードは取得されます。

私は両方論理削除していた方がデータ上きれいになるし、整合性?のとれないレコードがなくなるので良いと思っています。

条件・補足

構造は以下のようなイメージです。
必要最低限のカラムのみ表にしました。

親テーブル

iddeleted_at
1NULL

子テーブル

id親テーブルIDdeleted_at
11NULL

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

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

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

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

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

maisumakun

2019/05/08 02:03

まず前提として、「どのような理由で」物理削除ではなく論理削除としているのでしょうか。
pgm_bakabon

2019/05/08 05:37

今の私の環境ですと、最初から論理削除でしたとしか回答できない状態ですね。 少なからず論理削除されたデータは何か問題が発生したときにしか見ることはありません。
guest

回答3

0

トランザクション制御して、両方削除します。

投稿2019/05/09 10:36

akirafudo6

総合スコア341

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

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

0

子だけを削除する場合は物理削除なのでしょうか?それとも論理削除?
質問からは物理削除のように見えます。

もし子の論理削除があるなら、親の論理削除と子の論理削除の意味合いは変わってきます。

子だけを論理削除する場合は無く、必ず親ありきで子を取得するなら、親だけ論理削除する方が、処理効率は良いでしょうね。

また、正規化の観点からも、親が論理削除されていれば、子も全て論理削除という状態は、正規化されていない事になります。
※子が1件でも論理削除されていれば、それを含む親も論理削除されていると判断できるという冗長な状況です。

投稿2019/05/08 03:07

編集2019/05/08 03:14
sazi

総合スコア25173

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

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

pgm_bakabon

2019/05/09 02:08

ご回答ありがとうございます。 子だけの削除する場合もあり、こちらも論理削除とする設計となっております。 親ありきで子を取得する場合であれば、確かに親だけ論理削除する方が処理効率は良いですよね。
guest

0

具体的なイメージがつきませんが、外部キー制約を参考にするとよいでしょう
MySQL :: MySQL 5.6 リファレンスマニュアル :: 13.1.17.2 外部キー制約の使用

選択肢はいくつかあります

  • 変更を拒否する
  • 削除や変更を引き継ぐ
  • 子が持つ親情報をNULLに設定する
  • 子が持つ親情報を適当なデフォルト値に変更する
  • なにもしない(制約にならない)

投稿2019/05/08 02:14

yambejp

総合スコア114769

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

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

pgm_bakabon

2019/05/09 02:15

ご回答ありがとうございます。 外部キー制約の観点では考えたことがなかったです。 参考にさせていただきます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問