Aufgabe my SQL überhaupt lösbar?

Aufgabe my SQL überhaupt lösbar?

am 02.10.2006 11:04:41 von Richard Kaufmann

Hallo,
ich bin noch nicht so lange mit SQL unterwegs. Bisher habe ich keine
Idee, wie man die Aufgabe, die ich habe, überhaupt mit SQL lösen
kann. Deshalb möchte ich hier mal die Experten fragen:

Ich habe ausschließlich lesenden Zugriff auf eine MySQL Tabelle via
phpmyadmin auf einem anderen System im Netzwerk. Die Tabelle hat ca.
200 Einträge und 120 Felder. Auf meinem lokalen PC habe den MySQL
Server aus XAMPP am laufen. Hier habe ich Vollzugriff. Soviel zur
Umgebung.

Aufgabe 1:
Ich muss von den 120 Feldern 25 Felder überwachen. Alles Varchar. Wenn
sich in einem dieser Feldern etwas ändert, muss ich reagieren.
'Ändert' bedeutet in diesem Fall Text neu eingetragen, Text gelöscht
oder Text geändert. Ich brauche eine Ausgabe in dem Format
Datensatz-ID -> Feld vorher -> Feld hinterher. Diesen Vergleich muss
ich täglich und in frei wählbaren Intervallen durchführen.

Beispiel:
Datensatz-ID -> 103, Feld (Datenformat) vorher (01.10.06) ->, Feld
(Datenformat) jetzt (02.10.06) -> ASCII
Datensatz-ID -> 103, Feld (Uebermittlung) vorher (01.10.06) -> FAX,
Feld (Uebermittlung) jetzt (02.10.06) -> FTP

Die Daten von vorher und jetzt muss ich frei wählen können.


Aufgabe 2:
Ich muss zählen und reporten, welche Felder (der überwachten) der DB
mit Werten gefüllt sind und welche nicht. Auch hier muss ich das für
jeden Tag bzw für ein frei wählbares Intervall tun.

Beispiel:
Feld (Datenformat) Anzahl gefüllt vorher (01.10.06) -> 66, Feld
(Datenformat) Anzahl gefüllt jetzt (02.10.06) -> 67
Feld (Uebermittlung) Anzahl gefüllt vorher (01.10.06) -> 87, Feld
(Uebermittlung) Anzahl gefüllt jetzt (02.10.06) -> 87


Meine erste Idee war, jeden Tag eine Kopie der aktuellen DB auf meinem
PC anzulegen und den Namen um das Datum zu ergänzen. Damit habe ich
(hoffentlich) die Grundlage um überhaupt diese Deltas zu erzeugen.
Aber wie zähle ich dann z. B. die mit Werten gefüllten Felder? Gut,
mit count. Aber wie gruppiere ich das dann für mehrere Felder
gleichzeitig? Ich will ja am Ende erst einmal eine Liste
'Name-der-Spalte =3D Anzahl-der-nichtleeren-Einträge' für 'jetzt', dann
eine für 'früher' und am Ende die Differenz 'früher-heute=3D?'

Das gleiche für die Änderungen:
Was stand im Feld für den Datensatz 0815 gestern drin? Was steht in
dem Feld heute drin? Was hat sich geändert?

Wie gesagt: die Hauptfrage ist 'Kann ich das mit SQL Statements
innerhalb von MySQL lösen?' oder muss ich mir mit Perl oder PHP was
basteln?

Gruß
Richard

Re: Aufgabe my SQL überhaupt lösbar?

am 02.10.2006 11:31:38 von Christian Kirsch

Am 02.10.2006 11:04 schrieb Richard Kaufmann:
> Hallo,
> ich bin noch nicht so lange mit SQL unterwegs. Bisher habe ich keine
> Idee, wie man die Aufgabe, die ich habe, überhaupt mit SQL lösen
> kann. Deshalb möchte ich hier mal die Experten fragen:
>
> Ich habe ausschließlich lesenden Zugriff auf eine MySQL Tabelle via
> phpmyadmin auf einem anderen System im Netzwerk. Die Tabelle hat ca.
> 200 Einträge und 120 Felder. Auf meinem lokalen PC habe den MySQL

120 Felder in einer Tabelle machen mich misstrauisch.

