Avatar billede madseksperten Nybegynder
22. januar 2016 - 11:50 Der er 5 kommentarer og
2 løsninger

create table, når bruger oprettes

Hejsa.

Jeg er lidt i tvivl om hvordan man skal gøre følgende. Jeg er i gang med at lave en hjemmeside. Hver bruger på siden har sin egen database. Det betyder når en bruger opretter sig som bruger, skal der oprettes en database til denne bruger.

I databasen er der tre tables, som skal oprettes sammen med brugeren. Men hvordan gør man det rent praktisk.

Er det noget med at når man opretter sig som bruger og trykker "Submit", så

$sql = "CREATE DATABASE myDB";

eller?


Mvh Mads
Avatar billede Slater Ekspert
22. januar 2016 - 12:19 #1
Ja, det ville være noget i den stil. Men vi er nok lige nødt til at spørge hvorfor hver bruger skal have sin egen database. Det er muligt det er gennemtænkt, men jeg har aldrig hørt noget lignende før, og det lyder umiddelbart som et design der kunne gøres bedre og nemmere.
Avatar billede arne_v Ekspert
22. januar 2016 - 15:49 #2
Enig. Ideen med en database per bruger er helt haabloes. Det vil overhovedet ikke skalere og vil give en masse problemer med adgangs kontrol.

Samme database til alle brugere. Og et felt i tabellerne med brugernavn.
Avatar billede madseksperten Nybegynder
23. januar 2016 - 11:26 #3
Når i siger det, så VED jeg det er rigtigt :) Jeg skal tænke i helt andre baner så.

Jeg skitserer lige hurtig et eksempel op af en db:

user

u_id (PK, AI)
user(varchar)
password(varchar)

game:

g_id(PK, AI)
flips(INT)

Hvis man betrager 'flips', som plat eller krone. Denne column kan sagtens have 20.000 values pr bruger. Hvis jeg skulle være helt ærlig, så havde jeg faktisk tænkt at hvis der var 2000 brugere, så skulle den løbe hele column 'flips' igennem, se at bruger x  have 20.000 values, og returne de values til bruger x

Det vil sige user x kan via en query gå igennem se hvor mange gange krone har været der, og hvor mange gange plat har været der. Men det tænker jeg helt forkert så?

Det vil sige at HVER bruger får HVER deres column 'flips', så databasen kun går igennem bruger X column, ikke?
Avatar billede Slater Ekspert
23. januar 2016 - 12:53 #4
Med mindre jeg misforstår, så lyder det som et ret almindeligt setup. Altså, du skal have et antal brugere, og hver bruger skal kunne have et vilkårligt antal plat/krone slag tilknyttet?

Så skal du bare have en brugertabel med et unikt id (PK, AI som du selv siger), og en flips tabel med et bruger-id der relaterer til brugertabellen, samt flips og eget id.

Så længe du husker at sætte et alm. index på user_id i flips tabellen (og så længe den er et tal, ikke en streng) så kan alle moderne RDB'er sagtens håndtere adskillige millioner rækker, og at søge i dem med en "select from flips where user_id=?" (eller joine den på brugertabellen for at få navnet med det samme).
Avatar billede madseksperten Nybegynder
24. januar 2016 - 17:55 #5
Jo det er bare det jeg skal. Mange tak for svarene. Vil i dele pointene?
Avatar billede Slater Ekspert
25. januar 2016 - 07:55 #6
Tak. Arne?
Avatar billede arne_v Ekspert
25. januar 2016 - 18:24 #7
svar
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
Kurser inden for grundlæggende programmering

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