Aviseringar
Rensa alla

Databasupplägg


Ämnesstartare

Hejsan tjosan!
Jag sitter och pillar lite på mysql. Jag skulle vilja bygga en liten recept-databas där man på något sätt kopplar varje recept till ett antal ingredienser.

Jag vill ha namn, ingredienser, typ, samt länk till receptet.
Jag har inte arbetat mycket med databaser så jag är osäker på hur man bör lägga upp tabellerna.

Jag vill kunna göra en query med ett antal ingredienser och få ut de recept som har dessa kopplade till sig.

Förslag?[blush]


   
Citera

sitter och funderar lite över det hela! Låter som en spännande idé.


   
SvaraCitera
Ämnesstartare

Tjohejsan.

Jag har hjälpt pappa att pilla lite i en mysql databas.
Och rent spontant så undrar jag om det inte skulle fungera att ge ingridienserna en sifferkod? Känns som om det skulle vara enklare att skriva in dom i datorbasen då, nackdelen blir väl att man måste ge ingridienserna siffror. [blush]

Sedan så är det väl bara att ha en spalt åt var och en av sakerna, alltså, en för namnet, en för ingridienserna, en för vilken typ det är och en för länken. [blush]

Vet inte om det går att organisera datorbasen så att den söker i typ rubriker, så om du läger typerna som rubriker så specificerar man sig sedan inom den rubriken. Om du förstår vad jag menar. [blush]

Hoppas jag hjälper. [blush]


   
SvaraCitera
Ämnesstartare

Ensamvargen:

Hoppas jag hjälper. [blush]

Ja typ det jag ska göra, fick hjälp av vari nu, så ajg vet hur jag skall göra [bigsmile]

Men kom gärna med förslag på effektiva upplägg eller så om ni känner för det^^


   
SvaraCitera

Se till att ditt schema är normaliserat, antingen från början eller genom att du normaliserar det efter hand. Du vill inte ha dubbel lagring av data nånstans, så se till att tänka igenom alla relationer noga först.

En receptdatabas är dock så enkel att det borde räcka med två tabeller:


CREATE TABLE recipes (
name VARCHAR(255),
url VARCHAR(255),
PRIMARY KEY (name)
);

CREATE TABLE recipe_ingredients (
ingredient VARCHAR(64),
recipe_name VARCHAR(255),
FOREIGN KEY (recipe_name) REFERENCES recipes(name) ON DELETE CASCADE
);

Och se för guds skull till att använda en storage engine som har stöd för foreign keys och liknande.

Kolla upp entity-relation-diagram; de brukar hjälpa en del att visualisera hur data ska höra ihop.


   
SvaraCitera
Ämnesstartare

Gentlernen:

Och se för guds skull till att använda en storage engine som har stöd för foreign keys och liknande.

Kolla upp entity-relation-diagram; de brukar hjälpa en del att visualisera hur data ska höra ihop.

Tack tackar, jag har ingen koll på motorerna men jag misstänker att jag kör innodb eller dylikt, hmm.


   
SvaraCitera
Åtta

Gentlernen:

Och se för guds skull till att använda en storage engine som har stöd för foreign keys och liknande.

Existerar engines som inte har stöd för foreign keys? [tard]


   
SvaraCitera

Åtta:

Existerar engines som inte har stöd för foreign keys? [tard]

MyISAM, standardmotorn, har inte det stödet.


   
SvaraCitera
Åtta

Gentlernen:

MyISAM, standardmotorn, har inte det stödet.

Huh! Det visste jag inte.


   
SvaraCitera
Ämnesstartare

Gentlernen:

MyISAM, standardmotorn, har inte det stödet.

Men är verkligen MyISAM standard längre? Har inte den bytts ut mot innodb?


   
SvaraCitera

aristoteles:

Men är verkligen MyISAM standard längre? Har inte den bytts ut mot innodb?

Jag hoppas det, men det är inte så relevant längre; PostgreSQL är på ganska god väg att ersätta MySQL som den dominerande fria databasen.


   
SvaraCitera
Ämnesstartare

Gentlernen:

PostgreSQL är på ganska god väg att ersätta MySQL som den dominerande fria databasen.

Sant, verkar faktist en del vettigare. Kikat lite på det.


   
SvaraCitera