Neugestaltung der Datenbank des Chemnitzer Studentennetzes

Ähnliche Dokumente
Entwicklungsumgebung für die Laborübung

SQL für Trolle. mag.e. Dienstag, Qt-Seminar

SQL Tutorial. SQL - Tutorial SS 06. Hubert Baumgartner. INSO - Industrial Software

DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER

Dieser Foliensatz darf frei verwendet werden unter der Bedingung, dass diese Titelfolie nicht entfernt wird.

Übung Datenbanken in der Praxis. Datenmodifikation mit SQL

Oracle 10g Einführung

NoSQL mit Postgres 15. Juni 2015

SQL und MySQL. Kristian Köhntopp

1 Hartmann Anna Cäcilienstr Köln (0221) Behrens-Hoffmeister Heidi Lindenweg Köln (0221)

Whitepaper. Produkt: combit Relationship Manager. Datensatzhistorie mit dem SQL Server 2000 und combit GmbH Untere Laube Konstanz

Views in SQL. 2 Anlegen und Verwenden von Views 2

PostgreSQL Ein Überblick

Lösung zu Aufgabe 6. Lösung:

PostgreSQL und memcached

SQL structured query language

SQL. DDL (Data Definition Language) Befehle und DML(Data Manipulation Language)

Dynamisches SQL. Folien zum Datenbankpraktikum Wintersemester 2009/10 LMU München

PostgreSQL unter Debian Linux

Informatik für Ökonomen II: Datenintegrität. Prof. Dr. Carl-Christian Kanne

Referentielle Integrität

Oracle: Abstrakte Datentypen:

Grundlagen von SQL. Informatik 2, FS18. Dr. Hermann Lehner (Material von Dr. Markus Dahinden) Departement Informatik, ETH Zürich

Klausur Interoperabilität

Seminar 2. SQL - DML(Data Manipulation Language) und. DDL(Data Definition Language) Befehle.

5/14/18. Grundlagen von SQL. Grundlagen von SQL. Google, Facebook und Co. setzen auf SQL. Whatsapp

Dipl. Inf. Eric Winter. PostgreSQLals HugeData Storage Ein Erfahrungsbericht

Bibliografische Informationen digitalisiert durch

Einteilung von Datenbanken

Inhalt. Ein Einführung in die Nutzung von SQL-Datenbanken am Beispiel Oracle. Daten und Tabellen - ein Beispiel. Daten und Tabellen - Normalisierung

Introduction to Data and Knowledge Engineering. 6. Übung SQL

Grundlagen von Datenbanken

Übung 7 DBMS-FUNKTIONALITÄTEN UND DATENIMPORT

Entwicklungsumgebung für die Laborübung

Referentielle Integrität

Datenbanktechnologie mit praktischen Übungen in MySQL und PHP

DB1 Abgabe Umsetzung der Callcenter Datenbank nach SQL von Daniel Häfliger, Dominik Süsstrunk und Reto Brühwiler

Beispiel 1: Filmdatenbank

Übung ERM. Beispiel: Erstellung einer relationalen Datenbank

IV. Datenbankmanagement

Objektrelationale, erweiterbare Datenbanken WS 04/05

Labor 3 - Datenbank mit MySQL

5.8 Bibliotheken für PostgreSQL

Grundzüge und Vorteile von XML-Datenbanken am Beispiel der Oracle XML DB

Fakultät für Informatik & Wirtschaftsinformatik DB & IS II - SS Metadaten

Datenbanken SQL Einführung Datenbank in MySQL einrichten mit PhpMyAdmin

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";

DB2 SQL, der Systemkatalog & Aktive Datenbanken

Objektrelationale und erweiterbare Datenbanksysteme

Datenbank- und Informationssysteme. Lösungsvorschläge zu Übungsblatt 2. Sommersemester CREATE DOMAIN KennzeichenDomain AS VARCHAR(9);

Schnellübersichten. SQL Grundlagen und Datenbankdesign

Abbildung 1: Das ERM. Nun zu den Tabellen: Zunächst wird aus jeder Entity eine Tabelle, d.h. wir erhalten:

Übungsblatt 8- Lösungsvorschlag

Datenintegrität. Bisherige Integritätsbedingungen

DB-Datenbanksysteme. DB SQL-DML 1 Mario Neugebauer

MNR NAME VORNAME STRASSE PLZ ORT TELEFON

Dipl. Inf. Dipl. Math. Y. Orkunoglu Datum:

Nachtrag: Farben. Farbblindheit. (Light und Bartlein 2004)

DBS ::: SERIE 5. Join Right Semi- Join Left Semi-Join Projektion Selektion Fremdschlüssel. Kreuzprodukt

Mengenvergleiche: Alle Konten außer das, mit dem größten Saldo.

Relationales Modell: SQL-DDL. SQL als Definitionssprache. 7. Datenbankdefinitionssprachen. Anforderungen an eine relationale DDL

Datenbanksysteme für Business, Technologie und Web. Nutzerdefinierte Replikation zur Realisierung neuer mobiler Datenbankanwendungen DB I S

Datenintegrität. Einschränkung der möglichen Datenbankzustände und -übergänge auf die in der Realität möglichen

Aufgaben zu XPath und XQuery

PHP + MySQL. Die MySQL-Datenbank. Hochschule Karlsruhe Technik & Wirtschaft Internet-Technologien T3B250 SS2014 Prof. Dipl.-Ing.

Installation MySQL Replikationsserver

Datenintegrität. Arten von Integritätsbedingungen. Statische Integritätsbedingungen. Referentielle Integrität. Integritätsbedingungen in SQL.

7. Datenbank-Zugriff. Vorlesung und Übung Dr. Peter Pfahler Institut für Informatik Universität Paderborn. Zum Beispiel aus PHP-Skripten: Client 7-2

Datenbanken für Online Untersuchungen

Tuning von PostGIS mit Read- Only-Daten von OpenStreetMap

Datenintegrität. Einschränkung der möglichen Datenbankzustände und -übergänge auf die in der Realität möglichen

Web-Technologien. Prof. Dr. rer. nat. Nane Kratzke SQL. Praktische Informatik und betriebliche Informationssysteme

MySQL, phpmyadmin & SQL. Kurzübersicht

TU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Alfons Kemper, Ph.D.

ORM & OLAP. Object-oriented Enterprise Application Programming Model for In-Memory Databases. Sebastian Oergel

php Hier soll ein Überblick über das Erstellen von php Programmen gegeben werden. Inhaltsverzeichnis 1.Überblick Parameterübergabe...

mit Musterlösungen Prof. Dr. Gerd Stumme, Dipl.-Inform. Christoph Schmitz 11. Juni 2007

Arbeiten mit einem lokalen PostgreSQL-Server

Datenmanagement in Android-Apps. 16. Mai 2013

Chancen und Wachstumsfelder für PostgreSQL

Kapitel 33. Der xml-datentyp. In diesem Kapitel: Der xml-datentyp 996 Abfragen aus xml-datentypen 1001 XML-Indizierung 1017 Zusammenfassung 1023

Universität Augsburg, Institut für Informatik WS 2006/2007 Dr. W.-T. Balke 27. Nov M. Endres, A. Huhn, T. Preisinger Lösungsblatt 5

Wiederholung VU Datenmodellierung

Automatisierte Datenmigration mit dynamischen SQL

Prozedurale Datenbank- Anwendungsprogrammierung

Entwicklungsumgebung für die Übung

Datenintegrität. Kapitel 5 1

Kapitel 8: Datenintegrität

Allgemeines. veröffentlicht unter lizensiert unter. Creative Commons BY-SA 3.0. XQuery in MS SQL Server 2005

Praktische SQL-Befehle

Datenintegrität. Integitätsbedingungen Schlüssel Beziehungskardinalitäten Attributdomänen Inklusion bei Generalisierung

ISU 1. Ue_08/02_Datenbanken/SQL. 08 Datenbanken. Übung. SQL Einführung. Eckbert Jankowski.

SQL Teil 2. SELECT Projektion Selektion Vereinigung, Schnitt, Differenz Verbund Komplexer SELECT-Ausdruck

Web Technologien Klassische Datenbanken am Beispiel von MySQL

Datenbanksysteme I WS 18/19 Teillösung Übungsblatt 4-6

HaskellDB. Datenbank-Features in Haskell Johannes Reiher

Hochschule Karlsruhe Technik und Wirtschaft Anhänge: Fakultät für Informatik und Wirtschaftsinformatik SS 2013 Prof. Schmidt.

Logging und Debugging. Gerd Volberg OPITZ CONSULTING Deutschland GmbH

Transkript:

12.12.2012 Neugestaltung der Datenbank des Chemnitzer Studentennetzes Verteidigung Bachelorarbeit Morris Jobke Prüfer: Dr. Frank Seifert Betreuer: Dipl.-Inf. Johannes Fliege

Neugestaltung der Datenbank des Chemnitzer Studentennetzes

Neugestaltung der Datenbank des Chemnitzer Studentennetzes

Chemnitzer Studentennetz studentische Initiative Ziel: Netzwerk innerhalb der Wohnheime Anbindung an das Uni-Netz ehrenamtliche Mitarbeiter Gründung: 1994

Neugestaltung der Datenbank des Chemnitzer Studentennetzes

Datenbank persistente Speicherung strukturierte Daten Beziehungen zwischen Daten

Neugestaltung der Datenbank des Chemnitzer Studentennetzes

Aufgabe der Datenbank des CSN Daten für den Betrieb des CSN Nutzerinformationen Netztechnik Finanzdaten Inventar Nachrichten...

Neugestaltung der Datenbank des Chemnitzer Studentennetzes

Bisheriger Stand der Technik "Never touch a running system." Funktionierendes System ABER minimale Anpassungsmöglichkeiten/ extremer Zeitaufwand

traffic_current traffic_overlimit hub_config_last finanz_jahr nutzerrechner standort standort csn_nutzer nutzer_rechner standort_id strasse hausnr etage zinr... person_id name vorname wohnt... host_id hostname ip_adr ether_adr sv... Systemverantwortlicher Benennung

SELECT * FROM kategorie ORDER BY kategorie_id; kategorie_id katname katchar --------------+-----------------+--------- 1 Nutzungsgebuehr N 2 Material M 3 Sonstiges S [...] (4 rows) SELECT * FROM finanz_titel ORDER BY titel_id; titel_id titel titelchar ----------+------------------------------------+----------- 1 Nutzungsgebühr N 2 Material M 3 Sonstiges S [...] (12 rows) Doppelte Daten

CREATE TABLE mailingliste ( id integer DEFAULT nextval('"mailingliste_id_seq"'::text) NOT NULL, listenadr character varying(40) NOT NULL, listebeschr text NOT NULL ); CREATE TABLE bezieht_liste ( id integer DEFAULT nextval('"bezieht_liste_id_seq"'::text) NOT NULL, listen_id integer NOT NULL, aufg_id integer NOT NULL ); Beziehungen

CREATE TABLE mailingliste ( id integer DEFAULT nextval('"mailingliste_id_seq"'::text) NOT NULL, listenadr character varying(40) NOT NULL, listebeschr text NOT NULL ); CREATE TABLE bezieht_liste ( id integer DEFAULT nextval('"bezieht_liste_id_seq"'::text) NOT NULL, listen_id integer NOT NULL, aufg_id integer NOT NULL ); Beziehungen

CREATE FUNCTION abstime_as_german_date(abstime) RETURNS text AS ' SELECT CASE WHEN isfinite($1) THEN date_part(''day'',$1) ''.'' date_part(''month'',$1) ''.'' date_part(''year'',$1) ELSE ''infinity''::text END; ' LANGUAGE sql; Datenbank-Prozeduren

Neugestaltung Nachteile Benennung Daten- Doppelungen Obsolete Daten Logik innerhalb der Datenbank Vorteile Funktionierendes Gesamtkonzept Daten

Neugestaltung der Datenbank des Chemnitzer Studentennetzes

Anforderungen an das neue System Abbildung sämtlicher Daten Workarounds ausbessern zukünftige Probleme Benennungskonventionen Abbildung sämtliche Strukturen im Modell Vermeidung von Datendoppelung, DB- Prozeduren und überflüssigen Strukturen

Modell

traffic_current traffic_overlimit hub_config_last finanz_jahr nutzerrechner standort ALTE STRUKTUR DailyTraffic Socket Port Unit House UserStatus UserTask FloorRepresentative FiscalYear UserHost Room Floor Benennung

standort standort_id strasse hausnr etage zinr... csn_nutzer person_id name vorname wohnt... nutzer_rechner host_id hostname ip_adr ether_adr sv... ALTE STRUKTUR Systemverantwortlicher Room RoomID FloorID RoomNumber Historic UserLivesInRoom UserID RoomID User UserID Name FirstName... UserHost UserHostID UserID HostID SocketID... Benennung

