Archivo Explosivo month: Januar - 2017

Robo – Modern Taskrunner for PHP

Eine PHP-Variante von Gulp und Grunt für PHP:

Robo is a task runner you always have been looking for. It allows you to write fully customizable tasks in common OOP PHP style. Robo has comprehensive list of built-in common tasks for development, testing, and deployment.

robo.li

FIAE – Datenbanken & SQL – Diverse SQL Befehle

Definitionen
– DB – Database
– DBS – Data Base System
– DBMS – Datenbankmanagementsystem
– DBS = DB + DBMS
– Systematische Beschreibung, Speicherung und Wiedergewinnung von Datenmengen
– DB – Database/Datenbank – enthält mehrere Tabellen
– Tabelle ist die logische Zusammenfassung von Datensätzen
– Datensatz: Zusammenfassung logischer Attribute
– Attribut – Zelleninhalt – kleinste Logische Einheit
– Zeichen: Kleinste speicherbare Einheit
– …

Probleme der Datenhaltung
– Datenredundanz
– Dateninkonsistenz
– Effiziens
– Datenschutz
– Datensicherheit

Drei-Ebenen-Konzept
Externe Ebene -> Konzeptionelle Ebene -> Interne Ebene

  • Konzeptionelle Ebene: Datenmodell aus der realen Welt
    • Logische Gesamtsicht auf die Datenbank
    • Festlegung der Datenoperationen
    • Beschreibung der Beziehungen (Integritätsbedingungen)
  • Interne Ebene
    • Physische Speicherung
    • DBMS
    • Speicherlogik
    • Zugriff über konzeptionelle Ebene
    • Endanwenderzugriff über externe Ebene
  • Externe Ebene
    • Anwenderebene
    • Zugriff auf DBS mit
      • Abfragesprache (DQL – Data Query Language)
      • Datenmanipulationssprache (DML – Data Manipulation Language)
      • Anwendung

Datenbanksysteme
– Dateisysteme
– Prärelationale Datenbanken
– Relationale Datenbanken
– Postrelationale Datenbanken
– Objektorientierte Datenbanken
– Mehrdimensionale Datenbanken
– Verteilte Datenbanken
– Zeitorientierte Datenbanken
– …

Vorteile Relationaler Datenbanken
– Redundanzfreie Speicherung
– Integrierte Kontrolle auch bei verteilten Systemen
– Multiuserbetrieb
– Hohe Performance
– Datenkapselung (Veränderung der Attribute durch Methode des Objekts)
– Methoden sind Bestandteile der Objekte (Klassen)
– Nachrichtenkommunikation (Objekte rufen sich gegenseitig auf)
– Referentielle Integrität
– …

Probleme bei Redundanzen
– Update Anomalies
– Insertion Anomalies
– Deletion Anomalies
– …

Grundsätze der Modellierung
– Keine Redundanzen
– Eindeutigkeit
– Keine Prozessdaten
Datenmodelle vermeiden Komplexität

Modelle
– Hierarchisches Modell: Jedes Datenobjekt hat genau einen Vorgänger (Bis auf die oberste Ebene)
– Netzwerkorientiertes Modell: Jedes Datenobjekt hat mindestens einen Vorgänger (Bis auf die oberste Ebene)
– Relationales Modell:
– Anordnung in zweidimensionalen Tabellen
– Jede Tabelle besitzt einen eindeutigen Relationsnamen
– Alle Zeilen einer Tabelle heißen Relation
– Jede einzelne Zeile heißt Tupel (Datensatz)
– Jede einzelne Zeile wird auch als Entität bezeichnet
– Spaltennamen sind die Attributnamen
– Alle Attributsnamen heißen Relationsschema
– …

Schlüsselarten
– Natürlicher Schlüssel
– Künstlicher Schlüssel (artificial)
– Primärschlüssel
– Fremdschlüssel
– Superschlüssel
– …

ERM – Entity Relationship Model
– Entität: Gegebene Größe, Objekt
– Rechteck/Quadrat: Entity-Typ
– Kreis: Attribut
– Raute: Beziehungstyp

