
dr.dimitri
Mitglieder-
Gesamte Inhalte
1276 -
Benutzer seit
-
Letzter Besuch
Inhaltstyp
Profile
Forum
Downloads
Kalender
Blogs
Shop
Alle Inhalte von dr.dimitri
-
Vernünftige Sortierung, trotz Group By Statement
dr.dimitri antwortete auf Metaller's Thema in Datenbanken
Hi, so eine Ausgabe würde ich in zwei Schritten realisieren. Zum einen die betreffenden Bandnamen sotiert selektieren und anschließend pro Bandname die zugehörigen Alben ebenfalls sortiert selektieren. D.h. du hast zwei Schleifen: Eine äußere über die Bandnamen und die innere über die zugehörigen Alben. Dim -
Vernünftige Sortierung, trotz Group By Statement
dr.dimitri antwortete auf Metaller's Thema in Datenbanken
Dein SQL liefert sicherlich nicht die Ausgabe, die Du gepostet hast. Du selektierts eine ID und Edition_ID postest aber mit Semikolon getrennte Bandnamen? Aber wenn man sich das oft genug durchließt, kommt man irgendwie drauf, was Du haben möchtest und was du momentan machst. Du möchtest nicht nur Sortieren, sondern auch Pivotieren (und nicht gruppieren) und zwar innerhalb einer Sammlung alle Alben in einer Zeile alphabetisch. Ich weiß nicht, ob das in mysql per Befehl möglich ist, dazu kenne ich die DB zu wenig. Dim -
Vernünftige Sortierung, trotz Group By Statement
dr.dimitri antwortete auf Metaller's Thema in Datenbanken
Was genau passt dann nicht? Wie soll die Sortierung aussehen (Beispiel) und wie sieht das SQL momentan aus? -
Vernünftige Sortierung, trotz Group By Statement
dr.dimitri antwortete auf Metaller's Thema in Datenbanken
Hi, typisch mysql. Die GROUP BY Klausel ist falsch, mysql meldet das aber nicht. Jedes Feld, dass im SELECT nicht in einer Aggregatsfunktion (COUNT,MAX,MIN,SUM etc)hinterlegt wird, muss in die GROUP BY Klausel. Jede andere DB würde dein Statement nicht ausführen. Dim -
Informationen aus Prozeduren für ein Trigger bereitstellen
dr.dimitri antwortete auf Silizium185's Thema in Datenbanken
Vermutlich so etwas ähnliches wie DBMS_PIPE in Oracle. Aber da ist mir der Unique Constraint doch lieber -
Informationen aus Prozeduren für ein Trigger bereitstellen
dr.dimitri antwortete auf Silizium185's Thema in Datenbanken
Mir ging es hier insbesondere um Multiuserzugriffe. Sprich Session A fügt die Zahl 100 ein, hat aber noch nicht comittet, Session B prüft, ob die Zahl 100 schon vorhanden ist und bekommt eine leere Menge zurück, fügt sie also auch ein. Nachdem beide Sessions comittet haben steht zweimal die Zahl 100 drinnen. Daher der "Lösungsansatz" mit dem exklusiven Sperren der Tabelle, dann kann nur eine Session in der Tabelle ändern, die anderen müssen warten. Ist natürlich nicht praktikabel aber zumindest eine (rein) theoretische Lösung. Dim -
Informationen aus Prozeduren für ein Trigger bereitstellen
dr.dimitri antwortete auf Silizium185's Thema in Datenbanken
Vgl: Der Trigger soll gucken, ob der Integerwert den die Prozedur übergeben bekommen hat, bereits vorhanden ist. Wo ist da eine Teilmenge? Und nachsehen, ob eine Zahl schon vorhanden ist, hört sich ganz verdächtig nach "Eindeutigkeit" an. Des weiteren sieht ein Trigger keine offenen Transaktionen und kann daher nicht prüfen, ob die Zahl wirklich nicht schon eingefügt wurde, aber der Commit noch nicht durch ist. Verwendet man einen Dirty read (ist per Definition aber schon ein Bug in jeder DB Anwendung und daher auch nicht in allen Datenbanken verfügbar), dann kann man nicht sicher sein, ob die Zahl vielleicht nicht per Rollback wieder verschwindet und man aber einen schon vorhandenen Wert ermittelt hat, der jetzt aber nicht mehr da ist. Die einzigen, sauberen (=fehlerfreien) Möglichkeiten sind: * Serialisieren des Zugriffs, sprich exclusives sperren der Tabelle, dann in der Prozedur per SQL nachsehen, ob der Wert schon vorhanden ist. Warum hier überhaupt ein Trigger verwendet werden soll ist mir eh nicht klar, ebensowenig, ob man den Zugriff serialisieren möchte. Vermutlich eher nicht * Verwenden eines Unique Constraints und die DB ihren Job machen lassen. Andere "Methoden" führen, auch bei Teilmengen, dazu, dass der Datenstand bei bestimmten Konstellationen fachlich inkonsistent werden kann und vermutlich auch wird. Dim -
Informationen aus Prozeduren für ein Trigger bereitstellen
dr.dimitri antwortete auf Silizium185's Thema in Datenbanken
Hi, leg einen Unique Constraint auf die Spalte und die DB erledigt das für dich. Das in einem Trigger zu erledigen ist ein klarer Bug im Anwendungsdesign und kann doppelten Einträgen führen. Den Fehler, den die DB bei einem doppelten Wert erzeugt kannst Du dann in der Prozedur abfangen. Dim -
UTF-8 kodierte Datei nach Oracle laden
dr.dimitri antwortete auf dschingis1980's Thema in Datenbanken
Hi, ist auch die Ländereinstellung auf dem Client korrekt gesetzt? Also NLS_LANG=German_Germany.AL32UTF8 Dim -
Speicherplatzgewinnung durch Komprimierung berechnen
dr.dimitri antwortete auf Stefan87's Thema in Datenbanken
Da nur Oracle weiß, wieviele Duplikate es auf einem Block gibt, wirst Du dieses Package verwenden müssen. Bei kleinen Tabellen bringt das eh nicht viel, und bei großen gibt mit dem Package kein Problem. Dim -
Speicherplatzgewinnung durch Komprimierung berechnen
dr.dimitri antwortete auf Stefan87's Thema in Datenbanken
Hi, was hat sich seit damals geändert? http://www.fachinformatiker.de/datenbanken/152977-dbms_compression-get_compression_ratio.html Dim -
Hi, ich kann nur sagen, dass es aus meiner Sicht mehrere Punkte gibt: (1) Etwas Glück. Man muss zur richtigen Zeit am richtigen Ort mit den richtigen Chefs sein. (2) Positiv Auffallen. Wer in der Masse untergeht, nur Anweisungen umsetzt und brav seinen Job macht, wird nichts riskieren aber auch nicht viel gewinnen. (3) Eigeninitiative. Wenn man etwas verbessern kann, dann soll man es auch tun. Absprechen, klären, umsetzen. Nicht drauf warten, dass es ein anderer macht. Siehe auch den vorhergehenden Punkt. (4) Verantwortung übernehmen. Wenn man für eine bestimmte Anwendung bzw. Anwendungsteil ein kompetenter Ansprechpartner ist, werden auch die Punkte 2 und 3 leichter. (5) Besser sein als die anderen. Such dir ein bestimmtes Gebiert, dass sich interessiert und idealerweise mit (4) zusammenhängt und werde darin besser als andere - wirklich besser, nicht nur schlau reden. Der 10. Java Entwickler im Team ist schön und gut, aber der Kollege, der sich perfekt mit security, Datenbanken etc. auskennt wird sich auch mit Punkt (2) leichter tun. (6) Eigeninitiative und Verlässlichkeit. Die richtige Mischung aus Teamfähigkeit und Eigeninitiative ist Gold wert. Jeder Chef, der bereit ist gute Leistung entsprechend zu honorieren, ist um jeden Mitarbeiter froh, den man nicht alles vorkauen muss, sondern der macht und zwar so, dass es passt. Wenn das alles nichts hilft, muss man über geeignete Maßnahmen dem Punkt (1) etwas auf die Sprünge helfen. Dim
-
:upps Recht viel eindeutiger kann eine Meldung aber nicht sein oder? Die Ersparniss bei 109 Zeilen kann ich dir auch so sagen: Nix. Weißt Du denn, wie die Kompression in Oracle funktioniert? OLTP Compression ist übrigens lizenzpflichtig falls Du die verwenden möchtest. Dim
-
Was kannst Du denn? Mal von handwerklichen Dingen und Verkäufertätigkeiten abgesehen? Dim
-
Richtig. Wenn Du keinen Zieltablespace angiebst, wird Tabelle innerhalb des momentanen Tablesapce verschoben und evtl. freier Platz in diesem Zuge wieder freigegeben. Dim
-
Hi, vermutlich liegt die Tabelle auf einem Tablespace mit manuellem Spacemanagement (=mittelalterlich). alter table xyz move sollte funktionieren. Dim PS: analyze sollte nicht mehr verwendet werden. Als Ersatz gibt es das DBMS_STATS Packages
-
Von der Normalisierung abgesehen fällt sofort auf, dass die Tabellen Kunde und Bücher (man sollte sich durchgängig für Singular oder Plural entscheiden) einen fachlichen Wert als PrimaryKey verwenden. das mag vielleicht theoretisch ok sein, in der Praxis ist das häufig eine fatale Fehlentscheidung, da sich fachliche Werte im Laufe der Zeit auch ändern können. Daher niemals einen fachlichen Wert als PK verwenden.
-
[FI/SI] Projektarbeit Datenbank: Welche Programme sind dazu geeignet?
dr.dimitri antwortete auf Stoffl92's Thema in Datenbanken
Schon klar, aber bisher nimmt man anscheinen noch gar nichts Zumindest steht davon nichts im Projektantrag. -
[FI/SI] Projektarbeit Datenbank: Welche Programme sind dazu geeignet?
dr.dimitri antwortete auf Stoffl92's Thema in Datenbanken
Hi, vielleicht per Oracle Application Express und einer Oracle XE Datenbank. Oracle Database Express Edition 11g Release 2 und Oracle Application Express Damit kannst Du dir die Oberfläche relativ einfach erstellen, fachliche Logik wird dann als PL/SQL in der Datenbank abgelegt. Mit welchen Programmiersprachen hast Du denn schon intensiver gearbeitet? Dim -
Die Emailadresse hat damit gar nichts zu tun. Die DB Software die du runtergeladen hast, ist 1:1 die, die Du auch bekommst, wenn Du sie kaufst. Die Standarduser sind system und sys. Mit denen kannst Du dich via sqldeveloper anmelden und mittels create user (vgl. auch die Oracle Doku) dann deine benötigten User anlegen.
-
Was genau hast Du denn gemacht, nachdem Du die Software runtergeladen hast?
-
otn.oracle.com Lediglich eine Registrierung ist nötig. Dim
-
Was sind Views, Stored Procedures und Trigger
dr.dimitri antwortete auf lospitas's Thema in Datenbanken
Eine VIEW ist nur eine weitere Abstraktion einer Abfrage. Da läuft nichts schneller, es wird nur Komplexität verborgen. Das ist auch der erste Punkt warum man eine View verwendet. Der zweite Punkt wären Berechtigungen. Ich stelle eine View zur Verfügung, die nur bestimmte Daten selektiert. Anschließend vergebe ich die Berechtigungen, damit ein bestimmter Benutzerkreis diese View lesen darf. Ein dreitter Punkt wäre, dass Programme hin und wieder eine Tabelle benötigen um daraus zu lesen. Habe ich keine Tabelle in der geeigneten Form, kann ich dem Programm evtl. auch eine VIEW unterjubel, die sich nach außen hin wie eine echte Tabelle verhält (solange ich dort nichts ändern möchte). Mit Geschwindigkeit hat eine VIEW rein gar nichts zu tun. Sie ist nicht schneller oder langsamer, als wenn ich das zugrundeliegende SQL direkt ausführen würde. -
Also wenn es um Oracle geht, kann ichja auch mal meinen Senf dazu geben 1. Die Uraltaussagen, dass Dokumente in der Datenbank die Performance verschlechtern ist, was Oracle betrifft, schlicht und ergreifend falsch. Oracle speichert BLOB bzw. CLOB Daten nicht in der Tabelle selbst (bzw. maximal 4000 Byte) sondern legt dort nur einen sog. LOB Locator ab. Dieser ist ein Zeiger, der dann auf die ausgelagerten Daten verweißt. Ab Oracle 11 gibt es sog. Secure Files, die den BLOB Datentyp ersetzen und einen Zugriff auf die Daten ermöglichen, der praktisch genauso schnell ist, als wenn das Dokument direkt auf der Platte liegt. 2. Der Vorschlag in der DB einen Link zu speichern ist mindestens genaus falsch, denn damit kaufst Du dir direkt folgende Probleme ein: * Keine Transaktionssicherheit * Kein einheitliches Backup/Recovery, du musst immer auch das Filesystem mitsichern und mit der DB im Rücksicherungsfall konsistent halten. * Kein indizierter Zugriff auf die Daten. Oracle indiziert LOBs, und ermöglicht so einen sehr schnellen Zugriff auf z.B. das 1000000 Millionste Byte eines 3GB Dokumentes * Volltextindizierung der Dokumente durch Oracle Text ist nicht möglich * Die weiteren, schon von streffin genannten Punkte Es gibt einige Besonderheiten, die man im Umgang mit BLOBs/SecureFiles wissen muss. Um das Lesen der Doku kommst Du also nicht herum. Warum baust Du deine Testversion nicht gleich mit Oracle? Du kannst die verwendete Version herunterladen bzw. die Oracle Express verwenden. Dim
-
VALUES wird nur verwendet, wenn Du einzelne Werte einfügst. Ansonsten lautet die Syntax: INSERT INTO tabelle (col1,col2,col3,...) select colX,colY,colZ,... FROM... Evtl. mag mysql die Klammern im SELECT Statement nicht. Des weiteren wäre es sehr nützlich, wenn Du die Aussage "es geht nicht" mit einer aussagekräftigen Fehlermeldung anreicherst, und ggf. dein Statement mal direkt viy phpmyadmin o.ä. auf der Datenbank testest Dim