Witam,
ostatnio przeglądając jakiegoś projektu strony WWW napisanego w Pythonie (to akurat mało ważne) znalazłem następujący koncept modelu (tabeli bazy danych) dla obiektu Post:
class Post(db.Model):
__tablename__ = "posts"
id = db.Column(db.Integer, primary_key=True)
user_id = db.Column(db.Integer, db.ForeignKey("users.id"))
title = db.Column(db.String)
content = db.Column(db.Text)
date_created = db.Column(db.DateTime, default=datetime.utcnow())
comment_count = db.column_property(
db.select([db.func.count(Comment.id)]).where(Comment.post_id == id).as_scalar())
Zainteresowała mnie ostatnia linia modelu comment_count
, gdzie przechowywana jest liczba komentarzy. Myślałem, że tego typu informacje, jak wspomniana liczba komentarzy jest wyliczana na bieżąco (np. jak użytkownik wyświetli dany post lub listę postów), no ale z drugiej strony, jak chce się wyświetlić 20 wpisów na jednej stronie wraz z informacją o liczbie komentarzy, to do bazy danych poleci dużo (i stosunkowo mało istotnych) zapytań..
Podsumowując - czy tego typu praktyki, jak tworzenie osobnej kolumny i przechowywanie 'stałej' wartości (w kontekście tego, co napisałem) są powszechnie stosowane ? No i czy jest to dobre rozwiązanie?
pzdr,
adamError