Relationen
– 1:1 (one to one)
– 1:n (one to many)
– n:m (many to many)
– 1:1:1 (tripplet)

Relations Notation
– Chen Er-Notation (1976)
– Oracle Notation (Krähenfußdiagramm)
– …

-- Mehrzeilige Kommentare
/* Datenbanken anzeigen */

-- Einzeilige Kommentare
#Datenbanken anzeigen

-- Neue Datenbank erstellen:
CREATE DATABASE DATENBANKNAME;

-- Verfügbare Speicher-Engines anzeigen lassen
SHOW ENGINES;

-- Alle Datenbanken anzeigen
show databases;

-- Datenbank löschen
DROP DATABASE DATENBANKNAME;

-- Aktive Datenbank festlegen   
-- use DATENBANKNAME;

-- Tabelle erstellen
CREATE TABLE TABELLENNAME (...);

-- Tabelle erstellen mit mehreren Spalten
CREATE TABLE TABELLENNAME(SPALTE1 varchar(100), SPALTE2 varchar(100), SPALTE3 date, ...);

-- Tabellen in aktueller Datenbank anzeigen
SHOW TABLES;

-- Tabellenspalten anzeigen
SHOW COLUMNS FROM TABELLENNAME;

-- Tabelle löschen
DROP TABLE TABELLENNAME;

-- Daten in Tabelle einfügen
INSERT INTO TABELLENNAME(SPALTE1, SPALTE2, SPALTE3, ...) VALUES (WERT1, WERT2, WERT3, ...);
INSERT INTO TABELLE1 SET SPALTE = WERT, SPALTE2 = WERT2, ...;

-- Kompletten Inhalt der Tabelle anzeigen
SELECT * FROM TABELLENNAME;

-- Nur bestimmte Spalten anzeigen
SELECT SPALTE1, SPALTE2, SPALTE3 FROM TABELLENNAME;

-- Doppelte Zeilen zusammenfassen
SELECT DISTINCT * FROM TABELLENNAME;

-- Alle Datensätze anzeigen
SELECT ALL * FROM TABELLENNAME;

-- Nur bestimmte Zeilen anzeigen mit WHERE-Bedingungen
SELECT * FROM TABELLENNAME WHERE SPALTE1 = WERT1;

-- Auswahl von Zeilen mit LIKE-Bedingung
SELECT * FROM TABELLENNAME WHERE SPALTE1 LIKE "WERT1%";
-- % ist ein Platzhalter für beliebige Zeichen die vorkommen können
-- _ ist ein Platzhalter für genau 1 Zeichen

-- Alle Zeilen die ein Zeichen gefolgt von einem n haben und kein n am Ende des Feldes
SELECT * FROM TABELLENNAME WHERE SPALTE1 LIKE "%_n%" AND SPALTE1 NOT LIKE "%n";

-- Alle Zeilen die ein on oder ein an enthalten und am ende kein n haben
SELECT * FROM TABELLENNAME WHERE (SPALTE1 LIKE "%on%" OR SPALTE1 Like "%an%") AND SPALTE1 NOT LIKE "%n";

-- Einschränkung der Datensätze mit BETWEEN
SELECT * FROM TABELLENNAME WHERE SPALTE1 BETWEEN 1 AND 3;

-- Einschränkung der Datensätze mit IN
SELECT * FROM TABELLENNAME WHERE SPALTE1 IN("1981-06-24","1965-05-12","1992-07-24","1904-01-13");

-- Funktion zum Zählen von Werten
SELECT COUNT(SPALTE1) FROM TABELLENNAME;

-- Datensätze gruppieren
SELECT COUNT(*),SPALTE1 FROM TABELLENNAME GROUP BY SPALTE1;

-- Sortierung von Datensätzen für die Ausgabe
SELECT * FROM TABELLENNAME ORDER BY SPALTE1;

-- absteigend sortieren
SELECT * FROM TABELLENNAME ORDER BY SPALTE1 DESC;

