Avatar billede startlinket.dk Nybegynder
24. maj 2002 - 18:55 Der er 32 kommentarer og
1 løsning

Hjælp til datatyper...

På bytte.startlinket.dk har jeg nogle bytteprogrammer.
Dem vil jeg gerne have optimeret, ved at få lavet databasen som den skal være.
Her har jeg lige hurtigt indsat informationer om tabellen:

CREATE TABLE `banner468x60` (
  `id` int(11) NOT NULL auto_increment,
  `navn` varchar(60) NOT NULL default '',
  `email` varchar(60) NOT NULL default '',
  `brugernavn` varchar(10) NOT NULL default '',
  `adgangskode` varchar(10) NOT NULL default '',
  `sidefremvisninger` int(11) NOT NULL default '0',
  `sidekliks` int(11) NOT NULL default '0',
  `tilgode` float NOT NULL default '0',
  `egenfremvisninger` int(11) NOT NULL default '0',
  `egenkliks` int(11) NOT NULL default '0',
  `bannerellertekst` varchar(100) NOT NULL default '',
  `klikadresse` varchar(200) NOT NULL default '',
  `stoerrelse` varchar(10) NOT NULL default '',
  `slettes` char(1) NOT NULL default '',
  `senestvist` datetime NOT NULL default '0000-00-00 00:00:00',
  `status` char(1) NOT NULL default '',
  PRIMARY KEY  (`id`)
) TYPE=MyISAM;

"bannerellertekst" er enten adressen til banneret eller teksten til tekstlinket.
"stoerrelse" er størrelsen på banneret i bytes.
"slettes" indeholder enten "0" eller "1".
"senestvist" skal laves ikke bruge "datetime" mere, da jeg gerne vil kunne skrive nogle tegn og sådan i det.
"status" er også enten "0" eller "1".

Hvordan kunne et god bud se ud?
Avatar billede erikjacobsen Ekspert
24. maj 2002 - 19:13 #1
Tjah, opdeling i flere tabeller - en "rigtig" datamodel.

En til selve banneret, en til statistik (måske), en til brugerinformation,
en der fortæller for en bruger hvilke bannere man har (man kan vel have flere).

I hver af tabellerne sætter du så indexer på passende felter....
Avatar billede startlinket.dk Nybegynder
24. maj 2002 - 19:21 #2
Du må gerne svare på mit spørgsmål, isteden for at finde på noget selv...
Jeg spurgte jo hvilke datatyper at jeg skulle vælge til hver kolonne.
Og nej, man kan endnu ikke have flere bannere i systemet, da det simpelhen ikke har nok medlemmer til at det kan køre rundt.
Avatar billede erikjacobsen Ekspert
24. maj 2002 - 19:23 #3
Jeg svarer ikke. Jeg kan bare ikke lade være med at kommentere på
en tabel af den slags, når jeg ser den :)
Avatar billede startlinket.dk Nybegynder
24. maj 2002 - 20:21 #4
Hvad er der nu galt med den?
Og hvorfor fanden spilder du så mit spørgsmål, når du udemærket godt ved at du ikke svarer på det?

Nu kommer der ikke andre herind, sådan er det altid. Så du skal nok se frem til at præcis det samme spørgsmål bliver oprettet igen, med præcis samme emne og indhold!
Sådan er det bare, når man ikke kan finde ud af at holde sig væk, hvis man ikke kan svare!
Avatar billede erikjacobsen Ekspert
24. maj 2002 - 20:26 #5
Jamen, så gør du da det. Det er faktisk kun et forsøg på at hjælpe dig.
Avatar billede startlinket.dk Nybegynder
24. maj 2002 - 21:06 #6
Øhh... Det var jo ikke noget svar... Som jeg også skriver, så har jeg jo tænkt på at ændre det, men der er simpelhen bare ikke nok medlemmer til at det kan køre rundt...

Og kunne du ellers hjælpe mig med spørgsmålet?
Avatar billede tipsen Nybegynder
24. maj 2002 - 21:31 #7
Jeg kan ikke forstå at du bliver sur over at få nogle konstruktive forslag til en god databasestruktur - dit spørgsmål lyder jo:

"Dem vil jeg gerne have optimeret, ved at få lavet databasen som den skal være. Her har jeg lige hurtigt indsat informationer om tabellen:"

