List:German« Previous MessageNext Message »
From:Susanne Ebrecht Date:May 3 2008 8:01pm
Subject:Re: sortierung hard
View as plain text  
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

Thread
sortierung hardVladislav Vorobiev1 May 2008
  • RE: sortierung hardThomas Goik  - echtwahr.com2 May 2008
    • Re: sortierung hardVladislav Vorobiev2 May 2008
      • Re: sortierung hardGregor Hermens2 May 2008
        • RE: sortierung hardThomas Goik  - echtwahr.com2 May 2008
          • Re: sortierung hardVladislav Vorobiev2 May 2008
            • Re: sortierung hardSusanne Ebrecht3 May 2008