php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2006

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 05.07.2006, 18:09  
Erfahrener Benutzer
 
Registriert seit: 07.11.2003
Beiträge: 526
Promaetheus
Standard kombinierte tabellen, jedoch mit gleicher id?

ich habe 2 tabellen:
produkte:
- prod_id
- prod_image,
- prod_status

product_details:
- prod_id
- lang_id
- prod_name
- prod_desc

wenn ich nun ein produkt anlege, so sollen die daten in die beiden tabellen eingetragen werden.
ABER: muss ich wirklich zuerst die daten in die tabelle "produkte" einlesen, dann eine abfrage machen um die "prod_id" zu bekommen und dann die restlichen daten in die tabelle "product_details" einfügen?
denn wie bekomme ich sonst die prod_id in die 2. tabelle rein?

oder hab ich da einen denkfehler?
__________________
mfg Alexander Haim
Promaetheus ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 05.07.2006, 18:40  
Moderator
 
Benutzerbild von agrajag
 
Registriert seit: 02.10.2006
Beiträge: 3.820
PHP-Kenntnisse:
Fortgeschritten
agrajag wird schon bald berühmt werdenagrajag wird schon bald berühmt werden
Standard

Du kannst die ID nach dem einfügen einfach über mysql_insert_id() abholen.
__________________
Today you...Tomorrow me.
agrajag ist offline  
Alt 05.07.2006, 21:52  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Welchen Sinn macht eine Trennung in 2 Tabellen, wenn es sich lediglich um 7 Spalten handelt? Keinen!
Zergling-new ist offline  
Alt 06.07.2006, 07:37  
Erfahrener Benutzer
 
Registriert seit: 07.11.2003
Beiträge: 526
Promaetheus
Standard

danke. auf mysql_insert_id() hatte ich komplett vergessen.
@zergling: es handelt sich 1. um mehrere spalten, hatte hier zur veranschaulichung nur weniger gepostet und das hauptkriterium: die spalten sind vom admininterface frei erweiterbar.
__________________
mfg Alexander Haim
Promaetheus ist offline  
Alt 06.07.2006, 13:11  
Erfahrener Benutzer
 
Registriert seit: 09.03.2005
Beiträge: 219
webbi
Standard

Zitat:
das hauptkriterium: die spalten sind vom admininterface frei erweiterbar
Dann stimmt aber mit dem Datenbank-Konzept etwas nicht. Die Spaltenanzahl sollte nicht erweiterbar sein.

Sinnvoll für deine 2. Tabelle:

ID | ProduktID | (Eigenschaftsname) | Eigenschaft

Oder besser noch eine 3. Tabelle für die Bezeichnungen der Eigenschaften (weil ja mehrere Objekte die gleichen Eigenschaften haben können) und dann alles in der anderen Tabelle zusammenführen.
Aber keine dynamisch erweiterbare Spalten!
webbi ist offline  
Alt 06.07.2006, 13:45  
Erfahrener Benutzer
 
Benutzerbild von lazydog
 
Registriert seit: 02.04.2008
Beiträge: 4.032
lazydog befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von webbi
Dann stimmt aber mit dem Datenbank-Konzept etwas nicht. Die Spaltenanzahl sollte nicht erweiterbar sein.
Das kann durchaus sinnvoll sein. Wenn du z.B. ein mehrsprachiges CMS hast und eine Tabelle für die Begriffe in mehreren Sprachen, also z.B.
ID | deutsch | englisch | französisch
und der Administrator eine neue Sprache hinzufügt, dann wird auch die Tabelle erweitert, z.B
ID | deutsch | englisch | französisch | spanisch

Und eine dritte Tabelle braucht es nach meiner Meinung nicht, da zwischen der produkte- und der detail-Tabelle eine 1:n Beziehung besteht. Was ich eher sehe, ist ein Problem mit der Zuteilung der Attribute. Jedes Attribut, das eindeutig unique von der ID abhängt, d.h pro Artikel nur einmal vorkommen kann - z.B. der Name - gehört in die produkte-Tabelle, alle anderen zu den Details (jetzt mal vereinfacht dargestellt)
__________________
Gruss
L
lazydog ist offline  
Alt 06.07.2006, 13:53  
Erfahrener Benutzer
 
Registriert seit: 07.11.2003
Beiträge: 526
Promaetheus
Standard

