[MySQL] fout DB-ontwerp of query onvolledig/fout

Pagina: 1
Acties:

  • FoxzMan
  • Registratie: September 2000
  • Laatst online: 01-03 20:35
Ik ben bezig met een website en gebruik daarvoor PHP en MySQL. :)

De MySQL-database wordt gebruikt om daarin de content van de website op te slaan. In de database heb ik 2 tabellen staan namelijk CONTENT en TYPE_URL.
De tabellen zien er als volgt uit:
code:
1
2
3
4
5
6
7
8
CREATE TABLE content (
  id int(5) NOT NULL auto_increment,
  titel varchar(120) NOT NULL default '',
  tekst longtext NOT NULL,
  datum date NOT NULL default '0000-00-00',
  type varchar(50) NOT NULL default '',
  PRIMARY KEY (id)
)

en:
code:
1
2
3
4
5
CREATE TABLE type_url (
  type varchar(50) NOT NULL default '',
  url varchar(50) NOT NULL default '',
  PRIMARY KEY (type)
)

Beide tabellen hebben een kolom 'TYPE' en dat is tevens de relatie tussen de beide tabellen. In de kolom type vermeld ik wat voor een record het is, bijvoorbeeld Nieuws, Product of Service. Gaat het bijvoorbeeld om een Product, dan moet de 'URL' zijn: 'product.php'.
Er zou dus gezegd kunnen worden dat er een foreign key bestaat tussen de twee tabellen. Deze is niet gelegd, omdat ik niet gebruik maak van MySQL 4.0 of innoDB, ik gebruik de normale versie ( 3.23.49 ).

Voor de zoekmachine op de website gebruik ik de volgende query:
code:
1
2
3
4
5
6
SELECT c.id, c.titel, c.tekst, t.type, t.url 
FROM content c, type_url t 
WHERE c.type = t.type 
AND c.tekst LIKE '%$trefwoord%' 
OR c.titel LIKE '%$trefwoord%' 
GROUP BY c.titel

De query geeft de juiste records weer, echter bij sommige records geeft MySQL een verkeerde 'TYPE' en 'URL' weer. Het gaat

Ik weet niet of het aan mijn query, db-ontwerp of MySQL ligt, maar ik krijg verkeerde resultaten wanneer het trefwoord ook in de titel staat.

Een situatie die bij mij voorkomt is, wanneer ik de naam(titel) invoer van een product, bijvoorbeeld 'Samsung 900 IFT', MySQL een verkeerde 'URL' teruggeeft. In plaats van 'product.php' terug te geven als 'URL' geeft het 'index.php' als waarde terug.

Zelf ben ik van mening dat het een fout van MySQL is( en dat het gebruik van een Foreign Key niet nodig hoeft te zijn).
Ik hoop dat jullie dit lange gebrabbel nog kunnen begrijpen en mij uit de brand kunnen helpen.

-


  • chem
  • Registratie: Oktober 2000
  • Laatst online: 27-08 13:53

chem

Reist de wereld rond

probeer het eens met haakjes?
dus
where type=type and (tekst like '%%' or titel like '%%')

Klaar voor een nieuwe uitdaging.


  • FoxzMan
  • Registratie: September 2000
  • Laatst online: 01-03 20:35
Op vrijdag 19 april 2002 21:43 schreef chem het volgende:
probeer het eens met haakjes?
dus
where type=type and (tekst like '%%' or titel like '%%')
U bent geweldig !!

-


  • chem
  • Registratie: Oktober 2000
  • Laatst online: 27-08 13:53

chem

Reist de wereld rond

Op zaterdag 20 april 2002 01:10 schreef FoxzMan het volgende:

[..]

U bent geweldig !!
yeah, I know.

Klaar voor een nieuwe uitdaging.