> Server aus XAMPP am laufen. Hier habe ich Vollzugriff. Soviel zur
> Umgebung.
>
> Aufgabe 1:
> Ich muss von den 120 Feldern 25 Felder überwachen.
> Alles Varchar. Wenn
> sich in einem dieser Feldern etwas ändert, muss ich reagieren.
> 'Ändert' bedeutet in diesem Fall Text neu eingetragen, Text gelöscht
> oder Text geändert. Ich brauche eine Ausgabe in dem Format
> Datensatz-ID -> Feld vorher -> Feld hinterher. Diesen Vergleich muss
> ich täglich und in frei wählbaren Intervallen durchführen.
>

Für sowas gibt's Trigger, zumindest ab MySQL 5

> Beispiel:
> Datensatz-ID -> 103, Feld (Datenformat) vorher (01.10.06) ->, Feld
> (Datenformat) jetzt (02.10.06) -> ASCII
> Datensatz-ID -> 103, Feld (Uebermittlung) vorher (01.10.06) -> FAX,
> Feld (Uebermittlung) jetzt (02.10.06) -> FTP

Ich verstehe nicht so ganz, was ASCII, FAX und FTP da bedeuten sollen
- ist das für das Problem relevant.
>
> Die Daten von vorher und jetzt muss ich frei wählen können.
>
Auch das verstehe ich nicht - meinst Du mit "Daten" den *Termin*, oder
meinst Du den Inhalt der Felder?
>
> Aufgabe 2:
> Ich muss zählen und reporten, welche Felder (der überwachten) der DB
> mit Werten gefüllt sind und welche nicht. Auch hier muss ich das für
> jeden Tag bzw für ein frei wählbares Intervall tun.
>
> Beispiel:
> Feld (Datenformat) Anzahl gefüllt vorher (01.10.06) -> 66, Feld
> (Datenformat) Anzahl gefüllt jetzt (02.10.06) -> 67
> Feld (Uebermittlung) Anzahl gefüllt vorher (01.10.06) -> 87, Feld
> (Uebermittlung) Anzahl gefüllt jetzt (02.10.06) -> 87
>
Du möchtest also eine Historie der Tabelle mitführen? Gibt die
Tabellenstruktur das her?

>
> Meine erste Idee war, jeden Tag eine Kopie der aktuellen DB auf meinem
> PC anzulegen und den Namen um das Datum zu ergänzen.

Oh my god.

> Damit habe ich
> (hoffentlich) die Grundlage um überhaupt diese Deltas zu erzeugen.
> Aber wie zähle ich dann z. B. die mit Werten gefüllten Felder? Gut,
> mit count. Aber wie gruppiere ich das dann für mehrere Felder
> gleichzeitig?

mit GROUP

> Ich will ja am Ende erst einmal eine Liste
> 'Name-der-Spalte = Anzahl-der-nichtleeren-Einträge' für 'jetzt', dann
> eine für 'früher' und am Ende die Differenz 'früher-heute=?'
>
> Das gleiche für die Änderungen:
> Was stand im Feld für den Datensatz 0815 gestern drin? Was steht in
> dem Feld heute drin? Was hat sich geändert?

Gegenfrage: Wäre es nicht vielleicht einfacher, erstmal zu überlegen,
ob man wirklich 120 Felder in einer Tabelle braucht? Und dann das
ganze so zu normalisieren, dass man die Werte samt Änderungsdatum in
eine separate Tabelle einträgt, verknüpft über eine ID mit der
Haupttabelle?


>
> Wie gesagt: die Hauptfrage ist 'Kann ich das mit SQL Statements
> innerhalb von MySQL lösen?' oder muss ich mir mit Perl oder PHP was
> basteln?
Ja, nein.
Etwas genauere Informationen wären allerdings schon hilfreich, z.B.
ein (Auszug aus) SHOW CREATE TABLE.

Re: Aufgabe my SQL überhaupt lösbar?

am 02.10.2006 12:13:49 von Richard Kaufmann

Christian Kirsch schrieb:

> Am 02.10.2006 11:04 schrieb Richard Kaufmann:
> > Hallo,
> > ich bin noch nicht so lange mit SQL unterwegs. Bisher habe ich keine
> > Idee, wie man die Aufgabe, die ich habe, überhaupt mit SQL lösen
> > kann. Deshalb möchte ich hier mal die Experten fragen:
> >
> > Ich habe ausschließlich lesenden Zugriff auf eine MySQL Tabelle via
> > phpmyadmin auf einem anderen System im Netzwerk. Die Tabelle hat ca.
> > 200 Einträge und 120 Felder. Auf meinem lokalen PC habe den MySQL
>
> 120 Felder in einer Tabelle machen mich misstrauisch.

Es ist sowas ähnliches wie eine Adressdatenbank. Mit dutzenden von
Ansprechpartnern und deren Aufgaben. An der DB können wir nichts
ändern. Sie gehört einem externen Dienstleister.

>
> > Server aus XAMPP am laufen. Hier habe ich Vollzugriff. Soviel zur
> > Umgebung.
> >
> > Aufgabe 1:
> > Ich muss von den 120 Feldern 25 Felder überwachen.
> > Alles Varchar. Wenn
> > sich in einem dieser Feldern etwas ändert, muss ich reagieren.
> > 'Ändert' bedeutet in diesem Fall Text neu eingetragen, Text gelöscht
> > oder Text geändert. Ich brauche eine Ausgabe in dem Format
> > Datensatz-ID -> Feld vorher -> Feld hinterher. Diesen Vergleich muss
> > ich täglich und in frei wählbaren Intervallen durchführen.
> >
>
> Für sowas gibt's Trigger, zumindest ab MySQL 5

Wie gesagt. Ich habe nur einen Lesezugriff auf die DB. Ich kann weder
eine Programmänderung noch ein Update veranlassen. Ich muss die DB so
nehmen wie sie ist. Nach dem Motto 'friß oder stirb'.

>
> > Beispiel:
> > Datensatz-ID -> 103, Feld (Datenformat) vorher (01.10.06) ->, Feld
> > (Datenformat) jetzt (02.10.06) -> ASCII
> > Datensatz-ID -> 103, Feld (Uebermittlung) vorher (01.10.06) -> FAX,
> > Feld (Uebermittlung) jetzt (02.10.06) -> FTP
>
> Ich verstehe nicht so ganz, was ASCII, FAX und FTP da bedeuten sollen
> - ist das für das Problem relevant.

Nein, die INHALTE sind nicht relevant. Es handelt sich nur um
Beispieldaten.

> >
> > Die Daten von vorher und jetzt muss ich frei wählen können.
> >
> Auch das verstehe ich nicht - meinst Du mit "Daten" den *Termin*, oder
> meinst Du den Inhalt der Felder?

Ich meine den Inhalt der Felder an einem bestimmten Stichtag. Was war
heute? Was war gestern? Was war letzte Woche?

> >
> > Aufgabe 2:
> > Ich muss zählen und reporten, welche Felder (der überwachten) der DB
> > mit Werten gefüllt sind und welche nicht. Auch hier muss ich das für
> > jeden Tag bzw für ein frei wählbares Intervall tun.
> >
> > Beispiel:
> > Feld (Datenformat) Anzahl gefüllt vorher (01.10.06) -> 66, Feld
> > (Datenformat) Anzahl gefüllt jetzt (02.10.06) -> 67
> > Feld (Uebermittlung) Anzahl gefüllt vorher (01.10.06) -> 87, Feld
> > (Uebermittlung) Anzahl gefüllt jetzt (02.10.06) -> 87
> >
> Du möchtest also eine Historie der Tabelle mitführen? Gibt die
> Tabellenstruktur das her?

Nein, das gibt sie nicht her. Das muss ich alles manuell auf meinem PC
machen. Wie bereits gesagt: Ich kann die vorhandene Tabellestruktur
nicht ändern oder ändern lassen.

>
> >
> > Meine erste Idee war, jeden Tag eine Kopie der aktuellen DB auf meinem
> > PC anzulegen und den Namen um das Datum zu ergänzen.
>
> Oh my god.
>
> > Damit habe ich
> > (hoffentlich) die Grundlage um überhaupt diese Deltas zu erzeugen.
> > Aber wie zähle ich dann z. B. die mit Werten gefüllten Felder? Gut,
> > mit count. Aber wie gruppiere ich das dann für mehrere Felder
> > gleichzeitig?
>
> mit GROUP

