phpbar.de logo

Mailinglisten-Archive

Re: Doublette ausschliessen
Archiv Mailingliste mysql-de

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Doublette ausschliessen




On 19-Aug-2000 Joern Grube wrote:
> At 08:20 19.08.2000 +0200, you wrote:
>>Hi!
>>
>>Man kann einen Key anlegen, der aus einer Kombination mehrerer Felder
>>besteht. Genaueres weiss ich auch nicht, ich bin mir auch nicht 100% sicher
>>daß MySQL das unterstützt, denke aber schon. Genaueres müsste dann in der
>>Doku stehen.
> 
> Da liegt ja immer mein Problem, jeder verweist auf die Doku, irgendne FAQ
> oder sonst was, aber keiner sagt, WONACH man suchen sollte (na ja, manche
> tun es <s>).
>  Trotzdem danke. Ich denke, wenn ich es in PHP abfange, kann ich nichts
> falsch machen.

Ich will dir hier nicht auf die Füsse treten, dein Problem ist doch schon eines
der komplexeren, die auf Listen wie dieser behandelt werden, ich will das jetzt
eher allgemein ansprechen. 

Ich muß generell feststellen, das die Bereitschaft, Dokus/FAQs usw zu lesen
stark abgenommen hat, so nach dem Motto, warum soll ich mich zwei Stunden
hinsetzen, und danach suchen, wenn ich in zwei Stunden ne Antwort von der Liste
haben kann.

Wenn man mal das Handbuch zu so nem Produkt wie MySQL gelesen hat, und
vielleicht auch ein weiteres Buch zu Datenbanken allgemein, dann sollte sich
IMHO so eine Frage wie deine nicht mehr stellen. Und mit lesen mein ich
wirklich lesen, nicht nur im Schrank haben. Und so ein Buch sollte auch ständig
griffbereit sein, man kann nicht alles was drinsteht auswendig wissen, sondern
mal muß nur wissen, wo man es im Zweifelsfall nachschlagen kann. 

So, jetzt speziell zu deinem Problem: du kannst das sowohl in SQL als auch in
PHP lösen, die SQL Lösung kann ich dir hier mal andenken, für PHP muß ich an
andere verweisen. Ideal ist in meinen Augen eine Kombination (warum, dazu unten
mehr).

Du solltest für die Felder, deren Kombinationen einmalig sein müssen, einen
Unique index einrichten:

alter table <foo> add unique <bar> (<spalte1>, <spalte2>, ....)

Wenn du versuchst, die gleiche Kombination nochmal reinzuschreiben, dann
schreit MySQL.

So, warum jetzt auch in PHP abfangen? Ganz einfach: User sollten nicht mit
Backend-Fehlermeldungen konfrontiert werden, die sie nicht verstehen können.
Diese Fehlermeldungen sollten abgefangen werden, und durch verständlichere
ersetzt werden. U.U. kann man sogar in PHP den Error-Condition direkt
vermeiden indem man den User bereits vorher auf das Problem hinweist,  und
sagt, das es so nicht gehen wird.

Wenn alles schon in PHP gelöst ist, warum dann noch zusätzlich in MySQL? Auch
ganz einfach: was wird passieren, wenn du zwei (in den beiden Feldern) gleiche
Datensätze hast? Naja, irgendwas schlechtes, drum willst du es ja nicht haben.
Und es sind sicherlich nicht alle Zugriffe ausschliesslich über PHP (bzw. über
die Seiten mit der Kontrolle), du mußt vielleicht irgendwann mal Datensätze per
Hand abändern. UNd dann bist du dankbar, das die Datenbank auch nochmal drüber
wacht.


Michael

-- 
Michael Bergbauer <michael.bergbauer_(at)_gmx.net>
Use your idle CPU cycles.
See http://www.distributed.net and win $ 1 000.
Visit our mud Geas at geas.franken.de Port 3333

---
*** Abmelden von dieser Mailingliste funktioniert per E-Mail
*** an mysql-de-request_(at)_lists.4t2.com mit Betreff/Subject: unsubscribe


Home | Main Index | Thread Index

php::bar PHP Wiki   -   Listenarchive