2012-03-26, 10:49
#13
Risken att jag nån gång kommer stöta på er i arbetslivet framkallar vågor av panik i mig och lämnar mig med en känsla av att det digitala samhället kommer göra en core dump när nästa generation ska ta över.
Lyssna noga nu. 50K rader i en tabell är absolut ingenting. Jag kan inte understryka detta nog. Om du så har gjort alla fel i boken två gånger och dessutom portat BeOS till ABC80 och kör din mysql-server på den hojen borde en SELECT * på 50K poster inte märkas.
Om utvecklare inte bemödar sig att ta reda på vad ett databasindex är föreslår jag att utvecklaren i fråga väljer ett annat sätt att lagra sitt data. T.ex en textfil och gangnar sig av regular expressions för att hämta fram det aktuella datat.
Databasindex är till för flera saker. Det ni pratar om här är att snabba upp en selectering av en datamängd. Det är en anledning. Men ett databasindex är först och främst ett sätt att RELATERA information till ANNAN information.
Till exempel kan man ta alla elever som går på daglig verksamhet i regi av samhall, tilsammans med alla skolor som samhall har i Sverige, och genom att indexera detta med ett enkelt nummer, påvisa vilken elev som går på vilken skola. Den enklaste formen av relation som finns, då en elev tillhör en skola. 1 till 1. Ett annat exempel är relationen Personnummer till namn.
Men ibland blir det klurigt. Ibland kan en sak vara relaterad till många andra. Vissa elever har speciella behov. Då kan man få hjälp av hjälpmedelscentralen. Det vore ganska taskigt av hjälpmedelscentralen om de vägrade låna ut mer än ett hjälpmedel till varje behövande. Vad ska Börje göra nu?
Vi behöver relatera den behövandes personnummer med varje hjälpmedel. Men personnumer är ju unikt. Det här tål att tänkas på.
Vi gör helt enkelt så att vi skapar en databstabell med kolumnerna personnumer och hjälpmedelsnr, och här kommer det eleganta, vi skapar ett index som innehåller BÅDA kolumnerna och talar om att detta sammansatta index ska vara unikt.
Vi har inte bara löst problemet med att kunna spara vilka hjälpmedel Börje behöver, vi har dessutom MODELLERAT vår databsmodell så att Börja inte kan låna samma sak två gånger! Wow!
Relationsdatabaser skall per definition använda relationer. Relationer skapas med hjälp av index.
Om du inte fattar ett jota av vad jag snackar om, ha för vara att ALLTID göra på följanade sätt. Varje gång du skapar en tabell i en databas så se till att den första kolumnen är ett löpnummer med AUTO-INCREMENT som du döper till samma sak som tabellen + 'id'. Till exempel ska tabellen tblUser innehålla UserId som första kolumn, och den kolumnen skall vara indexerad som PRIMARY.
UserId INT NOT NULL AUTO_INCREMEN;
PRIMARY KEY (UserId);
Efter detta lägger du in resten av dina kolumner i tabellen. Att du oundvikligen kommer att använda fel abstraktionsnivå när du modellerar ditt data kan du nu strunta i, för med denna enkla åtgärd av dig möjliggör du för en stor pojke att rätta till dina misstag och konvertera ditt data.
Björn Gustavsson hade fel, det är inte Priests i WOW som sprider hat på Internet..
Lyssna noga nu. 50K rader i en tabell är absolut ingenting. Jag kan inte understryka detta nog. Om du så har gjort alla fel i boken två gånger och dessutom portat BeOS till ABC80 och kör din mysql-server på den hojen borde en SELECT * på 50K poster inte märkas.
Om utvecklare inte bemödar sig att ta reda på vad ett databasindex är föreslår jag att utvecklaren i fråga väljer ett annat sätt att lagra sitt data. T.ex en textfil och gangnar sig av regular expressions för att hämta fram det aktuella datat.
Databasindex är till för flera saker. Det ni pratar om här är att snabba upp en selectering av en datamängd. Det är en anledning. Men ett databasindex är först och främst ett sätt att RELATERA information till ANNAN information.
Till exempel kan man ta alla elever som går på daglig verksamhet i regi av samhall, tilsammans med alla skolor som samhall har i Sverige, och genom att indexera detta med ett enkelt nummer, påvisa vilken elev som går på vilken skola. Den enklaste formen av relation som finns, då en elev tillhör en skola. 1 till 1. Ett annat exempel är relationen Personnummer till namn.
Men ibland blir det klurigt. Ibland kan en sak vara relaterad till många andra. Vissa elever har speciella behov. Då kan man få hjälp av hjälpmedelscentralen. Det vore ganska taskigt av hjälpmedelscentralen om de vägrade låna ut mer än ett hjälpmedel till varje behövande. Vad ska Börje göra nu?
Vi behöver relatera den behövandes personnummer med varje hjälpmedel. Men personnumer är ju unikt. Det här tål att tänkas på.
Vi gör helt enkelt så att vi skapar en databstabell med kolumnerna personnumer och hjälpmedelsnr, och här kommer det eleganta, vi skapar ett index som innehåller BÅDA kolumnerna och talar om att detta sammansatta index ska vara unikt.
Vi har inte bara löst problemet med att kunna spara vilka hjälpmedel Börje behöver, vi har dessutom MODELLERAT vår databsmodell så att Börja inte kan låna samma sak två gånger! Wow!
Relationsdatabaser skall per definition använda relationer. Relationer skapas med hjälp av index.
Om du inte fattar ett jota av vad jag snackar om, ha för vara att ALLTID göra på följanade sätt. Varje gång du skapar en tabell i en databas så se till att den första kolumnen är ett löpnummer med AUTO-INCREMENT som du döper till samma sak som tabellen + 'id'. Till exempel ska tabellen tblUser innehålla UserId som första kolumn, och den kolumnen skall vara indexerad som PRIMARY.
UserId INT NOT NULL AUTO_INCREMEN;
PRIMARY KEY (UserId);
Efter detta lägger du in resten av dina kolumner i tabellen. Att du oundvikligen kommer att använda fel abstraktionsnivå när du modellerar ditt data kan du nu strunta i, för med denna enkla åtgärd av dig möjliggör du för en stor pojke att rätta till dina misstag och konvertera ditt data.
Björn Gustavsson hade fel, det är inte Priests i WOW som sprider hat på Internet..
__________________
Senast redigerad av HectorPi 2012-03-26 kl. 10:53.
Senast redigerad av HectorPi 2012-03-26 kl. 10:53.