Gå til innhold

Anbefalte innlegg

Hei

 

Jeg har ett lite dillemma her.

 

Jeg har ett felt id int(5) som er primary key.

 

når jeg legger til en rad i databasen så blir det lagt inn ett tall automatisk der

 

feks:

id

1

2

3

meen om jeg sletter alt som har med feks id 2 å gjøre og legger inn en ny oppføring så blir det:

id

1

3

4

Er det en måte å trimme dette på slik at de ledige tallene under blir fyllt opp?

Lenke til kommentar
Videoannonse
Annonse

Hei hei.

 

Bruker mysql.

 

Jeg vil bare ha det til å se ryddig og fint ut. =) Og også for å få det til. Er ikke kult med tomme felter i en tallrekke uansett sammenheng (iallefall i dette tilfellet) =)

Lenke til kommentar
Jeg vil bare ha det til å se ryddig og fint ut. =) Og også for å få det til. Er ikke kult med tomme felter i en tallrekke uansett sammenheng (iallefall i dette tilfellet) =)

 

Kjempefint at du vil gjøre ting ryddig og fint, men i dette tilfelle blir det faktisk ryddigst å ikke gjenn-bruke en gammel ID.

 

Se for deg at du har to tabeller, hvor du peker fra tabell B til ID i tabell A. Så sletter du en rad fra A, og gjen-bruker IDen. Da kan du ha en rad fra tabell B som peker til feil rad i tabell A. Det er mye bedre at den peker til en manglende ID. Det blir både mer riktig, og lettere å finne ut at noe er feil (dersom det er det).

Lenke til kommentar
Jeg vil bare ha det til å se ryddig og fint ut. =) Og også for å få det til. Er ikke kult med tomme felter i en tallrekke uansett sammenheng (iallefall i dette tilfellet) =)

 

Kjempefint at du vil gjøre ting ryddig og fint, men i dette tilfelle blir det faktisk ryddigst å ikke gjenn-bruke en gammel ID.

 

Se for deg at du har to tabeller, hvor du peker fra tabell B til ID i tabell A. Så sletter du en rad fra A, og gjen-bruker IDen. Da kan du ha en rad fra tabell B som peker til feil rad i tabell A. Det er mye bedre at den peker til en manglende ID. Det blir både mer riktig, og lettere å finne ut at noe er feil (dersom det er det).

Nå høres det ut som du ikke har foreign keys, noe som er veldig lite ryddig. ;)

Lenke til kommentar
Nå høres det ut som du ikke har foreign keys, noe som er veldig lite ryddig. ;)

 

Sant, sant.

 

Egentlig har jeg mest lyst å anbefale PostgreSQL, som er kraftigere, har bedre dokumentasjon, og mer behagelig grensesnitt.

 

Vil man være ryddig bør man også ha ACID, transaksjoner etc, noe som for MySQL betyr InnoDB. Da er PostgreSQL også en raskere database.

Lenke til kommentar

en ting som ikke har blitt nevnt her er at nummerserien i primærnøklene ikke nødvendigvis skal vises til bruker med mindre det er et grensesnitt hvor denne nøkkelen blir brukt for identifikasjon.

 

Hvis du skal ha ti påfølgende rader numerert så vil du holde telleren utenfor og bruke kode som:

 

SELECT * FROM tabell LIMIT $offset, $row_count

 

hvor $offset er den første raden i gruppen du vil vise og $row_count er hvor mange oppføringer du vil vise.

 

Typisk så er $offset et produkt av $row_count så veldig ofte så vil $offset = $row_count * $page_id, hvor $page_id er "sidenummeret" i listen.

 

Håper det hjelper deg til å gjøre det jeg tror du forsøker å gjøre.

Lenke til kommentar
  • 4 uker senere...

en annen (og egentlig eneste) løsning dersom du på død og liv vil ha løpende verdier i primærnøklen din er å aldri slette poster, men ha et felt som viser om posten er gyldig eller ikke og så skjekke for denne verdien i spørringer evt lage et view som filterer på dette.

 

Men i utgangspunktet er jeg enig med de andre her - la primærnøklen være databasens sak. :)

 

M.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...