@webbi. hatte mich verschrieben. natürlich werden nicht die spalten erweitert, sondern die sprachen. sonst wäre der vorschlag von zergling ja ok gewesen, dann hätte ich prod sprache einfach eine neue spalte hinzugefügt. lieber aber mache ich das in einer neuen tabelle mit der lang_id.
war ein tippfehler. der sinn sollte aber auch so hervorgegangen sein, denn die lösung mit den spalten erweitern ist nicht sehr gut.
__________________
mfg Alexander Haim
Promaetheus ist offline  
Alt 06.07.2006, 14:38  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Zitat:
Zitat von Promaetheus
sonst wäre der vorschlag von zergling ja ok gewesen, dann hätte ich prod sprache einfach eine neue spalte hinzugefügt.
Das habe nicht ich empfohlen, sondern lazydog. Von dynamischer Spaltenerweiterungen halte ich grundsätzlich nichts. Der Variable teil sind immer die Zeilen, nie die Spalten.
Wenn doch wurde schon das Design verbockt.

Um wieviele Spalten handelt es sich denn und sind alle Pflicht? Ansonsten könntest du wieder überlegen, eine Users Tabelle mit id | username | pflichtfelder | .. und eine UserSettings mit den optionalen Werten, aufgebaut nach user_id | key | value (zB 1 | "Anrede" | "Prof. Dr.") ..(wobei du Anrede auch wieder rausnormalisieren müsstest

Ansonsten kann eine Aufteilung bei zuviel Pflicht-Spalten durchaus auchmal Sinn machen.
Zergling-new ist offline  
Alt 06.07.2006, 15:37  
Erfahrener Benutzer
 
Registriert seit: 18.07.2004
Beiträge: 2.162
PHP-Kenntnisse:
Fortgeschritten
Basti
Standard

Wozu mysql_insert_id()? Ist doch eine MySQL-Funktion, die PHP da anspricht und die kann man doch auch direkt aufrufen.

Beispiel aus dem MySQL-Manual:
Code:
INSERT INTO foo (auto,text)
    VALUES(NULL,'text');              # generate ID by inserting NULL
INSERT INTO foo2 (id,text)
    VALUES(LAST_INSERT_ID(),'text');  # use ID in second table
Basti
Basti ist offline  
Alt 06.07.2006, 15:48  
Erfahrener Benutzer
 
Registriert seit: 07.11.2003
Beiträge: 526
Promaetheus
Standard

und wie soll das hier funktionieren?
Code:
INSERT INTO foo (id, artikelnummer)  // id insert automatic
     VALUES(NULL, 'artnr');
// 2 sprachen:
INSERT INTO foo2 (id, artikelname, artikelbeschreibung)
     VALUES(LAST_INSERT_ID(), 'name1', 'beschreibung1');
INSERT INTO foo2 (id, artikelname, artikelbeschreibung)
     VALUES(LAST_INSERT_ID(), 'name2', 'beschreibung2');
bleibt die id da bestehen? wird der wert erst verworfen wenn ein neuer datensatz in foo eingetragen wird?
__________________
mfg Alexander Haim
Promaetheus ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

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

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Tabellen für Vokabeltrainer anlegen... anonym01 PHP Tipps 2008 9 03.03.2008 21:18
PHP Array in MYSQL Tabellen schreiben Matt Datenbanken 1 26.02.2008 19:43
5 tabellen miteinander verknüpfen. miwo Datenbanken 2 22.09.2007 11:17
Update über zwei Tabellen tekknotrip Datenbanken 2 26.02.2007 16:25
Viele Tabellen oder viele Spalten?! thefaxx PHP Tipps 2006 2 01.10.2006 15:32
Volltext-Suche Problem - 2 verschiedene Tabellen Datenbanken 1 18.09.2006 16:32
Ausgabe der Verknüpften tabellen über php skript PHP Tipps 2006 4 07.02.2006 15:04
Join-Abfrage über mehrere Tabellen sinai Datenbanken 3 04.02.2006 13:05
einträge aus 2 tabellen sortieren Tschuu Datenbanken 11 20.12.2005 08:21
[Erledigt] abfrage mehrere tabellen PHP Tipps 2005-2 3 31.10.2005 21:57
MySQL Daten aus verknüpften Tabellen auslesen ? PHP Tipps 2005-2 2 27.06.2005 03:21
[Erledigt] DB-Design "CD-Shop" - Tabellen Datenbanken 2 13.05.2005 10:37
Quiz Tabellen wizzardxx Datenbanken 9 10.05.2005 11:24
[Erledigt] Selectanfrage an eine Datenbank,aber aus mehreren Tabellen Datenbanken 2 26.10.2004 07:23
[Erledigt] fulltext suche priorität von tabellen setzen Datenbanken 1 09.08.2004 15:26

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php in db und mehrere tabellen schreiben mit gleicher id

Alle Zeitangaben in WEZ +2. Es ist jetzt 18:08 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.