Ankündigung

Einklappen
Keine Ankündigung bisher.

Datenbank Design für eine Buchungsseite ( Ferienwohnung vermieten)

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • #16
    Zitat von Arne Drews Beitrag anzeigen
    Aber das ist doch in aktuellen Versionen nicht mehr so... hatten wir das nicht schonmal?
    Nein, es ist nach wie vor so, daß ein "Überschuß" an Spalten in der Feldliste gegenüber der gruppierten oder (ausschließendes oder!) aggregierten Spalten von MySQL geduldet wird, und das ist auch gut so (vgl. meinen Beitrag #15 oben). "Gehabt" haben wir das allerdings schonmal, ja.

    Kommentar


    • #17
      Mit "richtig" oder "falsch" hat das aber überhaupt nichts zu tun - ich würde eher sagen: mit Bevormundung oder Unterlassung der selbigen.
      Wenn mir eine Datenbank, ohne dass ich explizit mit RAND() etc danach gefragt habe, willkürlich Ergebnisse liefert, dann ist sie für mich kaputt.

      Die Bevormundung liegt hier bei MySQL, weil ich einfach _irgendwas_ bekomme, was die DB gerade als "richtig" erachtet. Und so lange es kein richtig oder falsch gibt ist die Software entweder eine Fehlplanung, oder die Tests sind scheisse. Für mein Verständnis ist Software standardmäßig deterministisch.

      Deshalb => Postgres.
      [I]You know, my wife sometimes looks at me strangely. „Duncan“, she says, „there's more to life than Solaris“. Frankly, it's like she speaks another language. I mean, the words make sense individually, but put them together and it's complete nonsense.[/I]

      Kommentar


      • #18
        Zitat von marie123 Beitrag anzeigen
        Es bleibt dabei: MySQL ist zum Lernen besser geeignet als z.B. Postgre.
        Das ist deine Meinung dazu. Generell ist die Aussage falsch, da sich Mysql weniger an die offiziellen Standards hält als Postgres, oder DB2.
        Wenn man aber nichts andres kennt, fällt es schwer über den Tellerrand zu blicken.

        Kommentar


        • #19
          Zitat von marie123 Beitrag anzeigen

          Mit "richtig" oder "falsch" hat das aber überhaupt nichts zu tun - ich würde eher sagen: mit Bevormundung oder Unterlassung der selbigen.
          Sorry, aber das ist Unfug. Aber egal, für mich ist EOD.
          PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

          Kommentar


          • #20
            Zitat von protestix Beitrag anzeigen
            Das ist deine Meinung dazu. Generell ist die Aussage falsch, da sich Mysql weniger an die offiziellen Standards hält als Postgres, oder DB2.
            Wenn man aber nichts andres kennt, fällt es schwer über den Tellerrand zu blicken.
            Und wo ist dieser "offizielle Standard" dokumentiert?

            Im Übrigen bin ich mir gar nicht sicher, ob nicht Postgre auch gegen diesen "offiziellen Standard" verstößt. Kann bitte mal jemand in der DB, die er sich anhand des Dumps aus dem Thread https://www.php.de/forum/webentwickl...reach-schleife ,dort #15 erstellt hat, folgende Abfrage eingeben:
            Code:
            SELECT gebote.kunde, MAX(preiseingabe) AS max, angebote.Auktionsnummer, angebote.titel
            FROM gebote LEFT JOIN angebote ON gebote.angebot_id = angebote.Auktionsnummer
            WHERE timediff(now(), angebote.dauer) > 0 AND angebote.user = "King Ich"
            GROUP BY angebote.Auktionsnummer, angebote.titel
            Im übrigen, protestix wer sagt dir, daß ich "nichts anderes kenne"? Erwähnte ich nicht mehrfach, daß andere (Plural!) DBMS das nicht zulassen?! Zügle bitte deine (grundlose) Überheblichkeit.

            Kommentar


            • #21
              Zitat von marie123 Beitrag anzeigen
              Und wo ist dieser "offizielle Standard" dokumentiert?
              Andere aufklären wollen, aber selber nicht suchen können. Hier wird man drauf hingewiesen https://de.wikipedia.org/wiki/SQL#Sprachstandard

              Zitat von marie123 Beitrag anzeigen
              Im Übrigen bin ich mir gar nicht sicher, ob nicht Postgre auch gegen diesen "offiziellen Standard" verstößt.
              Nein tut es nicht. Kannst du gerne selber testen.

              Kommentar


              • #22
                Zitat von marie123 Beitrag anzeigen

                Und wo ist dieser "offizielle Standard" dokumentiert?

                Dafür gibt es ISO-Standards. https://de.wikipedia.org/wiki/SQL oder auch https://modern-sql.com/de/standard (Danke, Markus!)
                Und hier noch in Vergleich: https://www.2ndquadrant.com/en/postg...esql-vs-mysql/
                PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

                Kommentar


                • #23
                  Zitat von akretschmer Beitrag anzeigen


                  Dafür gibt es ISO-Standards. https://de.wikipedia.org/wiki/SQL oder auch https://modern-sql.com/de/standard (Danke, Markus!)
                  Und hier noch in Vergleich: https://www.2ndquadrant.com/en/postg...esql-vs-mysql/
                  Sorry, ich werde diese Diskussion mit Euch beiden nicht weiterführen, da Ihr an einer sachlichen Diskussion nicht interessiert seid: Ich hatte nicht gefragt, wo der offizielle SQL-Standard dokumentiert ist, sondern wo "dieser" Standard, also, daß die Feldliste nicht mehr oder weniger oder andere Spalten haben kann, als die Gesamtmenge der gruppierten bzw. aggregierten Spalten. Mir zu unterstellen, daß ich nicht weiß, daß der SQL-Standard dokumentiert ist, ist ebenso lachhaft wie unverfroren.

                  Ob es Euch gefällt oder nicht: Nein, Software ist nicht deterministisch (das war übrigens das Erste, was mir mein früherer Chef beigebracht hat), und ja, "richtig" und "falsch" sind relative Begriffe und etwas, was nicht einem Standard entspricht, ist nicht automatisch falsch, und nein, es ist nicht die Aufgabe von Software, Entwickler vor Fehlern durch "Verunmöglichung" zu bewahren, sondern allenfalls ihn zu warnen. Es bleibt dabei: Wir haben uns um ein Verständnis der Sachverhalte zu bemühen. Ein solches Bemühen kann ich bspw. in den Reaktionen auf meiner Erläuterungen in #15 und im anderen Thread nicht erkennen. Eine Beurteilung, ob das an Unvermögen liegt, steht mir nicht zu.

                  Kommentar


                  • #24
                    Geht das nun schon wieder los? Die letzten Monate habe ich nichts gesagt, weil es einigermassen gesittet ablief.
                    Aber nun geht das wieder von vorne los, wenn auch mit anderem Namen.

                    Bitte BTT oder Diskussion beenden.
                    Danke
                    Competence-Center -> Enjoy the Informatrix
                    PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

                    Kommentar


                    • #25
                      Zitat von Arne Drews Beitrag anzeigen
                      Aber das ist doch in aktuellen Versionen nicht mehr so... hatten wir das nicht schonmal?
                      Was sind aktuelle Versionen? 4 bis 8?

                      Es gibt seit Jahren einen Schalter, mit dem man das Verhalt so einstellen kann, dass ein Fehler by unzureichender Group By Angabe produziert wird, so wie bei allen anderen Systemen. Das wurde mindestens von mir schon mehrfach gennant.

                      weitere Fehler: Gibt es in jedem RDBMS.

                      Kommentar


                      • #26
                        ACK.

                        Kann MySQL einklich mittlerweile Check-Constraints? Frag für einen Freund
                        PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

                        Kommentar


                        • #27
                          Kann man Post #16 durchstreichen oder entfernen?

                          Deterministische Software:
                          Ich hoffe, die Datenbank, mit der mein Konto verwaltet wird, verhält sich deterministisch. Aber vielleicht entsteht ja mal ein Fehler zu meinen Gunsten!

                          Wenn sich Software nicht deterministisch verhält, gibt es 3 Möglichkeiten:
                          - es ist KI Software, Fuzzy Algorithmen o.ä.
                          - es ist fehlerhafte Software
                          - es ist komplexe Software und der Betrachter begreift mit seiner eigenen, unzureichende Auffassungsgabe nicht die Varianz der Ergebnisse

                          Kommentar


                          • #28
                            Zitat von Perry Staltic Beitrag anzeigen
                            Es gibt seit Jahren einen Schalter, mit dem man das Verhalt so einstellen kann, dass ein Fehler by unzureichender Group By Angabe produziert wird, so wie bei allen anderen Systemen. Das wurde mindestens von mir schon mehrfach gennant.
                            Richtig, das wars. Aber ist das nicht mittlerweile per default "richtig" konfiguriert?

                            Competence-Center -> Enjoy the Informatrix
                            PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

                            Kommentar


                            • #29
                              Zitat von Arne Drews Beitrag anzeigen
                              Richtig, das wars. Aber ist das nicht mittlerweile per default "richtig" konfiguriert?
                              Also mein MySQL führt die Abfrage
                              Code:
                              SELECT gebote.kunde, MAX(preiseingabe) AS max, angebote.Auktionsnummer, angebote.titel
                              FROM gebote LEFT JOIN angebote ON gebote.angebot_id = angebote.Auktionsnummer
                              WHERE timediff(now(), angebote.dauer) > 0 AND angebote.user = "King Ich"
                              GROUP BY angebote.Auktionsnummer, angebote.titel
                              in dieser Datenbank (ist aus dem anderen Thread, wo genau das das Problem war) aus:
                              Code:
                              -- phpMyAdmin SQL Dump
                              -- version 4.8.5
                              -- https://www.phpmyadmin.net/
                              --
                              -- Host: 127.0.0.1
                              -- Erstellungszeit: 13. Nov 2019 um 22:01
                              -- Server-Version: 10.1.38-MariaDB
                              -- PHP-Version: 7.3.2
                              
                              SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
                              SET AUTOCOMMIT = 0;
                              START TRANSACTION;
                              SET time_zone = "+00:00";
                              
                              
                              /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
                              /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
                              /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
                              /*!40101 SET NAMES utf8mb4 */;
                              
                              --
                              -- Datenbank: `auktion_db`
                              --
                              
                              -- --------------------------------------------------------
                              
                              --
                              -- Tabellenstruktur für Tabelle `angebote`
                              --
                              
                              CREATE TABLE `angebote` (
                                `Auktionsnummer` int(11) NOT NULL,
                                `titel` text COLLATE utf8_bin NOT NULL,
                                `user` text COLLATE utf8_bin NOT NULL,
                                `beschreibung` text COLLATE utf8_bin NOT NULL,
                                `kategorie` text COLLATE utf8_bin NOT NULL,
                                `plz` text COLLATE utf8_bin NOT NULL,
                                `ort` text COLLATE utf8_bin NOT NULL,
                                `zustand` text COLLATE utf8_bin NOT NULL,
                                `art` text COLLATE utf8_bin NOT NULL,
                                `startpreis` decimal(18,2) NOT NULL,
                                `dauer` datetime NOT NULL,
                                `top` text COLLATE utf8_bin,
                                `datum` datetime NOT NULL,
                                `bezahlt` text COLLATE utf8_bin NOT NULL,
                                `aktiv` text COLLATE utf8_bin NOT NULL,
                                `edit` text COLLATE utf8_bin NOT NULL
                              ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
                              
                              --
                              -- Daten für Tabelle `angebote`
                              --
                              
                              INSERT INTO `angebote` (`Auktionsnummer`, `titel`, `user`, `beschreibung`, `kategorie`, `plz`, `ort`, `zustand`, `art`, `startpreis`, `dauer`, `top`, `datum`, `bezahlt`, `aktiv`, `edit`) VALUES
                              (30, 'HP Drucker an Bastler', 'King Ich', 'Biete hier meinen gebrauchten Drucker von HP an, der zwar Druckgeräusche von sich gibt, aber ein leeres Blatt \'ausspuckt..\r\nWahrscheinlich ist der Druckkopf getrocknet. (?)', 'Computer', '22159', 'Wandsbek - Hamburg Farmsen-Berne', 'Gebraucht', 'Privat', '0.00', '2019-10-28 16:00:00', 'false', '2019-10-24 21:45:29', 'false', 'true', 'editiert'),
                              (31, 'Nokia 1 mit OVP / gebraucht', 'King Ich', 'Gebrauchtes Smartphone von Nokia.\r\n\r\nIch biete es hier für 30,- an.\r\n\r\nBei fragen einfach anschreiben..', 'Telefon', '22159', 'Hamburg', 'Gebraucht', 'Privat', '30.00', '2019-11-11 18:50:10', 'false', '2019-11-01 19:02:34', 'false', 'true', 'false'),
                              (32, 'Klappgarderobe & Klebebefestigungsset', 'King Ich', 'Verkaufe ein neues Klappgarderoben Set, aus hochwertigem Edelstahl.', 'Wohnen', '22159', 'Hamburg', 'NEU', 'Privat', '0.00', '2019-11-11 21:27:39', 'top', '2019-11-01 21:33:30', 'false', 'true', 'false'),
                              (33, 'Vander Life Tastatur', 'King Ich', 'Verkaufe eine Tastatur mit US Tastenbelegung.\r\nBezeichnung: KB-3181 Wired \r\nkeyboard.', 'Computer', '22159', 'Hamburg', 'NEU', 'Privat', '0.00', '2019-11-11 21:54:21', 'top', '2019-11-01 21:58:13', 'false', 'true', 'false'),
                              (35, 'Office PC I5-6400 4x 2.7GHz Windows 7 professional', 'King Ich', 'Biete hier ein Office PC mit\r\n-CPU : I5-6400\r\n-Asus H110 - Plus Mainboard \r\n-8 GB DDR Arbeitsspeicher \r\n-250 GB Festplatte \r\n-500 Watt Netzteil ', 'Computer', '22159', 'Hamburg', 'Gebraucht', 'Privat', '180.00', '2019-11-07 20:59:58', 'top', '2019-11-08 21:06:21', 'false', 'true', 'false');
                              
                              -- --------------------------------------------------------
                              
                              --
                              -- Tabellenstruktur für Tabelle `gebote`
                              --
                              
                              CREATE TABLE `gebote` (
                                `id` int(11) NOT NULL,
                                `kunde` text COLLATE utf8_bin NOT NULL,
                                `angebot_id` text COLLATE utf8_bin NOT NULL,
                                `preiseingabe` decimal(10,2) DEFAULT NULL,
                                `timestamp` varchar(30) COLLATE utf8_bin DEFAULT NULL
                              ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
                              
                              --
                              -- Daten für Tabelle `gebote`
                              --
                              
                              INSERT INTO `gebote` (`id`, `kunde`, `angebot_id`, `preiseingabe`, `timestamp`) VALUES
                              (25, 'Maxi', '30', '1.00', '1571946761'),
                              (26, 'King Ich', '30', '1.00', '1571946924'),
                              (27, '123', '30', '1.00', '1572275442'),
                              (28, 'Maxi', '35', '181.00', '1573243707'),
                              (29, 'King Ich', '35', '182.00', '1573244905');
                              
                              --
                              -- Indizes der exportierten Tabellen
                              --
                              
                              --
                              -- Indizes für die Tabelle `angebote`
                              --
                              ALTER TABLE `angebote`
                                ADD PRIMARY KEY (`Auktionsnummer`);
                              
                              --
                              -- Indizes für die Tabelle `gebote`
                              --
                              ALTER TABLE `gebote`
                                ADD PRIMARY KEY (`id`);
                              COMMIT;
                              
                              /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
                              /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
                              /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
                              Nach der Auffassung, daß solche Abfragen nicht ausgeführt werden dürfen (nach SQL-Standards), müsste MySQL die verweigern. Tut es aber nicht. Also habe ich den "Schalter" wohl noch nicht gefunden. Wo ist der denn?

                              Kommentar


                              • #30
                                SQL-92 and earlier does not permit queries for which the select list, HAVING condition, or ORDER BY list refer to nonaggregated columns that are not named in the GROUP BY clause. For example, this query is illegal in standard SQL-92 because the nonaggregated name column in the select list does not appear in the GROUP BY:
                                Code:
                                SELECT o.custid, c.name, MAX(o.payment)
                                FROM orders AS o, customers AS c
                                WHERE o.custid = c.custid
                                GROUP BY o.custid;
                                SQL:1999 and later permits such nonaggregates per optional feature T301 if they are functionally dependent on GROUP BY columns: If such a relationship exists between name and custid, the query is legal. This would be the case, for example, were custid a primary key of customers.
                                https://dev.mysql.com/doc/refman/5.7...-handling.html

                                https://dev.mysql.com/doc/refman/5.7..._full_group_by

                                Hoffe das beantwortet deine Fragen marie123
                                sorry, shift-taste kaputt

                                Kommentar

                                Lädt...
                                X