Wie GROUPe ich denn auf mehrer Felder gleichzeitig? Nimm eine
Adressdatenbank mit 1000 Datensätzen drin. Jetzt möchte ich zählen
in wievielen davon die Felder 'Tel', 'Fax' und 'Mail' gefüllt sind.
"SELECT count (tel),count (fax),count (mail)" ist mir klar. Aber wie
lautet die GROUP Zeile wenn ich alle Werte unabhängig voneinander im
Ergebnis stehen haben möchte?

>
> > Ich will ja am Ende erst einmal eine Liste
> > 'Name-der-Spalte =3D Anzahl-der-nichtleeren-Einträge' für 'jetzt', =
dann
> > eine für 'früher' und am Ende die Differenz 'früher-heute=3D?'
> >
> > Das gleiche für die Änderungen:
> > Was stand im Feld für den Datensatz 0815 gestern drin? Was steht in
> > dem Feld heute drin? Was hat sich geändert?
>
> Gegenfrage: Wäre es nicht vielleicht einfacher, erstmal zu überlegen,
> ob man wirklich 120 Felder in einer Tabelle braucht? Und dann das
> ganze so zu normalisieren, dass man die Werte samt Änderungsdatum in
> eine separate Tabelle einträgt, verknüpft über eine ID mit der
> Haupttabelle?

Wäre besser, ja. Aber leider habe ich darauf, siehe oben, keinerlei
Einfluss. Ich muss die Tabelle so nehmen wie sie kommt.


>
>
> >
> > Wie gesagt: die Hauptfrage ist 'Kann ich das mit SQL Statements
> > innerhalb von MySQL lösen?' oder muss ich mir mit Perl oder PHP was
> > basteln?
> Ja, nein.
> Etwas genauere Informationen wären allerdings schon hilfreich, z.B.
> ein (Auszug aus) SHOW CREATE TABLE.

Geht leider gerade nicht. Mein VPN baut sich nicht auf.

Gruss
Richard

Re: Aufgabe my SQL überhaupt lösbar?

am 02.10.2006 12:26:31 von Christian Kirsch

Am 02.10.2006 12:13 schrieb Richard Kaufmann:
> Christian Kirsch schrieb:
>
>> Am 02.10.2006 11:04 schrieb Richard Kaufmann:

>>> ich bin noch nicht so lange mit SQL unterwegs. Bisher habe ich keine
>>> Idee, wie man die Aufgabe, die ich habe, überhaupt mit SQL lösen
>>> kann. Deshalb möchte ich hier mal die Experten fragen:
>>>
>>> Ich habe ausschließlich lesenden Zugriff auf eine MySQL Tabelle via
>>> phpmyadmin auf einem anderen System im Netzwerk. Die Tabelle hat ca.
>>> 200 Einträge und 120 Felder. Auf meinem lokalen PC habe den MySQL
>> 120 Felder in einer Tabelle machen mich misstrauisch.
>
> Es ist sowas ähnliches wie eine Adressdatenbank. Mit dutzenden von
> Ansprechpartnern und deren Aufgaben. An der DB können wir nichts
> ändern. Sie gehört einem externen Dienstleister.
>

Dann würde ich den wechseln. Für so eine Aufgabe benutzt man
Master-Detail-Tabellen: Der Master enthält die allgemeinen Daten wie
Firmenname, Anschrift etc., die Detail-Tabelle(n) enthalten für jede
Firma die Ansprechpartner. Und zwar *einen* pro Datensatz. Dadurch
verschwendet man nicht x leere Felder einerseits - und kann
andererseits auch 2000 Ansprechpartner speichern, ohne das
Tabellenlayout zu ändern.

