Kom ihåg mig?

Mysqldesign (logg för skapa/ändra rader)

Ämnesverktyg Visningsalternativ
Oläst 2008-10-09, 09:16 #1
totoos avatar
totoo totoo är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Nov 2006
Inlägg: 730
totoo totoo är inte uppkopplad
Mycket flitig postare
totoos avatar
 
Reg.datum: Nov 2006
Inlägg: 730
Hallå

Jag är lite kluven angående tabelldesign...

I alla mina projekt, i nästan alla tabeller (beroende på hur de används) så sparar jag användarid (i mitt inloggningssystem), tidpunkt och IP för tidpunkt objektet skapades och dess senaste ändring.

Så nästan alla mina tabeller har följande 6 fält:

createDate
createUser
createIP
editDate
editUser
editIP

Det känns naturligtvis något enformigt att ha med dessa upprepade i 75% av alla tabeller man har.

Istället funderar jag på att göra en tabell "updateLog" som har tre av dessa fält istället (tid, användare och ip), och ett fält som härleder till tabell->rad man har ändrat. Eftersom man bara har tre av fälten så kan man spara 2 rader per tabell->rad (en skapa, och en senast ändrad) eller fler rader om man behöver en komplett logg med historik.

Så jag undrar:
Tycker ni att det är snyggare att göra en tabell, typ updateLog istället för att varje rad själv ska innehålla detta?

Såhär ser jag på saken:

Fördelar:
Färre upprepningar och mindre databasrelaterad kod (vilket också leder till marginellt snabbare databasdesign)
Man kan spara lite minne, för alla rader som aldrig har blivit ändrade behöver bara ha info för när raden är skadad.
Det finns ganska smidig potential för att spara mer komplett historik kring ändringar istället för bara senast ändrad (för de tabeller som ev. vill ha sånt stöd)

Nackdelar:
Extra databasanrop när rader skapas/ändras samt att jag måste joina in en ytterligare tabell när datan ska presenteras.

Hur gör ni?

Jag funderar på om man också ska optimera bort IP-fältet och koppla det till user istället.
totoo är inte uppkopplad   Svara med citatSvara med citat
Oläst 2008-10-09, 09:42 #2
grinditwp grinditwp är inte uppkopplad
Flitig postare
 
Reg.datum: Mar 2008
Inlägg: 320
grinditwp grinditwp är inte uppkopplad
Flitig postare
 
Reg.datum: Mar 2008
Inlägg: 320
Jag föredrar updateLog systemet. Detta system gör så att man (jag) kan spara logg om vad som sker oberoende vilken tabell.

En idé är att spara:

date
user
ip
loggid
(alternativt) note

Vill du veta vem som skapade en datapost ollar man helt enkelt bara vad första date och user är för ett loggid.

Ex. Vi har ett cms som låter användare skapa och redigera sidor.
Kalle, skapar en ny sida, i loggen får denna händelse loggid: 1, date: 200810080938, ip: 255.1.99.22, user: Kalle

Sedan kommer Anton och gör en uppdatering, då skapas en ny loggpost, loggid är fortfarande 1, date: 200810090805, ip: 255.1.12.23, user: Anton

loggid, skulle kunna vara sidans id i databasen. På så vis kan vi enkelt se all information om just denna sida, när den skapades och när den blivit ändrad.

Känns onödigt att spara create date, ip och user varje gång någon uppdaterar. Det kan man istället bara kolla bakåt på första posten.

Bara en snabb reflektion.
grinditwp är inte uppkopplad   Svara med citatSvara med citat
Oläst 2008-10-09, 10:37 #3
totoos avatar
totoo totoo är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Nov 2006
Inlägg: 730
totoo totoo är inte uppkopplad
Mycket flitig postare
totoos avatar
 
Reg.datum: Nov 2006
Inlägg: 730
OK tack för input. Men jag sparar inte de tre create-fälten mer än i min INSERT-fråga... min UPDATE ändrar de andra tre (edit...).

Men det kanske är förnuftigt att göra en egen loggtabell... Det känns rent allmänt lite snyggare.
totoo är inte uppkopplad   Svara med citatSvara med citat
Svara


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 
Ämnesverktyg
Visningsalternativ

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 17:35.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson
 
Copyright © 2017