SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

Fortgeschrittene CSS-Techniken

Fortgeschrittene CSS-Techniken zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > MySQLi/PDO/(MySQL)
Hilfe Community Kalender Heutige Beiträge Suchen

MySQLi/PDO/(MySQL) Anfänger, Fortgeschrittene oder Experten können hier Fragen und Probleme rund um MySQLi/PDO/(MySQL) diskutieren

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 24.12.2012, 12:04:10
timoxy timoxy ist offline
Anfänger
 
Registriert seit: Dec 2012
Alter: 33
Beiträge: 3
Datenbank Modell Frage

Hallo zusammen,

ich benötige für eine sehr große Webseite ein paar Tipps zum Datenbank Design.

Für die Inhalte
Aktuell existiert eine Tabelle: Produkte (id, name_de, name_en, texte_de, texten, brutto, usw.) Am Design dieser Tabelle kann nichts geändert werden, da diese auch von einer anderen Webseite verwendet wird.

Für die textlichen Inhalte wollte ich folgende Tabelle erstellen Inhalte(id, titel_de, titel_en, text_de, text_en, usw.)

Für die Navigation zusammengefasst
Für die Navigation der Seite soll eine weitere Tabelle erstellt werden navigation(id, parent, reihenfolge) welche die beiden Tabellen Produkte und Inhalte zusammenfasst.
Diese Tabelle wird rekursiv durchgelaufen und so die Navigatiosnstruktur erstellt (parent ist eine Selbstreferenz auf id).

Jetzt würde ich gerne über JOIN Produkte und Inhalte beim Erstellen der Navigation einbeziehen, so dass der Titel gleich mit angezeigt werden kann.

Mein Problem
Ich habe verschiedene Lösungsansätze jedoch ist keiner zufriedenstellend.
1) Die id von Navigation in Produkte und Inhalte als Fremdschlüssel einfügen, dafür müsste ich aber die Produkte Tabelle bearbeiten. Des weiteren weiß ich nicht wie ich beim Auslesen der Datenbank mittels PHP von der Navigationstabelle auf Inhalte und Produkte komme.

2)ID von Produkte und Inhalte als Fremdschlüssel in Navigation eintragen, kann ich Fremdschlüssel von unterschiedlichen Tabellen in die gleiche Spalte eintragen oder muss ich jeweils eine eigene Spalte anlegen und die die nicht benötigt wird mit Null befühlen? Wie machen ich dann darauf eine SELECT, wie untershciede ich ob der Fremdschlüssel von Produkte oder Inhalte kommt.

Ich habe schon viel mit Datenbanken gearbeitet, leider bei so verschachtelten Tabellen immer meine Probleme. Eventuel, hat auch jemand einen komplett anderen Lösungsvorschlag.

Viele Grüße und frohe Weihnachten und Danke für jede Hilfe.
Timo
Mit Zitat antworten
  #2  
Alt 30.12.2012, 19:53:04
Benutzerbild von meikel (†)
meikel (†) meikel (†) ist offline
SELFPHP Guru
 
Registriert seit: Dec 2003
Ort: Erfurt
Alter: 75
Beiträge: 4.001
AW: Datenbank Modell Frage

Zitat:
Zitat von timoxy Beitrag anzeigen
Am Design dieser Tabelle kann nichts geändert werden, da <die übliche Ausrede>.
Aha. Bei solchen Reglementierungen tendiert meine Hilfebereitschaft gegen null.
Mit Zitat antworten
  #3  
Alt 30.12.2012, 22:13:28
timoxy timoxy ist offline
Anfänger
 
Registriert seit: Dec 2012
Alter: 33
Beiträge: 3
AW: Datenbank Modell Frage

Ich verstehe nicht was du mir damit sagen möchtest. Zwei Webseiten sollen mit der gleichen Datenbank arbeiten. Leider ist im Rahmen der Programmierung der zweiten nicht vorgesehen, die erste komplett zu überarbeiten.

Eigentlich suche ich ja nur nach der richtigen JOIN Anweisung.

Ich bin allen dankbar, und freue mich über jeden Lösungsansatz.

Timo
Mit Zitat antworten
  #4  
Alt 30.12.2012, 23:00:26
Benutzerbild von meikel (†)
meikel (†) meikel (†) ist offline
SELFPHP Guru
 
Registriert seit: Dec 2003
Ort: Erfurt
Alter: 75
Beiträge: 4.001
AW: Datenbank Modell Frage

Zitat:
Zitat von timoxy Beitrag anzeigen
Ich verstehe nicht was du mir damit sagen möchtest.
Schade, daß Du kein Deutsch verstehst.

