前提・実現したいこと
テレビやライブ中継中に、極力手元を見ずスマートフォンで演技内容を入力・評価していく、簡単なフィギュアスケートの採点システムを作っています。
データベースを設計中に以下の課題が発生しました。
発生している問題
以下の内容を実現するためのDB設計
・極力手元を見ないで入力する為に、セレクトボタンやラジオボタンを使って演技の種類とGOE(評価)値をDBに送り、seedファイルに入力していた内容と比較してseedファイルの基礎点を引っ張って最急的な点数を出そうとしている。
・スマートフォンという画面が小さい中で入力を簡易にする為に、入力をウィザート形式(対話形式)で入力しようとしているため、テーブルをビュー画面毎に分ける必要があると考えている。
・ジャンプはコンビネーションをする場合がある
・後半になると基礎点が1.1倍になる
・最終的にすべて入力知終わったら、演技内容とGOEと総合点数をだそうと考えている。
seeds
1# ジャンプ基礎点 2 3# 1回転 4Jump_elements.create(name: "シングルトウループ", symbol: "1T", basic_score: 0.40) 5Jump_elements.create(name: "シングルサルコウ", symbol: "1S", basic_score: 0.40) 6Jump_elements.create(name: "シングルループ", symbol: "1Lo", basic_score: 0.50) 7Jump_elements.create(name: "シングルオイラー", symbol: "1Eu", basic_score: 0.50) 8Jump_elements.create(name: "シングルフリップ", symbol: "1F", basic_score: 0.50) 9Jump_elements.create(name: "シングルルッツ", symbol: "1Lz", basic_score: 0.60) 10# 2回転 11Jump_elements.create(name: "シングルアクセル", symbol: "1A", basic_score: 1.10) 12Jump_elements.create(name: "ダブルトウループ", symbol: "2T", basic_score: 1.30) 13Jump_elements.create(name: "ダブルサルコウ", symbol: "2S", basic_score: 1.30) 14Jump_elements.create(name: "ダブルループ", symbol: "2Lo", basic_score: 1.70) 15Jump_elements.create(name: "ダブルフリップ", symbol: "2F", basic_score: 1.80) 16Jump_elements.create(name: "ダブルルッツ", symbol: "2Lz", basic_score: 2.10) 17# 3回転 18Jump_elements.create(name: "ダブルアクセル", symbol: "2A", basic_score: 3.30) 19Jump_elements.create(name: "トリプルトウループ", symbol: "3T", basic_score: 4.20) 20Jump_elements.create(name: "トリプルサルコウ", symbol: "3S", basic_score: 4.30) 21Jump_elements.create(name: "トリプルループ", symbol: "3Lo", basic_score: 4.90) 22Jump_elements.create(name: "トリプルフリップ", symbol: "3F", basic_score: 5.30) 23Jump_elements.create(name: "トリプルルッツ", symbol: "3Lz", basic_score: 5.90) 24# 4回転 25Jump_elements.create(name: "トリプルアクセル", symbol: "3A", basic_score: 8.00) 26Jump_elements.create(name: "クワドトウループ", symbol: "4T", basic_score: 9.50) 27Jump_elements.create(name: "クワドサルコウ", symbol: "4S", basic_score: 9.70) 28Jump_elements.create(name: "クワドループ", symbol: "4Lo", basic_score: 10.50) 29Jump_elements.create(name: "クワドフリップ", symbol: "4F", basic_score: 11.50) 30Jump_elements.create(name: "クワドルッツ", symbol: "4Lz", basic_score: 12.50) 31 32 33# スピン基礎点 34 35# 単一姿勢・足変え無し 36# アップライトスピン 37Spin_elements.create(name: "アップライトスピンLv.B", symbol: "USpB", basic_score: 1.00) 38Spin_elements.create(name: "アップライトスピンLv.1", symbol: "USp1", basic_score: 1.20) 39Spin_elements.create(name: "アップライトスピンLv.2", symbol: "USp2", basic_score: 1.50) 40Spin_elements.create(name: "アップライトスピンLv.3", symbol: "USp3", basic_score: 1.90) 41Spin_elements.create(name: "アップライトスピンLv.4", symbol: "USp4", basic_score: 2.40) 42 43 44# レイバックスピン 45Spin_elements.create(name: "レイバックスピンLv.B", symbol: "LSpB", basic_score: 1.20) 46Spin_elements.create(name: "レイバックスピンLv.1", symbol: "LSp1", basic_score: 1.50) 47Spin_elements.create(name: "レイバックスピンLv.2", symbol: "LSp2", basic_score: 1.90) 48Spin_elements.create(name: "レイバックスピンLv.3", symbol: "LSp3", basic_score: 2.40) 49Spin_elements.create(name: "レイバックスピンLv.4", symbol: "LSp4", basic_score: 2.70) 50 51# キャメルスピン 52Spin_elements.create(name: "キャメルスピンLv.B", symbol: "CSpB", basic_score: 1.10) 53Spin_elements.create(name: "キャメルスピンLv.1", symbol: "CSp1", basic_score: 1.40) 54Spin_elements.create(name: "キャメルスピンLv.2", symbol: "CSp2", basic_score: 1.80) 55Spin_elements.create(name: "キャメルスピンLv.3", symbol: "CSp3", basic_score: 2.30) 56Spin_elements.create(name: "キャメルスピンLv.4", symbol: "CSp4", basic_score: 2.60) 57 58# シットスピン 59Spin_elements.create(name: "シットスピンLv.B", symbol: "SSpB", basic_score: 1.10) 60Spin_elements.create(name: "シットスピンLv.1", symbol: "SSp1", basic_score: 1.30) 61Spin_elements.create(name: "シットスピンLv.2", symbol: "SSp2", basic_score: 1.60) 62Spin_elements.create(name: "シットスピンLv.3", symbol: "SSp3", basic_score: 2.10) 63Spin_elements.create(name: "シットスピンLv.4", symbol: "SSp4", basic_score: 2.50) 64 65以下も同じようにレベル!〜4毎に入力していますが、文字数関係で省略しました。 66 67# フライングスピン 68# アップライトスピン 69 70# レイバックスピン 71 72# キャメルスピン 73 74# シットスピン 75 76 77# 単一姿勢・足変え有り 78# 足換えアップライトスピン 79 80# 足換えレイバックスピン 81 82# 足換えキャメルスピン 83 84# 足換えシットスピン 85 86 87# フライング・足変え有り 88# (フライング)足換えアップライトスピン 89 90# (フライング)足換えレイバックスピン 91 92# (フライング)足換えキャメルスピン 93 94# (フライング)足換えシットスピン 95 96 97 98# 足変え無し 99# コンビネーションスピン 100 101 102# 足変えあり 103# 足換えコンビネーションスピン 104 105 106# 足変え無し 107# フライングコンビネーションスピン 108 109# 足変えあり 110# フライング足換えコンビネーションスピン 111
該当のソースコード
ruby
1# テーブル設計 2 3## usersテーブル 4 5| Column | Type | Options | 6| ---------- | ------ | ------------------------- | 7| nickname | string | null: false | 8| email | string | null: false, unique: true | 9| encrypted_password | string | null: false | 10 11## Association 12- has_many :posts 13 14 15## postテーブル 16 17| Column | Type | Options | 18| ------------------- | ---------- | -------------------------------- | 19| athletes | string | foreign_key: true | 20| elements1 | references | foreign_key: true | 21| elements2 | references | foreign_key: true | 22| elements3 | references | foreign_key: true | 23| elements4 | references | foreign_key: true | 24| elements5 | references | foreign_key: true | 25| elements6 | references | foreign_key: true | 26| elements7 | references | foreign_key: true | 27| elements8 | references | foreign_key: true | 28| elements9 | references | foreign_key: true | 29| elements10 | references | foreign_key: true | 30| elements11 | references | foreign_key: true | 31| elements12 | references | foreign_key: true | 32| user | references | null: false, foreign_key: true | 33 34 35## Association 36 37- belongs_to :user 38 39## Athletesテーブル 40 41| Column | Type | Options | 42| ---------- | ------ | ------------------------- | 43| name | string | null: false | 44 45 46## Association 47- belongs_to :user 48- has_many :elements1 49- has_many :elements2 50- has_many :elements3 51- has_many :elements4 52- has_many :elements5 53- has_many :elements6 54- has_many :elements7 55- has_many :elements8 56- has_many :elements9 57- has_many :elements10 58- has_many :elements11 59- has_many :elements12 60 61## Elements1〜12 テーブル 62 63| Column | Type | Options | 64| ------------------- | ---------- | -------------------------------- | 65| text | string | | 66| symbol | string | | 67| goe | string | | 68| multiplication | string | | 69| basic_score | string | | 70| athlete_id | string | | 71 72 73## Association 74 75- belongs_to :athlet
試したこと
上記のように作成しましたが、テーブルを多く作成してしまうので、反応が遅くなるのではないかと考えました。もっとより効率良い方法があれば聞きたいです。
補足情報(FW/ツールのバージョンなど)
rails 6
macOS Catalina バージョン10.15.7
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/03/04 06:14
2021/03/04 07:27
2021/03/05 05:29