Jag ska skapa en recept-databas.
Hade tänkt mig följande upplägg.:
Fält1: IDnummer
Fält2: Recept
Fält3: ? nu kommer det svåra!
Ingredienserna, meningen är att man ska t.ex. kunna skriva in vad man har för livsmedel och sedan ska scriptet ta ut vilka recept som går att laga med dem livsmedlena.
Jag söker alltså ett bra upplägg för en sådan här databas...
De Ingredienser som skall vara sökbara lagrar du i en separat tabell.
recept
--------
id int primary key auto_increment
namn varchar(30)
beskrivning memo
ingredienser
---------------
id int primary key counter
namn varchar(30)
receptIngredienser
-----------------------
receptid int foreign key references recept(id)
ingrediensid int foreign key references ingredienser(id)
kvantitet
Om du gör det på ditt vis så är det så besvärligt att ändra och söka.
select r.namn from recept r inner join receptingredienser on id = receptid
inner join ingredienser i on ingrediensid = i.id
where i.namn in ('Gåslever','Lingonsylt')
group by r.namn,r.id having count(*) = (select count(*)
from receptingredienser where receptid = r.id)
Det är för att få fram de recept där det räcker med en delmängd av de nämnda ingredienserna.
Eller är syftet att du vill kunna utnyttja alla ingredienser?
Vilka frågor vill du kunna ställa mot databasen utöver denna?
Nej, relationer behövs inte för att göra join. Det är ändå bra att använda relationer (foreign keys) för att kontrollera att man har korrekta värden i sina tabeller.
Om mna använder tabelltypen INNODB så går det att använda foreign keys i Mysql.