-- aufsteigend sortieren
SELECT * FROM TABELLENNAME ORDER BY SPALTE1 ASC;

-- Mehrere Spalten sortieren
SELECT * FROM TABELLENNAME ORDER BY SPALTE1, SPALTE2, SPALTE3 ASC;

-- Sonderfall sortieren eines Enum-Feldes (Auflistungsfeld)
SELECT * FROM TABELLENNAME ORDER BY FIELD(SPALTE1, 'Wert1','Wert2','Wert3'), Spalte2 ASC;

-- Oder:
SELECT * FROM TABELLENNAME ORDER BY CONCAT(SPALTE1),SPALTE2;

-- Nicht alle Datensätze auf einmal anzeigen mit Limit
SELECT * FROM TABELLENNAME Limit 10;

-- Anfang des Limits festlegen
SELECT * FROM TABELLENNAME Limit 5;
SELECT * FROM TABELLENNAME Limit 0,5;
SELECT * FROM TABELLENNAME Limit 5,5;
SELECT * FROM TABELLENNAME Limit 10,5;
SELECT * FROM TABELLENNAME Limit 15,5;

- Umbenennen von Tabellenspalten bei der Ausgabe
SELECT SPALTE1ALT AS SPALTE1NEU FROM TABELLENNAME;

-- Funktionen in MySQL
-- zählen
COUNT(*);
-- MaximalWert
MAX(SPALTE1);
-- MinimalWert
MIN(SPALTE1);
-- Durchschnitt
AVG(SPALTE1);

-- Nur das Jahr anzeigen
SELECT DAY(SPALTE1) AS Tag, MONTH(SPALTE1) AS Monat, YEAR(SPALTE1) AS SPALTE1NEU FROM TABELLENNAME;

-- Datum formatieren
SELECT Name, DATE_FORMAT(SPALTE1,"%d.%m.%Y") AS datum FROM TABELLE WHERE SPALTE1 IS NOT NULL;

-- Einfache Abfragen über mehrere Tabellen
-- Wenn Spaltennamen bei mehreren Tabellen gleich sind schreibt man den Tabellennamen und einen Punkt davor

SELECT * FROM TABELLE1, TABELLE2;
SELECT * FROM TABELLE1, TABELLE2 WHERE BEDINGUNG1 = ERFÜLLUNG1 AND BEDINGUNG2 = ERFÜLLUNG2;

-- JOINS
-- INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL OUTER JOIN, NATURAL JOIN, CROSS JOIN, LEFT OUTER JOIN, RIGHT OUTER JOIN, 
-- Classic Join
SELECT * FROM TABELLE1, TABELLE2 WHERE BEDINGUNG1 = ERFÜLLUNG1;
SELECT * FROM TABELLE1, TABELLE2, TABELLE3 WHERE TABELLE1.SPALTE1 = TABELLE2.SPALTE2 AND TABELLE1.SPALTE1 = TABELLE3.SPALTE3;

-- Inner Join
SELECT * FROM TABELLE1 INNER JOIN TABELLE2 ON TABELLE1.SPALTE1 = TABELLE2.SPALTE2;

-- LEFT JOIN
SELECT * FROM TABELLE1 LEFT JOIN TABELLE2 ON TABELLE1.SPALTE1 = TABELLE2.SPALTE2;

 -- Löschen von Datensätzen
 -- Achtung kein Undo möglich
 DELETE FROM TABELLE WHERE BEDINGUNG = ERFÜLLUNG;

-- Zeilen aus verschiedenen Datenbanktabellen zusammenfügen
SELECT SPALTE1, SPALTE2 FROM TABELLE1 UNION SELECT SPALTE3,SPALTE4 FROM TABELLE2;

-- ...oder mehrere Abfragen auf eine Tabellen zusammenfügen
SELECT SPALTE1, SPALTE2 FROM TABELLE1 WHERE BEDINGUNG1 = ERFÜLLUNG1 UNION SELECT SPALTE3, SPALTE4 FROM TABELLE2 WHERE BEDINGUNG2 = ERFÜLLUNG2;

