お世話になっています。
アプリを開発しているのですが、テーブルの設計についてご意見をお聞かせください。
アプリの内容としては、外部サービスの情報を本アプリに入力し、外部サービスにかかる費用を計算する簡単なものです。が、その外部サービスの情報の中の一部に可変なデータが存在します。
その可変データをどのように保存していくのが良けばいいのか、詰まってしまってます。
入力情報
・外部サービスの識別番号
・費用
・外部サービスでのオプション(オプション名・計算方法) ← 可変量
以上の3つの入力から費用を算出します。
外部サービスのオプションについて
ひとつの識別番号について、複数のオプションを付与されています。ただし付与できるオプションの個数は不明(3個のオプション付与の場合もあれば10個のオプションが付与されることも)
計算方法自体は事前にわかっている3種類のいずれかです。
現在の実装状況
今のところ、modelを以下のように実装しています。
optionsはオプション全体をjson化し、TextFieldに保存しています。
python
1class Report(models.Model): 2 # 識別番号 ユニークなものにする 3 identification = models.CharField(max_length=20, unique=True) 4 # 費用 5 price = models.IntegerField(default=0) 6 # 外部サービスのオプション 7 # json形式でオプションを保存し、json.dumpで読み込む……予定 8 options = models.TextField() 9 10# optionsの例 11# これをstr化して保存してます…… 12options = { 13 "option_name" : { 14 "method" : "method1", 15 "const" : xx, 16 "maximum" : yy, 17 }, 18 "option_hoge" : { 19 "method" : "method2", 20 "minimum" : zz, 21 }, 22 "option_huga" : { 23 "method" : "method1", 24 "const" : xy, 25 "maximum" : yz, 26 }, 27 "option_tomato" : { 28 "method" : "method3", 29 "const" : a, 30 }, 31 ... 32}
修正したい部分
自分自身データベース初心者故、このような可変個数データをどのように扱えばいいのかわかりません……が、少なくとも現状のjson保存はやってはいけないパターンだと思っています。(柔軟性がない)
テーブルの設定方法として、良い方法はありませんか?よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。