Så skulle du jo have gjort opmærksom på, at du med optimering kun hentyder til ændringer af felttyperne!

Men forslag til ændringer:

De felter du har til boolske værdier (0/1 -> sandt/falsk) kan du evt. ændre til smallint - så vidt jeg husker vil char minimum bruge 4 bytes, hvis den bliver brugt i en tabel med varchar - så smallint vil være mindre og dermed hurtigere.

senestvist lyder som et oplagt eksempel på timestamp - det lyder som en dum ide, at skrive "nogle tegn og sådan i det"...

Desuden kunne du indeksere de felter du ofte benytter i dine sql-statements!
Avatar billede startlinket.dk Nybegynder
25. maj 2002 - 00:51 #8
Øhh... Ja, nu skrev jeg godt nu rimelig tydeligt at det var sådan at det skulle være, og at det bare var datatyperne at der skulle ændres...
Kig evt. på emnet på dette spørgsmål!

"senestvist" skal sgu kunne indeholde noget andet også som jeg jo tydeligt skriver! Det kan du sgu ikke bestemme at det ikke skal kunne!
Jeg skal kunne bruge det til at lave nogle kombinationer, som mit script kan skælne mellem, og sortere efter hvornår at der er vist frem, hvornår at der er prøvet at vist frem og overhovedet ikke er vist frem!

Hvad vil det så sige at "indeksere"?
Og det jeg gerne ville frem til, det var så du flot kunne skrive ud for hver kolonne hvilken type at der var bedst. F.eks. sådan her:

id - jdkhasdjk
navn - sdjfhsdjkf
email - sfklhsjkfhk
...
Avatar billede startlinket.dk Nybegynder
25. maj 2002 - 00:53 #9
Og som jeg allerede har skrevet SÅ mange gange, så kan jeg sgu da godt finde ud af at dele mine tabeller op i flere! Men der er altså ikke nok medlemmer! Så det kan altså ikke lade sig gøre! Jeg bliver sgu sur, det er sgu spild at plads her på eksperten.dk til alt det diskution her!
Det ville være lettere hvis I bare kunne komme med den liste med det samme!
Avatar billede lundsfryd Nybegynder
25. maj 2002 - 01:09 #10
Med fare for også at blive overfuset: Hvad har antallet af tabeller med antallet af medlemmer at gøre?
Avatar billede startlinket.dk Nybegynder
25. maj 2002 - 13:10 #11
Det er jo klart at du vil blive overfuset, da det overhovedet ikke har noget med spørgsmålet at gøre.
Men jeg kunne selvfølgelig vælge at lave det sådan nu, men det er slet ikke nødvendigt endnu og jeg har allerede tænkt på sådan noget.
Men jeg synes bare ikke at jeg gider at lægge noget nyt op igen, hvor der igen er fare for at ting kan ødelægge hinanden, hvis det ikke er lavet helt ordentligt.

Så svar hellere på mit egentlige spørgsmål og kontakt mig ellers via. e-mail eller ICQ, hvis I ønsker at snakke om dette.
Avatar billede lundsfryd Nybegynder
25. maj 2002 - 13:52 #12
Hvis du vil lagre tekst i din "senestvist", er det vel bare et spørgsmål om at ændre den til char eller varchar?

Ellers ser datatyperne nogenlunde fornuftige ud. Der er to ting, der kan være interessante:

Du bruger int(11) mange steder - man kan lagre ufatteligt høje tal i denne type, så du kunne overveje at nøjes med f.eks. mediumint visse steder.
http://www.mysql.com/doc/C/o/Column_types.html

Alt efter, hvordan dine tekstuelle data er udformet, kunne du med fordel overveje at ændre dine forekomster af varchar til char. Dette vil give din tabel et statisk format, der vil give en performanceforøgelse, der kan mærkes ved store datamængder.
http://www.mysql.com/doc/C/H/CHAR.html

Derudover vil det, som det allerede er foreslået, være en kæmpe gevinst med en passende indexering af tabellen. Men det vil jeg klogeligt undlade at forklare mere om, da dette jo ikke har noget med spørgsmålet at gøre.
Avatar billede startlinket.dk Nybegynder
25. maj 2002 - 14:00 #13
Uhh... Det var tæt på et svar, men stadig gør du ikke som jeg siger.
Jeg vil gerne have at du stiller det op sådan her:

id - type
navn - type
email - type
osv...

