Suche nach Vorkommnis über mehrere Tabellen

Was steht in den Tabellen K1 bis K6 unter Bezeichnung.

Nicht die Artikel Bezeichnung oder? Oder hat jeder Artikel in der Unterkategorie einen andere Bezeichnung. Oder ist es die Bezeichnung der Kategorie?

Mfg Akkie
 
Noch ein Beispiel:

Den Artikel mit Artikelbezeichnung CPU Intel Coreduo
wirst du in Hauptkategorie (HK) Computer finden.
Dann in der K1 unter CPUS und Lüfter.
Dann in der K2 unter Desktop PCs.
Dann in der K3 unter Intel.
usw.
 
Hi

Dein Datenbankdesign ist nicht OK.
Du speicherst deine Daten redundant ab. Das ist nicht OK. Siehe MySQL - Normalisierung.

Das ganze macht man so. Das hat auch den Vorteil das du nicht an 5 Kategorien gebunden bist in denen sich ein Artikel befinden kann.

PHP:
-- 
-- Tabellenstruktur für Tabelle `article`
-- 

CREATE TABLE `article` (
  `artId` int(11) NOT NULL auto_increment,
  `description` varchar(255) NOT NULL,
  PRIMARY KEY  (`artId`)
) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ;

-- 
-- Daten für Tabelle `article`
-- 

INSERT INTO `article` VALUES (1, 'CPU Intel Coreduo');

-- --------------------------------------------------------

-- 
-- Tabellenstruktur für Tabelle `category`
-- 

CREATE TABLE `category` (
  `catId` int(11) NOT NULL auto_increment,
  `description` varchar(255) NOT NULL,
  PRIMARY KEY  (`catId`)
) ENGINE=MyISAM AUTO_INCREMENT=7 DEFAULT CHARSET=utf8 AUTO_INCREMENT=7 ;

-- 
-- Daten für Tabelle `category`
-- 

INSERT INTO `category` VALUES (1, 'Computer');
INSERT INTO `category` VALUES (2, 'CPUS und Lüfter');
INSERT INTO `category` VALUES (3, 'Desktop PCs');
INSERT INTO `category` VALUES (4, 'Intel');
INSERT INTO `category` VALUES (5, 'CPU und sonstiges');
INSERT INTO `category` VALUES (6, 'CPU und Prozessoren');

-- --------------------------------------------------------

-- 
-- Tabellenstruktur für Tabelle `map`
-- 

CREATE TABLE `map` (
  `artId` int(11) NOT NULL,
  `catId` int(11) NOT NULL,
  PRIMARY KEY  (`artId`,`catId`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

-- 
-- Daten für Tabelle `map`
-- 

INSERT INTO `map` VALUES (1, 1);
INSERT INTO `map` VALUES (1, 2);
INSERT INTO `map` VALUES (1, 3);
INSERT INTO `map` VALUES (1, 4);
INSERT INTO `map` VALUES (1, 6);

SELECT `article`.`artId` , `article`.`description` AS `artDiscription` , `category`.`catId` , `category`.`description` AS `catDescription`
FROM `article`
JOIN `map` ON `article`.`artId` = `map`.`artId`
JOIN `category` ON `map`.`catId` = `category`.`catId`
WHERE `article`.`description` LIKE '%CPU%'
AND `category`.`description` LIKE '%CPU%'

Mfg Akkie
 
vielen dank für deien mühe,
leider ist das datenbankdesign so umgesetzt worden.
bitte gib mir doch nen tip wie ich das mit meiner umgebung umsetzen kann.
 
Hi

Tut mir leid aber ich bin nicht hier um den Leuten zu zeigen wie man etwas falsch macht.
Ich kann mir denken das du schon viel Zeit in die Applikation gesteckt hast. Manchmal ist es aber besser wenn man was verbockt hat dies zu bereinigen. Wenn du deine Lösung so weiter händelst hast du bei der Wartung deines Programms mehr Aufwand als wenn du es jetzt noch mal neu machst.

Stell dir mal vor du willst den Namen einer Kategorie ändern. Du mußt dann durch 5 Tabellen gehen und dort den Namen anpassen. Überleg mal selber. Ist das der richtige Weg?

Mfg Akkie
 
Ich versteh dich ja,
das Problem an der Sache ist dass in jeder Kategorie zig Unterkategorien drin sein können.
Deshalb die Veschachtelung.
Darum muss ichs auf die Kategorientabellen aufteilen
 
Nein das musst du nicht. Du musst noch eine Tabelle anlegen. Nennen wir sie catmap.
In dieser mappst du zu einer Kategorie die jeweiligen Unterkategorien. Genau so wie die map die ich dir schon vorbereitet habe. Du versuchtst deine Applikationslogik auf die Datenbank abzuwelzen. Du musst davon weg kommen. Die Datenbank ist dafür da um die Daten so abzulegen das du sie ohne Umwege schnell miteinander verknüpfen kannst.

Mfg Akkie
 
tausende Kategorien in einer tabelle zu führen ist doch sehr aufwendig für denjenigen der dann die Artikel anlegen muss, der hat dann ne mords übersicht mit einträgen.

ich zeig nochmal kurz dir logik:

artikel tabelle:
artikelid, bezeichnung, hauptkategorie, kategorie1, kategorie2 usw.

hauptkategorie:
id, bezeichnung

kategorie 1:
id, idhauptkategorie, bezeichnung

kategorie 2:
id, idhauptkategoriem idkategorie1

kategorie 3:
id, idhauptkategorie, idkategorie1, idkategore2

ich hoffe nun wirds verständlicher.
das hat was mit der späteren verwaltung und workflow zu tun.
 

Neue Beiträge

Zurück