-- Unterabfragen
SELECT * FROM TABELLE1 WHERE BEDINGUNG1 = (SELECT MAX(SPALTE2) FROM TABELLE1);
SELECT (SELECT max(SPALTE1) FROM TABELLE1) AS "Neuer Bezeichner" ,SPALTE2,SPALTE3 FROM TABELLE1;
SELECT *,concat(ROUND(SPALTE1/(SELECT MAX(SPALTEX) FROM TABELLE1)*100, 0), "%") AS 'Neuer Bezeichner' FROM TABELLE1;

-- ErzeugerCode einer Tabelle anzeigen
SHOW CREATE TABLE TABELLE1;

-- Zeichenkodierung in Mysql umstellen
SET NAMES "CP850";

-- Variablen von MySQL anzeigen
SHOW VARIABLES;

-- Nachträgliches anpassen von Tabellenstrukturen (Datentyp)
ALTER TABLE TABELLE1 MODIFY SPALTE DATENTYP(DEFINITION);

-- Umbenenen von Spalten
ALTER TABLE TABELLE1 CHANGE SPALTE-ALT SPALTE-NEU DATENTYP(DEFINITION);

-- Hinzufügen einer neuen Spalte nach einer anderen Spalte
ALTER TABLE TABELLE1 ADD NEUE-SPALTE DATENTYP(DEFINITION) NOT NULL DEFAULT 0 AFTER ALTE-SPALTE;

-- Index erstellen
CREATE INDEX INDEXNAME ON TABELLE1(SPALTE1);

-- Index löschen
DROP INDEX INDEXNAME ON TABELLE1;

-- Rechtevergabe
GRANT SELECT ON DATENBANK.TABELLE TO BENUTZERNAME@HOST;

-- Neuer Benutzer
CREATE USER 'BENUTZERNAME'@'%' IDENTIFIED BY 'PASSWORT';

-- Rechte für den neuen Benutzer angeben
GRANT ALL ON DATENBANK.* TO BENUTZERNAME@'%';
GRANT ALL ON *.* TO BENUTZERNAME@'%';

-- Rechtetabelle neu einlesen
FLUSH PRIVILEGES;

-- Rechte anzeigen
SHOW GRANTS;
SHOW GRANTS FOR BENUTZERNAME@HOST;

-- Rechte entziehen
REVOKE SELECT ON DATENBANK.* FROM BENUTZERNAME@HOST;
REVOKE ALL ON *.* FROM BENUTZERNAME@HOST;

-- Transaktionen
START TRANSACTION;
SELECT * FROM TABELLE1;
SELECT * FROM TABELLE2;
COMMIT;

START TRANSACTION;
UPDATE TABELLE1 SET wert = wert - 500 WHERE BEDINGUNG = ERFÜLLUNG;
UPDATE TABELLE2 SET wert = wert + 500 WHERE BEDINGUNG = ERFÜLLUNG;
SELECT * FROM TABELLE1;
SELECT * FROM TABELLE2;

-- Transaktion rückgängig machen
ROLLBACK;

-- It's a kind of magic... ;-)
SELECT DISTINCT
titel.nummer AS 'Track',
titel.name  AS 'Titel', 
album.bezeichnung AS 'Album', 
label.name AS 'Label', 
interpret.name AS 'Künstler',
genre.bezeichnung AS 'Genre'
FROM album
LEFT JOIN titel ON album.ean = titel.album_ean
LEFT JOIN interpret ON interpret.id = titel.interpret_id 
LEFT JOIN label ON album.ean = label.album_ean
LEFT JOIN genre ON genre.bezeichnung = titel.genre_bezeichnung
WHERE interpret.name LIKE '%Pink%'
ORDER BY titel.id ASC;

Weiterer Artikel zu Datenbanken:blog.phaziz.com/fiae-oop-objektorientierte-programmierung-normalisierung-in-relationalen-datenbanken/

MySQL Dokumentation: dev.mysql.com/doc/

Permalink
26. Januar 2017
AllgemeinFIAEMySQLProgrammierung

