Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Logi czynności dla różnych modułów
wujek2009
post
Post #1





Grupa: Zarejestrowani
Postów: 350
Pomógł: 31
Dołączył: 23.05.2010

Ostrzeżenie: (0%)
-----


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?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
irmidjusz
post
Post #2





Grupa: Zarejestrowani
Postów: 279
Pomógł: 60
Dołączył: 25.02.2012

Ostrzeżenie: (0%)
-----


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?


--------------------
there is much to be learned
Go to the top of the page
+Quote Post
wujek2009
post
Post #3





Grupa: Zarejestrowani
Postów: 350
Pomógł: 31
Dołączył: 23.05.2010

Ostrzeżenie: (0%)
-----


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?
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 15:52