Дизайн базы данных: хранение полной истории транзакций И ​​быстрый просмотр текущего статуса? - PullRequest
1 голос
/ 01 декабря 2010

Это довольно простой вопрос, я новичок:)

Я строю библиотечную базу данных, используя Django & MySQL.База данных имеет понятия книг и пользователей и транзакций , когда пользователь вынимает или возвращает книгу.

Мне нужночтобы иметь возможность:

  • получить полный список транзакций для конкретной книги - кто ее проверил, и когда
  • быстро получит текущий статус книги.

Я думал об использовании таких таблиц, но есть ли проблемы с этим дизайном?

class Book(models.Model):
    name = models.CharField()
class User(models.Model):
    name = models.CharField()
TRANSACTION_TYPES = (
    ('I', 'Check in'),
    ('O', 'Check out'),
)
class Transaction(models.Model):
    book = models.ForeignKey(Book)
    user = models.ForeignKey(User)
    type = models.CharField(max_length=1, choices=TRANSACTION_CHOICES)
    date_added = models.DateTimeField(auto_now_add=True)

Это будет работать нормально для получения полного списка транзакций.Но если я хочу получить текущий статус книги, мне нужно будет просмотреть все транзакции книги и найти самые последние.

Это разумно?Это будущее?

Я не предвижу, что база данных станет такой большой, но есть ли более эффективный способ сохранить текущее состояние книги без отмены нормализации базы данных?

Все предложения с благодарностью приняты!

1 Ответ

1 голос
/ 13 января 2011

Хорошо спроектированная база данных не будет искать все транзакции книги, чтобы найти самые последние.По крайней мере, разработчик базы данных будет создавать индексы, и dbms будет (вероятно) использовать их.

MySQL может это сделать;Я недостаточно знаком с Django, чтобы знать, достаточно ли он умен, чтобы заставить MySQL это делать.Я был бы немного удивлен, если бы это было не так.

Относительно того, является ли это разумным и будущим - из моей местной библиотеки я проверил книги, компакт-диски (как музыки, так и книг), кассеты, карты, DVD-диски, видеоигры, образовательные программы, игрушки и художественные работы в рамке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...