Hvor du så kommer med dit bud på den bedste type, for det ved jeg at du kan!
Jeg får nemlig ikke meget ud af få flere muligheder at vælge imellem, da jeg så igen skal spørge.
Så kom med dit bud på nogle gode, og jeg vil derefter spørge igen, hvis jeg er utilfreds.

Og som jeg allerede har spurgt om, hvad er det for noget "indexering"?
Avatar billede lundsfryd Nybegynder
25. maj 2002 - 14:19 #14
1) Der kan ikke gives et entydigt facit på de "rigtige" datatyper med den begrænsede viden, vi har om din tabel og dit system. Derfor giver vi dig input, som du kan arbejde videre med, men det ønsker du åbenbart ikke. Når du heller ikke svarer på de uddybende spørgsmål, der bliver stillet, bliver det endnu sværere.

2) Jeg tror, at alle deltagere i dette spørgsmål er trætte af at blive mødt med bandeord og sarkasme, hver gang, de forsøger at hjælpe dig.
Avatar billede startlinket.dk Nybegynder
25. maj 2002 - 14:28 #15
Det jeg søger er jo jeres bud på nogle gode datatyper (Hvilket jeg har skrevet mange gange nu!).
Og I kan vel godt regne ud hvad et: id, navn, email, brugernavn, adgangskode osv. er?
Så jeg kan ikke se de helt store problemer i at komme med et "bud".

Og det er da klart at jeg bliver sur, når jeg stiller et ellers okay spørgsmål, og I så skal komme med de såkaldte "forslag", som det jo egentlig ikke er, da jeg jo allerede godt ved at det ville være bedre at lave det sådan.
Så det er altså ikke nogen nyhed at man kan lave det sådan og jeg skal altså først have mange flere medlemmer, før at det overhovedet kan komme på tale!

I spilder jo bare jeres egen tid, og blive upopulære, ved at skrive alt muligt som jeg jo udemærket godt ved!
Avatar billede lundsfryd Nybegynder
25. maj 2002 - 14:42 #16
Jeg har givet dig bud på gode datatyper, og endda links til uddybende information - men jeg begynder at tvivle på, at du overhovedet har læst siderne.

Jeg ved endnu ikke

- Hvad det er, du vil gemme i "senestvist"
- Hvordan dine tekststrenge ser ud (har de meget variabel længde eller ca. den samme)
- Om en nedjustering af tal-størrelserne kunne komme på tale

...alt sammen ting, jeg har lagt op til diskussion om i mit svar fra før, og som er nødvendig viden, hvis man skal optimere dine datatyper. Og da du helt har ignoreret svaret, så kommer vi ikke videre.

Men du har ret i en ting; jeg gider ikke spilde mere af min tid her.
Avatar billede startlinket.dk Nybegynder
25. maj 2002 - 14:53 #17
Somom det er så svært at tænke sig til hvad hver kolonne skal indeholde, så derfor viser jeg bare et eksempel her:

id = 250
navn = Morten Jørgensen
email = admin@startlinket.dk
brugernavn = hallo
adgangskode = halli
sidefremvisninger = 5500
sidekliks = 250
tilgode = 360
egenfremvisninger = 5140
egenkliks = 241
bannerellertekst = "http://bytte.startlinket.dk/468x60/250.jpg" eller "Dette er danmarks eneste tekstlinkbytte program"
klikadresse = http://bytte.startlinket.dk
stoerrelse = 17633
slettes = 0
senestvist = 25-05-2002 14:52:35 eller "Ikke vist endnu" eller "Prøver at vise"
status = 1

Mon det ikke kan give dig et bedre indtryk af hvordan at det er opbygget?
Avatar billede startlinket.dk Nybegynder
25. maj 2002 - 18:19 #18
Hvordan ved man om der i ens mysql_query´er skal sættes '' uden om det ved udtræk og indsætninger?
Avatar billede startlinket.dk Nybegynder
25. maj 2002 - 18:49 #19
Nu har jeg fået læst lidt rundt omkring, og har måttet prøve selv:

id = smallint
navn = varchar
email = varchar
brugernavn = varchar
adgangskode = varchar
sidefremvisninger = mediumint
sidekliks = smallint
tilgode = smallint
egenfremvisninger = mediumint
egenkliks = smallint
bannerellertekst = varchar
klikadresse = varchar
stoerrelse = smallint
slettes = tinyint
senestvist = varchar
status = tinyint

