Avatar billede nph12 Nybegynder
21. december 2008 - 11:46 Der 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?
Avatar billede arne_v Ekspert
21. december 2008 - 15:55 #1
re 1)

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.
Avatar billede nph12 Nybegynder
21. december 2008 - 16:50 #2
Mange tak for dine svar.

1) Så du vil bare bruge INT? Skal man ikke reserverer, hvor meget man skal bruge af fx. INT og VARCHAR i databasen? 

2) Hvis UNSIGNED ikke har nogen praktisk betydning, så tror jeg, at jeg dropper UNSIGNED i mine sql-script.

3) OK. Så beholder jeg PRIMAY KEY sidst i mit sql-scriptet. Hvornår vil man sammensætte en PRIMARY KEY med mere end to felter?

4) Hvad er transactions eller foreign keys? Hvornår bruger man InnoDB og MyISAM?

5) Den uskik vil jeg så holde mig fra.
Avatar billede arne_v Ekspert
21. december 2008 - 17:00 #3
re 1)

Du skal angive plads for VARCHAR.

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.
Avatar billede nph12 Nybegynder
21. december 2008 - 17:18 #4
Endnu en gang mange tak for hjælpen:-) Opret et svar, hvis du vil have point.
Avatar billede arne_v Ekspert
21. december 2008 - 17:18 #5
svar
Avatar billede hypofysen Nybegynder
23. december 2008 - 22:38 #6
En lille kommentak selvom spørgsmålet er lukket,

vedr. spørgsmål 4, undersøg hvilken type dit webhotel understøtter, foreksempel ved jeg at one ikke understøtter InnoDB..
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