以下は、大学のデータベースとその評価です。以下、私が考えた方法です
- 各クラス (バッチ、例: 2009 年のバッチ) は部門に属します
- 各学科(例:薬学科)は大学に属しています
特にレーティングが気になるので。私はバッチを評価することを考えました。マネージャーまたはいくつかのモデルメソッドを使用して、部門または大学の合計評価を計算できます。
- 各クラスには評価があります
注: 1 つのクラスに対して、さまざまなユーザーによる多数の評価が存在する場合があります。したがって、総評価または平均評価はメソッドで行う必要があると思います。
これが私がこれまで行ってきた方法です
class Rating(models.Model):
positive = models.FloatField(default=0)
negative = models.FloatField(default=0)
class College(models.Model):
name = models.CharField(max_length=200)
website = models.URLField()
class Department(models.Model):
name = models.CharField(max_length=200)
college = models.ForeignKey(College)
class Batch(models.Model):
passout_year = models.IntegerField(max_length=4)
department = models.ForeignKey(Department)
rating = models.ForeignKey(Rating)
このスキーマにはいくつかの問題があります。
各バッチは単一の評価のみを持つことができます! ただし、多くのユーザーが署名した複数の評価を探しています (ただし、ユーザー モデルはまだ統合されていません)。
各バッチは学科に属し、各学科はカレッジに属します。しかし、関係を別の方法で考えることもできます。
各大学には多くの学科があり、各学科には多くのバッチがあります..
では、ForeignKey の代わりに ManyToManyField を使用する必要がありますか?
スキーマはどのように見えるべきですか?
私が考える最も重要な変更の 1 つは、
class Rating(models.Model):
..
..
user = models.ForeignKey(django.contrib.auth.models.User)
class College(models.Model):
..
..
departments = models.ManyToManyField(Department)
class Department(models.Model):
..
college = models.ForeignKey(College)
batches = models.ManyToManyField(Batch)
class Batch(models.Model):
..
department = models.ForeignKey(Department)
rating = models.ManyToMany(Rating)
これは正しいでしょうか?そうでない場合はどのように見えるか
ありがとう