Eneste steder at jeg er i tvivl er ved "slettes" og "status", hvor det jo enten er "0" eller "1" at der skal stå, skal jeg så vælge tinyint eller char[1]?
Avatar billede lundsfryd Nybegynder
25. maj 2002 - 20:43 #20
Jeg vil umiddelbart bruge tinyint og sætte dens længde til 1.
Avatar billede startlinket.dk Nybegynder
26. maj 2002 - 00:08 #21
Tja, måske man skulle det...
Men er det overhovedet nødvendigt at vælge hvor lang den må være?
F.eks. ved ens navn, da kan jeg jo i scriptet bare sætte den til højst at måtte være 60 hvis jeg vil...
Avatar billede tipsen Nybegynder
26. maj 2002 - 16:43 #22
startlinket.dk: Noget som er lidt træls ved Eksperten.dk er, at når man besvarer et spørgsmål, er ens viden om spørgeren meget begrænset! Det betyder at man må gætte mig frem til niveauvet ud fra formuleringen og sværhedsgraden af spørgsmålet. Jeg ser mange spørgsmål, hvor folk vil have hjælp til at lappe på en løsning der egentlig ikke er særlig god, hvor jeg så ofte foreslår et alternativ da det i mange tilfælde vil kunne spare dem for unødvendigt besvær i fremtiden og samtidig kan de måske lære lidt nyt.

Jeg forstår helt ærligt ikke, at du bliver så sur over en masse alternative forslag i stedet for at acceptere at der ikke findes et entydigt facit til dit spørgsmål - det havde selvfølgelig været rart, men da vi ikke ved hvilke data der ligger i din tabel eller hvordan du bruger den er det godt nok svært at optimere...

Et godt forslag havde været normaliseringen, hvor jeg så fejlagtigt vurderer at én som spørger om noget så simpelt som datatyper (som kan læses på 5-10 sider i manualen) nok heller ikke ved noget om normalisering... - men dér tog jeg så fejl, hvilket jeg beklager.

"...Eneste steder at jeg er i tvivl er ved "slettes" og "status", hvor det jo enten er "0" eller "1" at der skal stå, skal jeg så vælge tinyint eller char[1]?..."

Hvis du gider læse mit tidligere svar, vil du finde svaret til det spørgsmål...

Mht. indeksering gider jeg ikke spilde din tid med en lang forklaring for efterfølgende at blive svinet til, men du kan jo læse:

http://www.mysql.com/doc/O/p/Optimising_Database_Structure.html

"..."senestvist" skal sgu kunne indeholde noget andet også som jeg jo tydeligt skriver! Det kan du sgu ikke bestemme at det ikke skal kunne!...
"

Hvad fanden er det for et sprog til folk som forsøger at hjælpe dig - magen til idiot skal man da lede længe efter... Du stiller et spørgsmål og beder om at få optimeret din db - dvs. du beder om folks holdninger og meninger til en problemstilling - når du så får det bliver du forurettet og mener vi spilder din tid...

Hvis jeg en anden gang prøver at svare på dine spørgsmål så bare husk mig på hvem du er - så kan vi lade være med at spilde hinandens tid...
Avatar billede startlinket.dk Nybegynder
26. maj 2002 - 17:45 #23
Jeg mener ikke at du har svaret på spørgsmålet ang. tinyint og char.
Og ang. det med mit sprog, så er det ikke så sært at jeg bliver irriteret, da du skriver somom at du vil bestemme at "senestvist" ikke må kunne indeholde andet.
Som jeg tydeligt skriver, så vil jeg kunne skrive at medlemmet ikke har fremvist et banner endnu eller i det mindste prøver at fremvise.
Og du skriver så bare at det er en "dum" idé... Hvordan kan du mene at det er det, når det er nødvendigt for mit system?
Du ved sgu da ikke hvordan at det fungerer...

Og ordet "optimeret" bruger jeg for at fortælle at jeg gerne vil have "optimeret" min database, ved at give nogle passende datatyper, hvilket står tydelig i emnet på spørgsmålet.

Og ja, jeg beder om folk holdninger og meninger, men altså har jeg jo fortalt hvad jeg søger meninger og holdninger til. Så jeg kan ikke se hvad der er så svært ved at holde sig til det???