>>> Server aus XAMPP am laufen. Hier habe ich Vollzugriff. Soviel zur
>>> Umgebung.
>>>
>>> Aufgabe 1:
>>> Ich muss von den 120 Feldern 25 Felder überwachen.
>>> Alles Varchar. Wenn
>>> sich in einem dieser Feldern etwas ändert, muss ich reagieren.
>>> 'Ändert' bedeutet in diesem Fall Text neu eingetragen, Text gelöscht
>>> oder Text geändert. Ich brauche eine Ausgabe in dem Format
>>> Datensatz-ID -> Feld vorher -> Feld hinterher. Diesen Vergleich muss
>>> ich täglich und in frei wählbaren Intervallen durchführen.
>>>
>> Für sowas gibt's Trigger, zumindest ab MySQL 5
>
> Wie gesagt. Ich habe nur einen Lesezugriff auf die DB. Ich kann weder
> eine Programmänderung noch ein Update veranlassen. Ich muss die DB so
> nehmen wie sie ist. Nach dem Motto 'friß oder stirb'.

Pech. Bzw. inakzeptabel. "Graben Sie bis morgen mit dieser Mülltonne
den Garten um."

>>> Aufgabe 2:
>>> Ich muss zählen und reporten, welche Felder (der überwachten) der DB
>>> mit Werten gefüllt sind und welche nicht. Auch hier muss ich das für
>>> jeden Tag bzw für ein frei wählbares Intervall tun.
>>>
>>> Beispiel:
>>> Feld (Datenformat) Anzahl gefüllt vorher (01.10.06) -> 66, Feld
>>> (Datenformat) Anzahl gefüllt jetzt (02.10.06) -> 67
>>> Feld (Uebermittlung) Anzahl gefüllt vorher (01.10.06) -> 87, Feld
>>> (Uebermittlung) Anzahl gefüllt jetzt (02.10.06) -> 87
>>>
>> Du möchtest also eine Historie der Tabelle mitführen? Gibt die
>> Tabellenstruktur das her?
>
> Nein, das gibt sie nicht her. Das muss ich alles manuell auf meinem PC
> machen. Wie bereits gesagt: Ich kann die vorhandene Tabellestruktur
> nicht ändern oder ändern lassen.
>

Für mich ist hier EOT. Vielleicht hat jemand anders eine Idee, aber
aus vermurksten Ausgangsbedingungen lässt sich m.E. nicht mit
vertretbarem Aufwand etwas hübsches basteln.
Abgesehen davon: 200 Einträge sind doch ohnehin eher ein Fall für den
Karteikasten. Vielleicht lässt sich damit das Problem viel einfacher
lösen, indem Ihr auf die Karte das Änderungsdatum schreibt und sie
dann in einen anderen Kasten sortiert?

>>> Meine erste Idee war, jeden Tag eine Kopie der aktuellen DB auf meinem
>>> PC anzulegen und den Namen um das Datum zu ergänzen.
>> Oh my god.
>>
>>> Damit habe ich
>>> (hoffentlich) die Grundlage um überhaupt diese Deltas zu erzeugen.
>>> Aber wie zähle ich dann z. B. die mit Werten gefüllten Felder? Gut,
>>> mit count. Aber wie gruppiere ich das dann für mehrere Felder
>>> gleichzeitig?
>> mit GROUP
>
> Wie GROUPe ich denn auf mehrer Felder gleichzeitig? Nimm eine

GROUP feld1, feld2, feld3 ...

> Adressdatenbank mit 1000 Datensätzen drin. Jetzt möchte ich zählen
> in wievielen davon die Felder 'Tel', 'Fax' und 'Mail' gefüllt sind.

z.B. SUM(IF(Tel='',0,1)) etc.p.p.

Re: Aufgabe my SQL überhaupt lösbar?

am 02.10.2006 13:01:21 von Andreas Kretschmer

