0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

UdonTechAdvent Calendar 2022

Day 21

データベースの非機能要件項目どこに置く問題

Posted at

◆データベースの非機能要件項目どこに置く問題

DB設計で、よくある問題
非機能要件の項目はどこに置くのかという問題(問題なのかな?)

◆非機能要件の項目とは?

名前とか誕生日とかアプリケーションに必要な項目を機能要件の項目といい、
アプリケーションに必要ない項目を非機能要件の項目といいます。
具体的には、レコードの作成時間や作成者IDや作成者IPアドレスなど実際には必要ない項目を
持たせることがあります。(主に、障害時に調査等に使う目的でつけていることが多いです)

◆どこに置いてもよいのでは?

よくあるのは最後尾につけます。
※ 型は適当です。

・ユーザテーブル

Filed 名前
id ID number
name 名前 text
create 作成日時 timestamp
create_id 作成者 text
create_ip 作成IPアドレス text
update 最終更新日時 timestamp
update_id 最終更新者 text
update_ip 最終更新IPアドレス text

こんな感じになります。
まぁ、何も問題ないですよね。
ユーザテーブルに誕生日を追加してみましょう

・追加後のユーザテーブル

Filed 名前
id ID number
name 名前 text
create 作成日時 timestamp
create_id 作成者 text
create_ip 作成IPアドレス text
update 最終更新日時 timestamp
update_id 最終更新者 text
update_ip 最終更新IPアドレス text
birthday 誕生日 timestamp

なんか非機能要件項目を挟んで機能要件項目があると見にくくない?

◆最後尾はやめて先頭においてみる

・ユーザテーブル

Filed 名前
create 作成日時 timestamp
create_id 作成者 text
create_ip 作成IPアドレス text
update 最終更新日時 timestamp
update_id 最終更新者 text
update_ip 最終更新IPアドレス text
id ID number
name 名前 text

こんな感じになります。
では、同じようにユーザテーブルに誕生日を追加してみましょう

・追加後のユーザテーブル

Filed 名前
create 作成日時 timestamp
create_id 作成者 text
create_ip 作成IPアドレス text
update 最終更新日時 timestamp
update_id 最終更新者 text
update_ip 最終更新IPアドレス text
id ID number
name 名前 text
birthday 誕生日 timestamp

慣れないと違和感ありますが、まぁ慣れれば運用しながら項目追加しても
機能要件項目が離れないので、良いかなと思います。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?