Og jeg ved udemærket godt hvad jeg snakker om... Og du behøver ikke hele tiden at rode rundt i det med opdelingen af tabellen, da jeg jo mange gange har skrevet at jeg udemærket godt kan finde ud af det.

Men en anden gang, så læs spørgsmålet før du svarer!
Avatar billede startlinket.dk Nybegynder
26. maj 2002 - 19:07 #24
Jeg lukker så bare og tager alle point selv, da jeg jo selv måtte finde ud af det hele...
Avatar billede tipsen Nybegynder
26. maj 2002 - 19:41 #25
Håber da, at du har fået noget ud af foreslagene - der er hvertfald ikke ret mange andre måder at optimere din db på end dem som er nævnt i det ovenstående...

Det er forøvrigt bemærkelsesværdigt at du har formået at svine alle 3 svarere til i dette spørgsmål - men det er jo nok bare os andre der er dumme...
Avatar billede startlinket.dk Nybegynder
26. maj 2002 - 19:46 #26
Jeg vil nu ikke sige at jeg har svinet nogen til. Det irriterer mig bare når folk ikke holder sig til spørgsmålet, og jeg så skal spilde min tid på at svare på sådan noget, som jeg jo udemærket godt ved at man kan...
Avatar billede jelzin101 Praktikant
26. maj 2002 - 19:55 #27
Startlinket.dk>>Alle løsninger der giver point på eksperten.dk skal være tilgængelige for samtlige brugere. Derfor skal du angive den løsning du nævner i dit indlæg 260502 - 19:07:55.

Mvh.
Jelzin101/CoAdmin.
Avatar billede startlinket.dk Nybegynder
26. maj 2002 - 19:58 #28
Hvad snakker du om? Skal jeg pludselig TVINGES til at "udgive" hele mit system her, bare fordi at jeg spørger om noget?
Og iøvrigt, så tror jeg bare at jeg ignorerer dit indlæg, da du vidst trænger til at læse lidt mere i dette spørgsmål.

Jeg kan give dig et lille hint: Løsningen ligger allerede her!
Avatar billede startlinket.dk Nybegynder
26. maj 2002 - 19:59 #29
Det var godt nok godt gået af en CoAdmin!
Avatar billede jelzin101 Praktikant
26. maj 2002 - 20:03 #30
startlinket.dk>> jeg vil råde dig til at tage din opførsel op til overvejelse af du har tømmermænd eller whatever burde ikke gå ud over andre brugere på exp.dk.

Jeg beder dig ikke om at "udgive" hele dit system - blot den del af det som du spurgte til i dette spørgsmål - da der er blevet givet point i relation til dette.

ang. at jeg trænger til at læse mere i dette spørgsmål. - jeg må indrømme at jeg efter at have læst tråden igennem savner en meget god forklaring på din opførsel og generelle arrogance - eksperten.dk er et forum med hjælp til selvhjælp, og der er flere af indlæggene der giver enddog udvidet hjælp, hvilket du dog ser totalt bort fra i en eller anden form for ignorant vrede.

og til slut hvis løsningen ligger hér - hvorfor har du så valgt at give dig selv point.
Avatar billede startlinket.dk Nybegynder
26. maj 2002 - 20:06 #31
Jeg lavede selv "løsningen" og den ligger under indlægget: 25/05-2002 18:49:17

Og nej, jeg har ikke tømmermænd. Men jeg synes bare ikke at du skal komme og være sur på mig, fordi at du ikke kan finde det...
Det er nu ellers rimelig tydeligt...
Avatar billede jelzin101 Praktikant
26. maj 2002 - 20:19 #32
jeg er som sådan ikke særlig sur - det der måske var med til at gøre mig lidt mindre venlig stemt var muligvis nok din kommentar om at du ville ignorere mit indlæg, og så din generelle attitude i hele tråden.
Avatar billede jelzin101 Praktikant
26. maj 2002 - 20:20 #33
jeg indrømmer dog og beklager meget at jeg ikke havde set at det var dit navn der stod ved løsningen. - undskyld.

Mvh
Jelzin101
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

IT-JOB

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Driftstærk IT-profil til Forsvarsministeriets Materiel- og Indkøbsstyrelse

Capgemini Danmark A/S

Open Application (Denmark)

Ringkjøbing Landbobank – Nordjyske Bank

Forretningsudvikler til procesoptimering

Netcompany A/S

Managing Architect