SELECT * FROM kategorie ORDER BY kategorie_id; kategorie_id katname katchar --------------+-----------------+--------- 1 Nutzungsgebuehr N 2 Material M 3 Sonstiges S [...] (4 rows) SELECT * FROM finanz_titel ORDER BY titel_id; titel_id titel titelchar ----------+------------------------------------+----------- 1 Nutzungsgebühr N 2 Material M 3 Sonstiges S [...] (12 rows) ALTE STRUKTUR Doppelte Daten

CREATE TABLE mailingliste ( id integer DEFAULT nextval('"mailingliste_id_seq"'::text) NOT NULL, listenadr character varying(40) NOT NULL, listebeschr text NOT NULL ); CREATE TABLE bezieht_liste ( id integer DEFAULT nextval('"bezieht_liste_id_seq"'::text) NOT NULL, listen_id integer NOT NULL, aufg_id integer NOT NULL ); ALTE STRUKTUR CREATE TYPE Mailinglist AS ENUM (... ); CREATE TABLE TaskSubscribeToMailinglist ( "UserTask" UserTask NOT NULL, "Mailinglist" Mailinglist NOT NULL ); Beziehungen

CREATE FUNCTION abstime_as_german_date(abstime) RETURNS text AS ' SELECT CASE WHEN isfinite($1) THEN date_part(''day'',$1) ''.'' date_part(''month'',$1) ''.'' date_part(''year'',$1) ELSE ''infinity''::text END; ' LANGUAGE sql; ALTE STRUKTUR #!/usr/bin/env python timeobject.strftime("%d.%m.%y") Datenbank-Prozeduren

Umsetzung virtueller Server im CSN Ubuntu 12.04 LTS PostgreSQL 9.1

Praktische Probleme marginale Unterstützung von Vererbung in PostgreSQL CREATE TABLE "Host" { "HostID" serial PRIMARY KEY, "Name" varchar }; CREATE TABLE "UserHost" { "UserName" varchar } INHERIT ("Host"); keine Vererbung von Constraints und keine tabellenübergreifenden Constraints

CREATE TABLE "Host" { "HostID" serial PRIMARY KEY, "Name" varchar }; CREATE TABLE "UserHost" { "HostID" integer REFERENCES "Host" ("HostID"), "UserName" varchar }; CREATE TABLE "Stack" { "HostID" integer REFERENCES "Host" ("HostID"), "ReadPassword" varchar }; Problemlösung - Vererbung

Daten-Migration eine Migrationsanweisung pro Tabelle: Bezug der benötigten Daten Anpassungen (Zeichensatz,...) Erstellung der Einfüge-Statements

SELECT strasse, hausnr, hkz, objekt_nr FROM haus ORDER BY haus_id; strasse hausnr hkz objekt_nr -----------------------+--------+------+----------- Thueringer Weg 3 Tw3 8235 Reichenhainer Strasse 35 Rh35 8110... Vettersstrasse 72 Ve72 8180 (10 rows) INSERT INTO "House" ("StreetName", "HouseNumber", "Abbreviation", "ObjectNumber") VALUES ('Thüringer Weg', '3', 'Tw3', 8235), ('Reichenhainer Straße', '35', 'Rh35', 8110),... ('Vettersstraße', '72', 'Ve72', 8180); Migrationsbeispiel

Evaluation Erfüllung sämtliche Anforderungen Ausnahme: Vermeidung von Datendoppelung praktisch sinnvolle Umsetzung ansonsten komplexe und zeitintensive Abfrage (über drei weitere Tabellen)

Zusammenfassung einheitliches und übersichtliches Schema vollständige Migration darauf aufbauende Neugestaltung der Software-technischen Grundlage im CSN

Dokumentation, Dokumentation, Dokumentation

Fragen?

SELECT hkz, etage, zinr FROM standort JOIN haus USING (haus_id) ORDER BY hkz, etage, zinr; hkz etage zinr ------+-------+------ Rh35 0 11 Rh35 0 12 Rh35 0 13... (2370 rows) INSERT INTO "Room" ("FloorID", "RoomNumber") VALUES ((SELECT "FloorID" FROM "Floor" WHERE "FloorNumber" = 0 AND "HouseID" = 'Rh35'), 11), ((SELECT "FloorID" FROM "Floor" WHERE "FloorNumber" = 0 AND "HouseID" = 'Rh35'), 12), ((SELECT "FloorID" FROM "Floor" WHERE "FloorNumber" = 0 AND "HouseID" = 'Rh35'), 13),...; Migrationsbeispiel