データベースはシステムの基盤です。
DB設計に失敗するとアプリケーションの実装が複雑になる、などの辛い思いをします。
また、後から修正するのは実装影響が大きいため容易ではありません。
DB設計する上で自分が普段気をつけている箇所を記載します。
1, 検索するカラムにはINDEXを貼るようにする。(JOINするテーブルが2つ程度なら問題ありませんが、JOINの回数が増えると急激に重くなるの)
2, 後から必要になりそうなデータ(ユーザー情報)削除は物理削除ではなく、論理削除にする
3, booleanの場合はnull許容しない、またdefult値を必ず設定する
4, 自分だけではなく他人が見てわかりやすいカラム名称をつける
5, ユーザー(利用者)の購入履歴などのユーザーが後で見返したい情報は履歴テーブルに保存する
6, 開発者が後のバグなどを調査しやすいようにログテーブルを作成する
7, Json形式での保存はできる限り避ける(JSONデータ型は汎用性が高く便利だが、保存内容が不透明、SQL検索しづらいなどのデメリットが多い)
8, booleanのカラムはひと目でわかるようにする(is can has_ の様なprefixを付ける)
9, 正規化する
参考
DBエンジニア必見 => 名著「失敗から学ぶRDBの正しい歩き方」のまとめ - Qiita
【初心者向け】データベースのテーブル設計で僕が意識している6つのこと - Qiita