1. Du lieferst weder das CREATE TABLE noch ein paar INSERT INTO der betreffenden Tabellen. Nur eine fast nichtssagende Beschreibung der Tabellen.
2. das Beharren auf Konzept A, um es dann später so aufzubohren, daß es auch für Konzept B tauglich ist, ist sinnfrei.
3. auch wenn es dem heren Ziel der Normalisierung etwas widerspricht: idR. ist es so, daß bei 100 Abfragen ~ 99 * SELECT und vielleicht 1 * REPLACE INTO, UPDATE, DELETE oder INSERT INTO erfolgt. Also gestaltet man das DB Design gefälligst so, daß die Daten schnell und unkompliziert gelesen werden können. Jeder vermeidbare JOIN schlaucht Zeit.
Und warum? Weil es schon genug lahmarschige Internetpräsenzen gibt.
Zitat:
Ich habe schon viel mit Datenbanken gearbeitet, leider bei so verschachtelten Tabellen immer meine Probleme.
Ja klar hast Du Probleme. Ich hätte absolut keine Hemmungen, aus Konzept A + B ein Konzept C zu machen.
Mit Zitat antworten
  #5  
Alt 01.01.2013, 21:28:46
timoxy timoxy ist offline
Anfänger
 
Registriert seit: Dec 2012
Alter: 33
Beiträge: 3
AW: Datenbank Modell Frage

Tabelle 1:
Code:
CREATE TABLE `help_navigation` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `sequence` int(5) NOT NULL,
  `parent` int(10) NOT NULL,
  `text_id` int(5) DEFAULT NULL,
  `product_id` int(5) DEFAULT NULL,
  `intern` varchar(1) NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=20 ;
Tabelle 2:
Code:
CREATE TABLE `help_text` (
  `id` int(5) NOT NULL AUTO_INCREMENT,
  `name_de` varchar(100) NOT NULL,
  `text_de` text NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=4 ;
Tabelle 3:
Code:
CREATE TABLE `produkte` (
  `id` int(5) NOT NULL AUTO_INCREMENT,
  `name_de` varchar(100) NOT NULL,
  `name_en` varchar(100) NOT NULL,
  `kuerzel` varchar(6) NOT NULL,
  `text_de` text NOT NULL,
  `text_en` text NOT NULL,
   //noch einige weitere Attribute
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=121 ;
Meine rekursive Funktion für die Navigation:
PHP-Code:
function getNavigationArrayNeu($parent_id$depth 999$level 0$root) {

    if (
$level $depth)
        return;

    
$dbNavigation = new db();
    
$dbNavigation -> read("SELECT
                            n.id, n.parent, n.text_id, n.product_id,
                            t.name_de as name, t.text_de as text
                        FROM
                            help_navigation as n LEFT JOIN
                            help_text as t ON n.text_id = t.id
                        WHERE
                            n.parent = '$parent_id'
                        ORDER BY
                            n.sequence ASC"
);

    if (
$dbNavigation -> valueCount() == 0) {
        return;
    }
    while (
$row $dbNavigation -> lines()) {

        
$nav[$row['id']]['level'] = $level;
        
$nav[$row['id']]['parent'] = $parent_id;
        
$nav[$row['id']]['id'] = $row['id'];
        
$nav[$row['id']]['name'] = $row['name'];
        
$nav[$row['id']]['text_id'] = $row['text_id'];
        
$nav[$row['id']]['product_id'] = $row['product_id'];
        
$nav[$row['id']]['root'] = $root;
        
$nav[$row['id']]['alias'] = domainstring($row['name']);

        
$back getNavigationArrayNeu($row['id'], $depth$level 1$root domainstring($row['name']) . "/");
        if (
count($back) > 0) {
            
$nav[$row['id']]['sub'] = $back;
        }

    }
    return 
$nav;

Wie schaffe ich es nun nicht nur die help_text sondern auch die produkte in die Navigation mit aufzunehmen.
Mit Zitat antworten
  #6  
Alt 02.01.2013, 22:35:39
Benutzerbild von meikel (†)
meikel (†) meikel (†) ist offline
SELFPHP Guru
 
Registriert seit: Dec 2003
Ort: Erfurt
Alter: 75
Beiträge: 4.001
AW: Datenbank Modell Frage

Du solltest Dich mal mit nested sets - Baumdarstellung in SQL - beschäftigen
Mit Zitat antworten
Antwort

Stichworte
datenbankdesign, fremdschlüssel, mysql


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Bei Formular Abfrage einer Datenbank und Eintragung in einer andere ChiiFii MySQLi/PDO/(MySQL) 2 14.04.2010 20:11:23
Auch eine Frage zum Aufbau einer Datenbank NickKnatterton MySQLi/PDO/(MySQL) 4 23.06.2009 00:58:41
eine Frage von einem Anfänger an die Profis jtbkn MySQLi/PDO/(MySQL) 4 11.04.2006 19:44:27
Frage zu datenbank öffnen und schliessen schmidt PHP für Fortgeschrittene und Experten 4 03.11.2003 12:55:02
Datenbank - Eine generelle Frage Stella PHP für Fortgeschrittene und Experten 18 24.04.2003 13:09:58


Alle Zeitangaben in WEZ +2. Es ist jetzt 21:49:47 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt