21. december 2008 - 11:46Der er
5 kommentarer og 1 løsning
Begynder spørgsmål
Hej Jeg skal lave en login-side og i den forbindelse er jeg igang med, at lave en tabel i min database. Jeg er lidt usikker på, hvordan jeg skriver et sql-script korrekt. Mit sql-script ser sådan ud foreløbig:
CREATE TABLE user ( user_id INT NOT NULL AUTO_INCREMENT, username VARCHAR(32) NOT NULL, password VARCHAR(32) NOT NULL, PRIMARY KEY(user_id) ) TYPE=MYISAM;
1) Kan jeg skrive INT eller skal jeg skrive INT(XX)? Hvis jeg bare skriver INT udvides tabellen ikke løbende?
2) Skal jeg tilføje UNSIGNED til user_id, username og password?
3) Skal jeg sætte PRIMARY KEY ved user_id i stedet eller skal jeg bare angive PRIMARY KEY sidst i scriptet?
4) Hvilken type database skal scriptet gemmes som (TYPE=MYISAM eller en anden type)?
5) Skal jeg skrive noget omkring user, user_id, username og password?
Du kan godt nøjes med INT - der er stort set ingenting der bruger de 11 i INT(11).
re 2)
Du kan kun tilføje UNSIGNED til INT ikke til VARCHAR. Hvis user_id er unsigned kan den gå op til 4 milliarder fremfor kun 2 milliareder - jeg tvivler på at det har nogen praktisk betydning for dig.
re 3)
Ingen forskel. De to syntaxer gør det samme. Det skal til sidst, når der er mere end et felt i primary key.
re 4)
Hvis du skal bruge transactions eller foreign keys, så skal du bruge InnoDB. MyISAM er hurtigst.
re 5)
Du kan putte navnene i `` men lad endelig være - det er en uskik.
VARCHAR(50) betyder en VARCHAR med plads til 50 tegn
INT(11) betyder en int med plads til det samme som alle andre INT men hvis applikationen skulle få lyst til at spørge om hvad felt bredde den bør vise tallet med så er svaret 11 - jeg kender ingen apps som gør det !
re 2)
Det kan have betydning. SIGNED betyder både negative og positive tal. UNSIGNED betyder kun positive tal. Men lige netop for dit user_id tror jeg ikke at det betyder noget. Den dag du passerere 2 milliarder registrerede brugere, så har du nok råd til et redesign.
re 3)
I nogle tilfælde har man brug for 2 felter for at have en unik identifikation.
re 4)
Hvis ikke du ved hvad det er, så har du ikke brug for det ! :-)
Transactions er en bundling af flere opdateringer, således at enten udføres de alle eller så udføres der ingen.
Foreign keys gør det muligt at sikre integritet mellem forskellige tabeller.
vedr. spørgsmål 4, undersøg hvilken type dit webhotel understøtter, foreksempel ved jeg at one ikke understøtter InnoDB..
Synes godt om
Ny brugerNybegynder
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.