FIAE – Telekommunikation und Virtualisierung – Elektrik – Die Lehre der Elektrizität

Weil ein wenig Elektronik-Grundwissen ~~(leider)~~ auch zum Hintergrundwissen eines Fachinformatikers gehört…

Definitionen
Energie: In bestimmter Zeit erbrachte Leistung (Produkt aus Leistung und Zeit)
Leistung: Die Fähigkeit, ein bestimmtes Maß an Energie aufzubringen (Produkt aus Spannung und Strom) – Maßeinheit Watt – W
Arbeit: Eine bestimmte Energie für eine bestimmte Zeit wirken lassen
Strom: Die von der Spannung erzeugte Bewegung von Elektronen – Maßeinheit Ampere (A)
Spannung: Elektrische Spannung ist eine Kraft die dafür sorgt, dass elektrischer Strom fließen kann – Maßeinheit Volt (V)
Wiederstand: Jedes elektrische Material setzt dem Strom einen Wiederstand entgegen – Maßeinheit Ohm (Ω)

Grundbegriffe
AC : Alternating Current – Wechselstrom
DC : Direct Current – Gleichstrom
AC/DC : Australische Rockband
I : Elektrischer Strom/Stromstärke (Ampere – A)
P : Elektrische Leistung (Watt – W)
U : Elektrische Spannung (Volt – V)
R : Elektrischer Wiederstand (Ohm – Ω)
Q : Elektrizitätsmenge
t : Zeit
J : Joule (1 Joule = 1 Wattsekunde)
VA : Voltampere – Scheinleistung

Formel zur Berechnung der Leistung
P = (U x I) : Leistung in Watt = (Spannung in Volt / Strom in Ampere)

Formel zur Berechnung der Zeit
t = (Q / I) : Zeit = (Elektrizitätsmenge / Stromstärke)

Formel zur Berechnung von Ampere (Strom/Stromstärke)
A = (W / V) : Strom in Ampere = ( Leistung in Watt / Spannung in Volt)

Formel zur Berechnung von Voltampere (VA)
1VA = (1Volt x 1 Ampere) = 1 Watt

Formeln zur Berechnung von Strom
I = (U / R) : Strom = (Spannung / Wiederstand)
I = (P / U) : Strom = (Leistung / Spannung)
I = (Q / t) : Strom = (Elektrizitätsmenge / Zeit)

Formeln zur Berechnung der Spannung
U = (I x R) : Spannung = (Strom * Wiederstand)
U = (P / I) : Spannung = (Leistung / Strom)

Formeln zur Berechnung von Watt (P) Leistung / Volt (U) Spannung / Ampere (I) Stromstärke / Ohm (R) Wiederstand
P = Leistung
– (R x I2)
– (U x I)
– (U2 / R)
U = Spannung
– (R x I)
– (P / I)
– Wurzel aus(P x R)
I = Stromstärke
– Wurzel aus (P / R)
– (P / U)
– (U / R)
R = Wiederstand
– (U2 / P)
– (P / I2)
– (U / I)

Das Ohmsche Gesetz
Drei Formeln zur Berechnung von Strom, Spannung und Widerstand. Voraussetzung ist, das jeweils zwei Grundgrößen bekannt sind:
I = (U / R) : Liegt an einem Widerstand R die Spannung U, fließt durch den Widerstand R ein Strom I
U = (R x I) : Soll durch einen Widerstand R der Strom I fließen, so muss die Spannung U berechnet werden
R = (U / I) : Fließt durch einen Widerstand R ein Strom I, so liegt an ihm eine Spannung U an

Das Magische Dreieck
U / (R x I)
– Das magische Dreieck kann als Hilfestellung verwendet werden um die verschiedenen Formeln des Ohmschen Gesetzes zu ermitteln
– Der Wert, der berechnet werden soll, wird herausgestrichen
– Mit den beiden übrigen Werten wird das Ergebnis ausgerechnet
– Damit man sich die Reihenfolge der Werte merken kann, prägt man sich das Wort URI ein
– Wobei U über R und I steht

Permalink
11. Januar 2017
FIAE