Задать вопрос

Как правильно организовать базу?

Здравствуйте, при разработке сайта на Django(что впрочем не так важно) возник вопрос по организации базы данных, как её сделать лучше и правильнее.

Сейчас есть примерно такая модель:
class Author(models.Model):
    name = models.CharField(max_length=200, null=True)

class Series(models.Model):
    name = models.CharField(max_length=200)
    desc = models.TextField(blank=True, null=True)

class Book(models.Model):
    title = models.CharField(max_length=400)
    ru_desc = models.TextField(null=True, blank=True)
    en_desc = models.TextField(null=True, blank=True)
    num_series = models.PositiveIntegerField()
    series = models.ManyToManyField(Series, blank=True, null=True)
    author = models.ManyToManyField(Author)


И есть непреодолимое желание сделать так, чтобы поля title, ru_desc, en_desc могли редактироваться с премодерацией(чтобы у модератора была возможность принять или отменить правку) + чтобы был лог изменений с возможностью отката на прошлые версии(примерно как на википедии, только с премодерацией а не постподерацией)

я так понимаю, что для этого каждому полю в таблице Book требуется создать по своей таблице с ForeignKey на Book?

т.е. сделать что-то подобное этому:

class Book(models.Model):
    series = models.ManyToManyField(Series, blank=True, null=True)
    author = models.ManyToManyField(Author)
    num_series = models.PositiveIntegerField()

class Title(models.Model):
    title = models.CharField(max_length=400)
    activ = models.models.BooleanField(default=False)
    book = models.ForeignKey(Book)
    create_time = models.DateTimeField(u'Дата публикации', default=timezone.now(), blank=True)
class RuDesc(models.Model):
    desc = models.TextField()
    activ = models.models.BooleanField(default=False)
    book = models.ForeignKey(Book)
    create_time = models.DateTimeField(u'Дата публикации', default=timezone.now(), blank=True)
class EnDesc(models.Model):
    desc = models.TextField()
    activ = models.models.BooleanField(default=False)
    book = models.ForeignKey(Book)
    create_time = models.DateTimeField(u'Дата публикации', default=timezone.now(), blank=True)


Правильно ли будет сделать именно так или есть какие-то другие способы о которых я просто не догадываюсь?
  • Вопрос задан
  • 2242 просмотра
Подписаться 4 Оценить Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы