dreasMedlem sedan jan. 2004140 inlägg Hej,
Jag är i tankarna att använda timestamp i MySQL som primary key / id.
Anledningen till detta är, som jag förstår det, att man inte är begränsad till antalet poster såsom en id INT är. Vidare kommer jag ändå redan ha en timestamp för varje rad.
Mina funderingar är ifall det på något sätt anses som overkill?
Hur säkert fungerar det, dvs. är sannolikheten stor att två poster sker exakt samtidigt? Behöver jag i sådant fall alltid göra en kontroll innan insättning i databasen?
Sedan lagrar ju MySQL timestampen som ett faktiskt datum med tid, och inte som en UNIX timestamp. Går detta att ändra?
UNIX varianten ser ju mer ut som ett id, och fungerar nog "bättre" om man skulle behöva använda webbadress raden för att göra querys.
Tack på förhand!
SPiNMedlem sedan mars 20007 896 inlägg Räkna aldrig bort mindre sannolika scenarion (att två personer postar på samma sekund)! :)
Ett bättre alternativ än en unsigned int som id-fält, kan vara att använda ett UUID (Universal Unique Identifier) genom funktionen uuid(). Sannolikheten att du genererar två likadana UUIDs är mycket mindre än om två personer postar något samtidigt. Det är inte lika snällt att lagra som heltal möjligtvis, men om du är rädd för att du får fler poster än 4294967294 stycken (som är största möjliga storlek på en unsigned int satt som inkrementellt id), bör du lagra ett UUID istället för timestamp.
LarsGMedlem sedan dec. 200012 464 inlägg Om du räknar med att ha mer än 2 miljarder poster i din tabell så kan du använda bigint som datatyp.
dreasMedlem sedan jan. 2004140 inlägg Okej, tack för era svar.
Jag har ju alltid tidigare använt id som är unsigned med AI, men nu på senare tid har jag läst/hört att det ska vara "fult" att designa en databas på detta sätt.
Det är inget ni har någon information om? Eller menar ni att det bara är tuta och köra precis som tidigare?
SPiNMedlem sedan mars 20007 896 inlägg Jag kan inte förstå varför det skulle vara fult att använda unsigned int för inkrementella ID-nummer? Vem har du fått detta suspekta påstående från? Jag vet däremot att om man använder unsigned bigint och sedan efterfrågar last_insert_id() kan skapa problem, eller åtminstone kunde göra det förut. Kom bara ihåg att sätta alla FK's till unsigned också, så ska det inte vara några problem.
Förväntar du dig färre än 4.3 miljarder poster, skulle jag använda unsigned int som datatyp. Fördelen med UUID är att det är en utarbetad standard för ID-nummer, och Microsoft har t.o.m. hållit sig till standard (dock kallar dom det för GUID) - vilket kan vara en fördel i vissa fall.