Avatar billede hyperactive Nybegynder
18. september 2002 - 17:13 Der er 10 kommentarer og
1 løsning

Flere sites skal anvende samme MySQL DB

Jeg har nogle butikker på nettet, som p.t. kører på hver sin vare database. Dette gør det rimeligt besværligt at skulle opdatere og vedligeholde, idet nogle varer skal være i alle butikkerne, andre skal kun være i en enkelt.

Jeg vil gerne have at alle butikker anvender den samme database. På en eller anden facon skal jeg så angive, hvilke/hvilken butik(ker) hver enkelt vare skal vises i.

Jeg kunne selvfølgelig lave en kolonne i varekartoteket for hver butik i selve databasens design og så angive 0 eller 1 for at fortælle om varen skal vises.... Men jeg tror ikke dette er den mest optimale måde.... Jeg udvikler hele tiden nye butikker og i dette tilfælde ville jeg skulle tilføje en kolonne for hver ny butik.

Jeg har også overvejet en tabel, som indeholder butikkerne, og så jeg på en eller anden måde linker til disse i varekartoteket.....

Hvordan laver jeg dette korrekt????????
Avatar billede misbruger Nybegynder
18. september 2002 - 17:20 #1
Du skal oprette en tabel der indholder

butikId (Unik nøgle)
butikName
osv.....

I varekartoteket, laver du så en colonne, der indeholder en reference til den butik (butikId) varen tilhører.
På bagrund af disse dataer, kan du så inde fra en butik, hente alle de vare hvor der er en reference til den aktuelle butik.
Avatar billede hyperactive Nybegynder
18. september 2002 - 17:24 #2
Hvad så, hvis varen skal være i flere butikker?
Avatar billede morw Nybegynder
18. september 2002 - 17:27 #3
3 tabeller:

1. butik
2. vare
3. relation

butik:

id
navn
osv.

vare:
id
navn
pris
osv.

Relation: (Her bruger vi en flere til flere ralation, så ikke noget med at bruge unique eller auto-increment)

butik_id
vare_id
Avatar billede hyperactive Nybegynder
18. september 2002 - 17:30 #4
morw..... Og så en post for hver butik i RELATION eller en post for hver relation????
Avatar billede morw Nybegynder
18. september 2002 - 17:33 #5
Hvis vare #17 skal i butik #2 indsætter du følgende i relation:

INSERT INTO relation (butik_id, vare_id) VALUES (2,17)

Hvis vare #17 så også skal i butik 5:

INSERT INTO relation (butik_id, vare_id) VALUES (5,17)

osv
Avatar billede morw Nybegynder
18. september 2002 - 17:34 #6
Nu du så skal vise en liste over butik #5 vare laver du en join - er du med på den? ;-D
Avatar billede hyperactive Nybegynder
18. september 2002 - 17:37 #7
morv..... Ikke helt
Avatar billede morw Nybegynder
18. september 2002 - 17:37 #8
Så får du også lige den med:

SELECT vare.navn, vare.pris
FROM relation
LEFT JOIN vare ON vare.id = relation.vare_id
WHERE relation.butik_id = 5
Avatar billede morw Nybegynder
18. september 2002 - 17:37 #9
1 sec. Ret hurtig ikk?
Avatar billede hyperactive Nybegynder
18. september 2002 - 17:38 #10
100000 Tak
Avatar billede morw Nybegynder
18. september 2002 - 17:43 #11
Hvis du laver et index på både butik_id og vare_id kan det godt være unique. På den måde er du sikker på der ikke kommer dubletter i relation.

Så kan du endvidere bruge:

REPLACE INTO relation (butik_id, vare_id) VALUES (5,17)

PÅ den måde bliver det lidt nemmere hvis du vil lave et administrationssystem til håndtering af hvilke varer der skal i hvilke butikker.
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