Vladislav Vorobiev schrieb:
>> Hallo;
>>
>> Ja, ALTER hatte ich Ihm schon angeraten, um das "Design" zu ändern
>>
>>
>> > IMHO ist das Sortieren der Felder bei der Ausgabe aber Sache der
> Applikation
>> > und sollte von der Reihenfolge der Spalten in der Tabelle unabhängig
> sein.
>>
>> Frage zu dem Thema hätte ich an Vlad, machst du eine Anfrage wie: SELECT *
> FROM tabelle where x = y;
>>
>> Das sollte man möglichst nicht tun, versuch genau zu bestimmen welche
> Felder du in deiner Ausgaben haben möchtest
>> Select unserId, username, email, PLZ, stadt, strasse, land from tabelle where x
> =y;
>> Da kannst du dann auch die Reinfolge bestimmen
>>
>
> Hallo,
>
> ihr habt alle recht! Ich muss noch halt überlegen wie ich es mache.
> Möchte es so dynamisch wie nur möglich gestalten, allerdings sollte es
> nicht unbedingt Datenbankabhängig sein.
>
Hallo Vlad,
stell Dir ein Datenbank einfach mal so vor:
Du hast einen Schrank mit senkrechten und waagerechten Fächern.
An die senkrechten Fächer klebst Du Zettel mit den Wochentage von Montag
bis Sonntag.
Waagerecht an die Fächer klebst Du Zettel mit: Schuhe, T-Shirt,
Unterhose, Hose.
Deine Kleidung packst Du entsprechend der Beschriftung in die
entsprechenden Fächer. Also zum Beispiel das Sonntags-T-Shirt in das
Fach T-Shirt / Sonntag.
Nun fällt Dir auf, dass Du ein Fach für die Socken vergessen hast.
Also baust Du in diesem Schrank noch ein waagerechtes Fach für Socken.
Weil nach oben noch Platz im Schrank war, packst Du es einfach oben auf
die anderen Fächer.
Wenn Du Dich nun morgens anziehst, fängst Du ja auch nicht mit den
Schuhen an, nur weil sie im untersten Fach sind. Du greifst entsprechend
der Reihenfolge, wie Du Dich anziehst einfach in die entsprechenden
Fächer des entsprechenden Wochentages.
z.B. Unterhose, Socken, Hose, T-Shirt und dann die Schuhe für einen Montag.
Bei einer Datenbank ist das eigentlich genauso. Dadurch, dass Du sagst,
was Du zuerst und was Du zuletzt haben möchtest, gibt Dir eine Datenbank
die Werte auch in genau dieser Reihenfolge zurück.
Sagen wir Du hast:
CREATE TABLE Kleiderschrank(Wochentag Tag, Schuhe Leder, T-Shirt
Baumwolle, Unterhose Baumwolle, Hose Jeans, Socken Wolle);
Morgens beim Anziehen machst Du dann:
SELECT Unterhose, Socken, Hose, T-Shirt, Schuhe from Kleiderschrank
WHERE Wochentag='Montag';
Heraus kommt dann zum Beispiel:
Unterhose | Socken | Hose | T-Shirt | Schuhe
schwarze Lieblings-Unterhose | Tennissocken | blau Arbeitsjeans | MySQL
Werbe-T-Shirt | Turnschuhe
Es ist eher eine Unart, dass man die Reihenfolge der Spalten sortieren
möchte. Die Reihenfolge der Spalten ist eigentlich völlig egal.
Du fängst in Deiner Wohnung ja auch nicht an, die gesamte
Wohnzimmereinrichtung zu verrücken und dadurch womöglich noch neue
Verkabelungen für Fernseher, Stereoanlage, DVD-Rekorder zu verlegen, nur
weil das neu gekaufte Buch nicht mehr ins Bücherregal passt. Typischer
Weise suchst Du Dir bei sowas doch eher einen noch freien Platz an der
Wand, wo Du noch ein zusätzliches Bücherregal anbringen könntest.
Da MySQL sehr häufig von Anfängern genutzt wird, die vorher noch nie
etwas über Datenbanken oder gar Datenbankdesign gehört/gelernt haben,
hat MySQL für die Sortierung der Spalten ein Feature. Du kannst bei
MySQL sagen, hinter welche Spalte Du eine neue Spalte haben möchtest:
ALTER TABLE tabellenname ADD COLUMN spaltenbeschreibung AFTER
spaltenname_der_spalte_davor;
Bedenke hier, dass ist ein reines MySQL Feature, was Du in anderen RDBMS
nicht unbedingt findest. Wenn man einmal begriffen hat, dass die
Spaltenreihenfolge in einer Datenbanken völlig irrelevant ist, dann
braucht man dieses Feature eigentlich nicht.
Mein Abschlußtip: Bevor Du anfängst den SQL code für eine neue Datenbank
einzugeben, mach Dir erst einmal Gedanken um die Datenbank, was Du alles
brauchst, wie alles verknüpft werden soll. Zeichne es Dir am besten auf.
Eine wichtige Grundregel für Datenbankdesign ist: 70-80 % der Zeit
sollte für die Überlegungen und die Skizzierung der Datenbank verwendet
werden und 30-20 % für das Heruntertippen des SQL Codes zur Erstellung
der Datenbank, Tabellen, Trigger, Funktionen, Stored Procedures oder was
sonst noch benötigt wird.
Vorher gut durchdacht erspart hinterher sehr viel Ärger.
Susanne
--
Sun Microsystems GmbH
Dipl.-Inf. Susanne Ebrecht, Support Engineer
52066 Aachen, Germany
http://www.sun.de
Sitz der Gesellschaft:
Sun Microsystems GmbH, Sonnenallee 1, D-85551 Kirchheim-Heimstetten
Amtsgericht München: HRB 161028
Geschäftsführer: Thomas Schröder, Wolfgang Engels, Dr. Roland Bömer
Vorsitzender des Aufsichtsrates: Martin Häring