※ ChatGPTを利用し、要約された質問です(原文:テーブル設計について)
テーブル設計について
このQ&Aのポイント
簡素なウェブアプリケーションを作成しようとしています。テーブルの設計をしているところなのですが、あまりしっくり来ないのでアドバイスを頂きたいです。
階級を付け、その履歴を追えるようにテーブルに変更を加えたいです。
階級の変更の回数を気にしなくていいような何らかの新しい別のテーブルを作る方法などありますでしょうか?
簡素なウェブアプリケーションを作成しようとしています。テーブルの設計をしているところなのですが、あまりしっくり来ないのでアドバイスを頂きたいです。
仮にスタッフというテーブルがあるとします。スタッフテーブルには名前、性別、生年月日というカラムがあります。これに階級を付け、その履歴を追えるように変更したいです。つまり、スタッフAさんは1998年にアシスタント、2000年にチームサブリーダー、2005年から現在に至ってチームリーダー。。といったような情報を(必要があれば)クエリで取得できるようにテーブルに変更を加えたいです。
まずは階級名自身が変更、追加になることを考えてランクというテーブルを作成しました。属性は、プライマリキーとランク名です。
イメージ
1 | アシスタント
2 | チームサブリーダー
3 | チームリーダー
4 | ディレクター
...
次に、スタッフテーブルにYEAR1、ランク1、YEAR2、ランク2、YEAR3、ランク3という属性を持たせスタッフテーブルからランクテーブルに参照させようかと考えたのですがこれだと数に限りがあるしなんだかあまり柔軟性がないような気がします。このような場合、階級の変更の回数を気にしなくていいような何らかの新しい別のテーブルを作る方法などありますでしょうか?もしそうだとするとどのような属性を持ったテーブルをつくればよいでしょうか?テーブル設計には色々な方法があるのは承知していますが、もしお薦め出来る(出来れば一般的な)いい方法があればアドバイスお願いします。
お礼
なるほどわかりました。ご回答有り難うございました。