MySQL

テーブル設計について

データベース(以下DB)のテーブル設計についてです。
テーブル設計は一箇所変更があっただけなら一箇所変更するだけで済むようにというのが基本です。
そうなるようにテーブルを分割することを正規化といいますが、正規化については下記記事がわかりやすかったのでこちらを参照していただければいいかと思います。
https://qiita.com/naoqoo2/items/cdda5fe6f9935a03189d
実際のところ正規化を考えてというよりは感覚で分割しますが、基本はこのようなやり方です。
ちなみに、第5正規化までありますが細かくしすぎるとプログラムで使うときにかなり使いにくくなります。
正規化すればするほどいいというわけではないので第三正規化程度にしておきましょう。
テーブルのカラムについては組織や人によって色々やり方はありますが私は
id (uuid / unsigned integer) : レコードを識別するための一意な(重複しない)値
status (integer) : 有効、無効、進捗など
created_at (timestamp / datetime) : そのレコードが作成された日時
updated_at (timestamp / datetime) : そのレコードが最後に更新された日時
は基本いれます。()内は設定する主な型です。利用するDB(MySQLやPostgreSQLなど)により設定できる型が若干異なるので詳細は省略します。
statusは今は使わないというときもありますが、大体後々のためいれます。
※小さいサービスで、一瞬とまったりしても特に問題ないなら必要になってから追加でもいいと思います。
大きいサービスで数千万レコードあるようなテーブルにカラム追加をしたら数分とか数十分とか止まって影響でかいので必要になる可能性が高いなら設計の時点で入れておきます。
statusと同様にtypeも割といれることが多いです。
また、テーブル設計はindexが理解できているとより感覚的にわかりやすくなるでしょう。
テーブルを作成する際はindexの設定も必要なのであわせて学習しておきましょう。

-MySQL

Copyright© F27P , 2021 All Rights Reserved Powered by AFFINGER5.