Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Logi czynności dla różnych modułów
Forum PHP.pl > Forum > Bazy danych > MySQL
wujek2009
Cześć.

Zamierzam zbudować moduł logów czynności/wykonanych operacji w oparciu o inne moduły dostępne na stronie (np. "user", "articles", "forum")
Przykład:
Kod
~ Użytkownik "X" edytował użytkownika "Y"
~ Użytkownik "X" napisał artykuł o nazwie "ABCD"
~ Użytkownik "X" usunął użytkownika "Y"


Mógłbym trzymać prostej konstrukcji tabeli typu: log_id, time, user_id, content - gdzie w content umieszczałbym bezpośrednio kod HTML
z w/w tekstami - jednak to będzie kolidować jeśli np. po czasie użytkownikowi "Y" zmienimy login na "Z" - bym musiał filtrować logi pod kątem hasła "Y" aby zmienić
jego nazwę użytkownika.

Krótko mówiąc - interesują mnie logi czynności z relacją do innych tabel ("user", "articles", "forum") - tylko w jaki sposób zrealizować schemat bazy - aby podczas pobierania wszystkich logów wyglądało to w miarę optymalnie?
irmidjusz
A zastanawiałeś się już nad implikacją utworzenia relacji między tabelą logs a pozostałymi? Np. co, jeśli zostanie usunięty użytkownik?
wujek2009
Jeśli użytkownik zostanie usunięty to dla "content" pójdzie zwykły tekst/kod HTML z jego ostatnim loginem - odnośnika i tak nie zrobię kierującego do jego profilu, ponieważ nie będzie istnieć już w serwisie.

Wracając jednak do relacji: zastanawiam się nad takim rozwiązaniem:
  1. SELECT log.*, art.*, user.*
  2. FROM logs AS log
  3. LEFT JOIN articles AS art ON (log.module_key=article.id AND log.module_name = 'article')
  4. LEFT JOIN users AS user ON(log.module_key=user.id AND log.module_name = 'user')


I wówczas dodam dwie nowe kolumny: "module_key" - które będzie odpowiadać za identyfikator z modułu
oraz module_name (enum: article, user, forum, itd) - tylko nie testowałem tego jeszcze, dopiero wstałem i taki pomysł mi powstał w głowie, ale czy zadziała?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.