質問: SQL初心者です。 勉強のため、自宅で家計簿アプリを開発しようと思っているんですが、テーブル名に迷っています。 具体的には、以下のXXXの部分に悩んでます。 候補としては「monthly_expense」が挙がっていますが なんだかしっくりこないのでアドバイスお願いします。 ■テーブル名 1.XXX:年月毎の出費情報を管理するテーブル ■カラム名 ID id 年月 year_month カテゴリ catg_id カテゴリ名 catg_name 名称 name 数量 item_num 金額 price ■テーブル名 2.catg_master:出費の区分を管理するテーブル ■カラム名 カテゴリID catg_id カテゴリ名 catg_name 追記 -- kabichanさん ご指摘ありがとうございます。 以下のように修正しました。 修正箇所を○、削除箇所を×にしてあります。 ■テーブル名 ○1.expense:年月毎の出費情報を管理するテーブル ■カラム名 ID id ○出費年月 enpense_date カテゴリ catg_id ×カテゴリ名 catg_name 名称 name 数量 item_num 金額 price ■テーブル名 2.catg_master:出費の区分を管理するテーブル ■カラム名 カテゴリID catg_id カテゴリ名 catg_name
回答: おそらくこの種類の質問はスタックオーバーフローではなく、ソフトウェアエンジニアリング向けの質問になるような気がしますが、日本語版ソフトウェアエンジニアリングがなさそうなので一応回答させて頂きます。 ネーミングコンベンションは個人や会社によってそれぞれ違いますので、あくまでも個人的な意見になりますが、まず`year_month`のデータ型を`datetime`にして、`ExpenseDate` などにします。その方がデータを取り出す時にdaily, monthly, yearlyなどフレキシブルに対応できると思います。 そうした場合、テーブル名も`Expense`が良いのではないかと思います。(monthlyに限定しないという意味で) あと、これも質問にはありませんが`Expense`テーブルに`catg_name`をいれる必要はありません。二つのテーブルを`join`することによって、`catg_name`を取り出すというのが`relational database`のメリットです。