Avatar billede claushelth Nybegynder
09. februar 2003 - 16:11 Der er 4 kommentarer og
1 løsning

Hvorfor def. på felters længde i Tabeller

Jeg sidder med en MySql-DB og en hjemmeside i PHP.

Jeg stolte naivt på at min DB ville tage sig af hvis en bruger indtastede et for langt tekststykke, og dette ikke ville blive nødvendigt at behandle i hjemmesiden.

Men nej...man kan endda sætte ind i DB via PhpMyAdmin med jor lange sætninger uden DB brokker sig...hvad er så meningen med at definere det når man oprette tabellen?

claus
Avatar billede morw Nybegynder
09. februar 2003 - 16:15 #1
Meningen er at man ikke bruger mere plads end nødvendigt.
Avatar billede lajer Nybegynder
09. februar 2003 - 16:15 #2
MySQL spytter ikke fejl ud, den tager bare så meget af strengen der indsættes som den har lov til, og sætte det ind.

Ideén med at sætte en varchar til eks. 100 og ikke 200, kunne være for at spare plads.

Hvis du sætter en varchar til eks. 200 og der kun bliver fyldt 100 i den, så udfylder MySQL selv de resterende 100 med en "usynlig" data, som ligger og fylder (få bytes godt nok, men på størrer sites har det noget at sige).
Avatar billede claushelth Nybegynder
09. februar 2003 - 16:21 #3
det vil jo sige at man bare kunne sætte en varchar til eks. 10 tegn hver gang, for hvis det bliver sat mere ind end det, så er det også ok?

Jeg troede bare at naå man bestemte størrelsen på en varchar så blev der allokeret x antal bytes som i skriver. Men hvis der så er en der "kommer til" at at skive i et felt med det dobbelte antal tegn end der er allokeret til, så overskrv den noget den ikke måtte...er det ikke menningen med allokering?
Avatar billede arne_v Ekspert
09. februar 2003 - 23:17 #4
Det er en max. på hvormange bytes der kan gemmes i feltet.

MySQL giver ikke nogen fejl, hvis man forsøger at indsætte
længere strenge, men smider bare det den er for lang væk.

Det synes jeg er en fejl i MySQL, men sådan er det altså.

Der kan være mange gode grunde til at sætte en max længde på
et fekt. Det gør det bl.a. noget nemmere at kode en applikation
der bruger databasen, fordi man kender max længden på felterne.

I nogle database sparer man også plads. Andre databaser er smarte
nok til kun at gemme actual bytes for en varchar. Jeg ved ikke
hvad MySQL gør.
Avatar billede claushelth Nybegynder
10. februar 2003 - 00:00 #5
ok Det var nok egentlig det svar jeg ville have...

Jeg havde faktisk heller ikke ret i at man kan indsætte større værdier i DB via phpMyAdmin, end man har tilladt i DB

Takker
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester