Avatar billede cortex2k Nybegynder
27. september 2004 - 19:24 Der er 15 kommentarer og
1 løsning

Oprettelse af drinksdatabase

Hej Eksperter

Nu er det rigtigt lang tid siden jeg har kigget på Databaser og SQL syntax i det hele taget, så bliver nødt til at ty lidt til eksperthjælp hos jer ;-)

Jeg vil gerne have lavet en drinksdatabase på min hjemmeside hvor jeg kan indtaste drinksopskrifter som så gemmes i min MySQL database. For at gøre det simpelt har jeg tænkt på kun at have 2 tabeller. 1. tabel: "drink" som skal have attributter som navn, fremgangsmåde,  portioner, og nok et unikt id. 2. tabel: "Ingredienser" som indeholder navn og nok også unikt id.

Det skal være muligt at tilføje en eller flere ingredienser til en bestemt drink og for hver ingrediens til en bestem drink skal man kunne angive mængde.

Nogle forslag til hvordan dette kunne laves i MySQL?
Avatar billede arne_v Ekspert
27. september 2004 - 19:27 #1
Du skal vel have 3 tabeller:

drinks
------
id
navn
...

ingredienser
------------
id
navn
...

drinksingredienser
------------------
drinksid
ingrediensid
mængde
Avatar billede arne_v Ekspert
27. september 2004 - 19:27 #2
Så opretter du databasen og laver din applikation.
Avatar billede cortex2k Nybegynder
27. september 2004 - 19:31 #3
Ja det lyder da sådan nogenlunde rigtigt. Kan du eventuelt give et bud på SQL syntaxen med de constraints og (fremmed)nøgler der skal bruges? eller skal der flere pts. på bordet?
Avatar billede arne_v Ekspert
27. september 2004 - 19:36 #4
Noget a la:

CREATE TABLE drinks (
  id INTEGER AUTO_INCREMENT PRIMARY KEY,
  navn VARCHAR(50)
);
CREATE TABLE ingredienser (
  id INTEGER AUTO_INCREMENT PRIMARY KEY,
  navn VARCHAR(50)
);
CREATE TABLE drinksingredienser (
  drinksid INTEGER,
  ingrediensid INTEGER,
  maengde VARCHAR(100),
  PRIMARY KEY (drinksid,ingrediensid)
);
Avatar billede arne_v Ekspert
27. september 2004 - 19:37 #5
MySQL har flere slags tabeller. MyISAM tabeller er de mest normale og understøtter
ikke foreign keys. InnoDB tabelller understøtter foreign keys. Jegvil nok anbefale
at du starter med MyISAM tabeller.
Avatar billede cortex2k Nybegynder
27. september 2004 - 19:49 #6
Jeg har oprettet DB som MyISAM, og oprettet de 3 tabeller med et par attributter mere. Roder lige lidt med det og ser om jeg kan få det til at virke. Lader lige spørgsmålet stå åbent lidt endnu, hvis der skulle komme nogle problemer. Håber det er okay
Avatar billede arne_v Ekspert
27. september 2004 - 19:57 #7
Helt fint.

Jeg ligger et svar såfremt det bare virker.
Avatar billede cortex2k Nybegynder
27. september 2004 - 20:19 #8
Hmm hvad er der galt med følgende sql query? attributnavnene skulle være iorden.

SELECT d.name, d.avg_score, d.proc, d.portions, d.created, i.name di.amount
FROM drink AS d, ingredients AS i, drinkingredients AS di
WHERE d.drink_id = di.drink_id;
Avatar billede arne_v Ekspert
27. september 2004 - 20:21 #9
Der mangler da ihvertfald en betingelse !

SELECT d.name, d.avg_score, d.proc, d.portions, d.created, i.name di.amount
FROM drink AS d, ingredients AS i, drinkingredients AS di
WHERE d.drink_id = di.drink_id AND i.ingrediens_id = di.ingrediens_id;
Avatar billede arne_v Ekspert
27. september 2004 - 20:22 #10
Hvis det ikke løser problemet så skriv lige hvilken fejl du får
Avatar billede cortex2k Nybegynder
27. september 2004 - 20:28 #11
Ja den glemte jeg men det løser dog stadig ikke problemet

Fejl: You have an error in your SQL syntax.  Check the manual that corresponds to your MySQL server version for the right syntax to use near '.amount
FROM drink AS d, ingredients AS i, drinkingredients AS
Avatar billede cortex2k Nybegynder
27. september 2004 - 20:29 #12
Er syntaxen ikke rigtigt mht AS kommandoen? Har ikke brugt MySQL før skal det lige siges og amount er det rigtige attributnavn.
Avatar billede arne_v Ekspert
27. september 2004 - 20:30 #13
Prøv evt. at fjerne AS'erne:

...
FROM drink d, ingredients i, drinkingredients di
...
Avatar billede cortex2k Nybegynder
27. september 2004 - 20:31 #14
Det hjælper ikke.. og den genkender også fint AS kommandoen.. bruger MySQL Query browser hvor reserverede ord bliver blå.
Avatar billede arne_v Ekspert
27. september 2004 - 20:33 #15
Så må du tripple checke for stave fejl !
Avatar billede cortex2k Nybegynder
27. september 2004 - 20:38 #16
Hehe har kigget det #"¤% query igennem for stavefejl 7 gange efterhånden og så ser jeg det.. Jeg mangler et komma mellem i.name og di.amount. ;-)hader den slags fejl.

Men tak for hjælpen Arne.
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