Andreas
--
q: why do so many people take an instant dislike to mysql?
a: it saves time (oicu in #postgresql)
Explaining the concept of referential integrity to a mysql user is like
explaining condoms to a catholic (Shadda in #postgresql)

Re: Aufgabe my SQL überhaupt lösbar?

am 02.10.2006 13:03:21 von Andreas Scherbaum

Hallo,

Richard Kaufmann wrote:
>
> Aufgabe 1:
> Ich muss von den 120 Feldern 25 Felder überwachen. Alles Varchar. Wenn
> sich in einem dieser Feldern etwas ändert, muss ich reagieren.
> 'Ändert' bedeutet in diesem Fall Text neu eingetragen, Text gelöscht
> oder Text geändert. Ich brauche eine Ausgabe in dem Format
> Datensatz-ID -> Feld vorher -> Feld hinterher. Diesen Vergleich muss
> ich täglich und in frei wählbaren Intervallen durchführen.

> [...]

> Aufgabe 2:
> Ich muss zählen und reporten, welche Felder (der überwachten) der DB
> mit Werten gefüllt sind und welche nicht. Auch hier muss ich das für
> jeden Tag bzw für ein frei wählbares Intervall tun.

> [...]

Eigentlich suchst du "CREATE TRIGGER", näheres z.B. unter:
http://dev.mysql.com/doc/refman/5.0/en/create-trigger.html


> Wie gesagt: die Hauptfrage ist 'Kann ich das mit SQL Statements
> innerhalb von MySQL lösen?' oder muss ich mir mit Perl oder PHP was
> basteln?

Ob innerhalb von Mysql? Kommt wohl stark auf deine Version von Mysql
an, mit den 5er Versionen sollte dies irgendwie machbar sein.

Da stellt sich mir jedoch die Frage, wieso die Leute immer auf so
komplizierte Umwege ausweichen wollen, sobald mal eine etwas
kompliziertere Datenbankaufgabe ansteht. Andere Datenbanken haben
fertige Lösungen für so etwas.


Bye

--
Andreas 'ads' Scherbaum
Failure is not an option. It comes bundled with your Microsoft product.
(Ferenc Mantfeld)

Re: Aufgabe my SQL überhaupt lösbar?

am 02.10.2006 13:20:27 von Andreas Kretschmer

Andreas
--
q: why do so many people take an instant dislike to mysql?
a: it saves time (oicu in #postgresql)
Explaining the concept of referential integrity to a mysql user is like
explaining condoms to a catholic (Shadda in #postgresql)

Re: Aufgabe my SQL überhaupt lösbar?

am 02.10.2006 13:27:41 von Andreas Scherbaum

Andreas Kretschmer wrote:
> begin Andreas Scherbaum wrote:
>> Da stellt sich mir jedoch die Frage, wieso die Leute immer auf so
>> komplizierte Umwege ausweichen wollen, sobald mal eine etwas
>> kompliziertere Datenbankaufgabe ansteht. Andere Datenbanken haben
>> fertige Lösungen für so etwas.
>
> Ähm, spielst Du auf 'tablelog' an? Das mußte auch erst mal wer
> schreiben. Warst Du das nicht sogar? *g*

Nicht unbedingt tablelog, obwohl diese Software unter PostgreSQL
exakt die gestellte Aufgabe (History) erfüllt. Nur für Mysql kenne
ich da nichts brauchbares, was innerhalb der DB (also ohne einen
großen Aufstand mit einer externen Applikation) funktioniert.
Ich lasse mich jedoch gern eines besseren belehren.

Mein ursprünglicher Gedanke war jedoch viel profaner: Wieso kompliziert
(also ausserhalb der DB), wenn es auch einfach geht? Warum sehe ich
derartige Auswüchse bevorzugt im Umfeld dieser Datenbank, sobald die
Bordmittel nicht mehr ausreichen?


Bye

--
Andreas 'ads' Scherbaum
Failure is not an option. It comes bundled with your Microsoft product.
(Ferenc Mantfeld)

Re: Aufgabe my SQL überhaupt lösbar?

am 02.10.2006 13:31:39 von Andreas Kretschmer

Andreas
--
q: why do so many people take an instant dislike to mysql?
a: it saves time (oicu in #postgresql)
Explaining the concept of referential integrity to a mysql user is like
explaining condoms to a catholic (Shadda in #postgresql)

Re: Aufgabe my SQL überhaupt lösbar?

am 02.10.2006 13:33:20 von Andreas Scherbaum

Andreas Kretschmer wrote:
> begin Andreas Scherbaum wrote:
>> Mein ursprünglicher Gedanke war jedoch viel profaner: Wieso kompliziert
>> (also ausserhalb der DB), wenn es auch einfach geht? Warum sehe ich
>> derartige Auswüchse bevorzugt im Umfeld dieser Datenbank, sobald die
>> Bordmittel nicht mehr ausreichen?
>
> IIRC gehen Trigger ja seit 5.x, oder? Damit sollte doch das Verhalten
> von tablelog auch unter MySQL abbildbar sein, oder? Es muß halt wohl nur
> jemand schreiben...

Ich nicht.

Stellt sich die Frage, ob der Rest der Funktionalität (ausser das Vorhanden-
sein von Triggern) auch gegeben ist.


Bye

--
Andreas 'ads' Scherbaum
Failure is not an option. It comes bundled with your Microsoft product.
(Ferenc Mantfeld)

Re: Aufgabe my SQL überhaupt lösbar?

am 02.10.2006 13:37:18 von Andreas Kretschmer

Andreas
--
q: why do so many people take an instant dislike to mysql?
a: it saves time (oicu in #postgresql)
Explaining the concept of referential integrity to a mysql user is like
explaining condoms to a catholic (Shadda in #postgresql)

Re: Aufgabe my SQL überhaupt lösbar?

am 02.10.2006 13:37:32 von Andreas Scherbaum

Richard Kaufmann wrote:
> Christian Kirsch schrieb:
>
>> 120 Felder in einer Tabelle machen mich misstrauisch.
>
> Es ist sowas ähnliches wie eine Adressdatenbank. Mit dutzenden von
> Ansprechpartnern und deren Aufgaben. An der DB können wir nichts
> ändern. Sie gehört einem externen Dienstleister.

Moment, ist das euer Dienstleister oder seid ihr der Dienstleister?
Also sorgt doch mal dafür, das euer Dienstleister seinem Namen gerecht
wird, was wir bisher gelesen haben, ist krank und zeugt nicht gerade von
einer professionellen Umsetzung.


>> Für sowas gibt's Trigger, zumindest ab MySQL 5
>
> Wie gesagt. Ich habe nur einen Lesezugriff auf die DB. Ich kann weder
> eine Programmänderung noch ein Update veranlassen. Ich muss die DB so
> nehmen wie sie ist. Nach dem Motto 'friß oder stirb'.

Siehe oben, wer bezahlt hier wen, wer darf also Aufgaben stellen und
wer nicht. Abgesehen davon: wenn ihr einen Dienstleister für diese
Aufgabe (Adressbuch) habt, wieso beauftragt ihr ihn nicht, auch dieses
Problem gleich innerhalb des Programmes oder der Datenbank zu lösen?

Wenn er das nicht kann, gibt es genügend andere, die die nötige
Qualifikation aufweisen.


>> Du möchtest also eine Historie der Tabelle mitführen? Gibt die
>> Tabellenstruktur das her?
>
> Nein, das gibt sie nicht her. Das muss ich alles manuell auf meinem PC
> machen. Wie bereits gesagt: Ich kann die vorhandene Tabellestruktur
> nicht ändern oder ändern lassen.

Wer hat dir eigentlich diese Aufgabe übertragen? Nur so rein interesse-
halber ...


Bye

--
Andreas 'ads' Scherbaum
Failure is not an option. It comes bundled with your Microsoft product.
(Ferenc Mantfeld)

Re: Aufgabe my SQL überhaupt lösbar?

am 02.10.2006 14:14:04 von Claus Reibenstein

Richard Kaufmann schrieb:

> Christian Kirsch schrieb:
>
>> 120 Felder in einer Tabelle machen mich misstrauisch.
>
> Es ist sowas ähnliches wie eine Adressdatenbank. Mit dutzenden von
> Ansprechpartnern und deren Aufgaben.

Aha. Und wenn nun eine Firma einen Ansprechpartner mehr benötigt, werden
einfach 10 weitere Spalten hinzugefügt, und Du darfst dann Dein Programm
wieder anpassen? Irgendwann sind es dann nicht mehr 120, sondern 1200
Spalten.

Tolles "Design".

> An der DB können wir nichts
> ändern. Sie gehört einem externen Dienstleister.

Dann solltet Ihr diesen mal kräftig auf den Pott setzen.

Dass man für so etwas zwei Tabellen benutzt, gehört zu den
Grundlagenkenntnissen jedes angehenden DB-Entwicklers. Euer
"Dienstleister" beherrscht offenbar nicht mal diese. Vermutlich weiß er
nicht mal, was das Wort "relational" bedeutet. Vermutlich hält er Excel
für eine Datenbank.

Gruß. Claus