get the solution


Page 2 of 3123

Email Subject mit UTF8 im Header

By
on Regards: DBMS;

Emails sind laut Spezifikation in ASCII codiert weshalb man bei der Darstellung der Zeichen im Email sehr beschränkt ist.

Es gibt zwar die Möglichkeit im Header mit der Eigenschaft Content-Type (Content-Type: text/plain; charset=UTF-8) die Codierung mit anzugeben damit der Email Client weiß wie der Content Body codiert ist. Jedoch trifft das eben nicht auf den Header zu. Wie kann man dann also das Subject im Header mit UTF-8 codieren?

Um im Header die ASCII beschränkung zu umgehen gibt es die “MIME (Multipurpose Internet Mail Extensions) Part Three: Message Header Extensions for Non-ASCII Text” RFC Erweiterung. Der Emailclient muss diese RFC Erweiterung natürlich auch unterstützen. Diese RFC beschreibt zwei Möglichkeiten das Subject in einer anderen Codierung an zu geben.

  • Quoted Printable (subject starts with “=?utf-8?Q”)
  • Base64 (subject starts with “=?utf-8?B”)

Wir beschränken uns fürs erste auf die Base64 Variante da sie im Vergleich zur ersten weniger Zeichen benötigt.

Der Aufbau des Headers hat somit wie folgt aus zu sehen:

=?charset?B?text?=

Den Subject Text codieren wir in einen base64 String. Entweder ihr macht das per Code oder schnell online (https://www.base64encode.org/).

Anschließend muss man nur noch das Subject setzen. Kann z.B. so aussehen:

EXEC MSDB.dbo.sp_send_dbmail […] @subject = ‘=?UTF-8?B?base64text?=’

Links:


Page 2 of 3123

Shenyang

By
on Regards: Other;

Am 30. November war es endlich soweit! Ich war am Flughafen Wien Schwechat und ging nochmal meine Checkliste für die Reise durch. Mein Flug sollte nach Shenyang über Peking gehen und ich hatte noch genug Zeit ein paar Standardvokabeln einzupauken. Da ich in China mehr oder weniger ein taubstummer Analphabet bin, hatte ich im Vorfeld schon einige Vorbereitungen getroffen. Mit dabei waren ein Reiseführer der mich vor kulturellen Fettnäpfchen bewahren sollte, ausgedruckte Vokabel bzw. Sätze um an vegetarisches Essen zu kommen, so wie ein mobiles Ladegerät für mein Handy. Zu guter letzt das wichtigste, die chinesische Visitenkarte meines Hotels.

Flug

Um 15.15 ging der 10 Stunden dauernde Flug los. In Peking gelandet musste ich mich höllisch beeilen um meinen Anschlussflieger zu erwischen, der flog nämlich ein bisschen mehr als in einer Stunde los und der „Foreign Check-In“ dauerte schon fast eine Stunde lang. Man gibt dort die Arrival Card die man zuvor im Flug ausgehändigt bekommt. Auf der Rückseite gibt es etwas zum schmunzeln.

Direkt beim „Luggage Exit“ gibt es einen Info Stand bei dem man sich eine China Unicom Simkarten mit mobilen Internet erwerben kann. Diese Investition kann ich jedem anraten, denn ich habe mir sagen lassen, dass in einem herkömmlichen Shop der Erwerb einer Simkarte wesentlich aufwändiger ist. Für 400 MB inklusive Gesprächsminuten, welches sich genau für 3 Wochen ausging, habe ich ca. 380 RMB bezahlt.

Beim Domestic Security Check-In fiel das mobile Handyladegerät auf das nicht den Security Richtlinien entsprach. Bei elektronischen Geräten im Handgepäck müssen wie im folgenden Bild Beschrieben die Parameter angegeben oder berechenbar sein, ansonsten muss man ohne  das Gerät weiterfliegen oder man beweist gutes Verhandlungsgeschick.

Am Flughafen sind ringsum Angestellte und dieses Bild setzte sich auch auf der restlichen Reise fort. Es gibt überall in Hülle und Fülle Arbeiter und Angestellte. Auch wenn die Tätigkeit nicht sinnvoll erscheint, so drehte z.B. die Security Streife in einem gut einsehbaren menschenleeren Platz alle 5 Minuten eine Runde, unabhängig davon, ob sich auf dem Areal jemand befindet oder nicht. Jeder war irgendwie mit etwas beschäftigt und schien einen festen Platz zu haben.

Taxies

In Shenyang angekommen, begann mit einem typischen roten Shenyanger Taxi, das erste Taxi- Abenteuer. Denn überhaupt war jede Taxifahrt ein Erlebnis der besonderen Art, die entweder vom Fahrer selbst, oder vom Straßenverkehr geprägt war. Auch im Reiseführer wurde auf diesen Umstand hingewiesen, somit dachte ich, dass ich auf das schlimmste vorbereitet gewesen wäre. Denn wie sich herausstellte, hilft auch eine chinesische Visitenkarte des Hotels nicht immer um ans gewünschte Ziel zu gelangen, wie ich erstmals an diesem Abend erfuhr. Zwar kann der Fahrer zu Beginn einem zu verstehen geben, dass er weiß wohin man will, aber das hat auch nur mit der Absicht zu tun schnell einen neuen Fahrgast zu gewinnen. So kann es schon mal vorkommen, dass man zwar in der Nähe des Zielorts landet, aber eben nicht dort wo man hin will. Man wendet jedes Hilfsmittel an und verständigt sich mit Händen und Füßen. So kommt es auch schon mal vor, dass der Taxifahrer stehen bleibt und einen anderen Taxi Kollegen, oder gar einen Passanten um Rat bittet, oder man eben beim gegenüberliegenden Hotel fragt wo denn das Hotel auf der Visitenkarte zu finden ist. Und auch die beschriebene Tatsache vom Reiseführer, dass viele Taxifahrer keine Karte lesen können stimmt. Sobald man merkt, dass der Fahrer nicht weiß wohin, oder gar in die falsche Richtung fährt, ruft man vorab im Hotel an und reicht dem Fahrer das Handy weiter. Mit dieser Methode erspart man sich viel Zeit und Nerven.

Um 22 Uhr im Hotel angekommen fallen wieder die vielen Angestellten auf, die einen willkommend begrüßen. Viel übrig blieb mir also für den als Akklimatisierung gerechneten Tag nicht.

Erwähnenswert sei hier vielleicht, dass es in China universale Steckdosen gibt, bei dem die Europäischen und amerikanischen Stecker funktionieren. Ein VPN Zugang ist auf jeden Fall auch eine prima Sache um die Big Firewall of China zu umgehen. Ansonsten muss man auf Twitter, FB, Youtube, Google und Konsorten verzichten.

Am nächsten Tag, auf dem Weg zur Arbeit sind dann die großen zahlreichen Bauten aufgefallen und mit dem Straßenverkehr könnte man bei einigen Bildern meinen, es müsse sich um eine amerikanische Stadt handeln.

Verkehr

Der Straßenverkehr besitzt eine gewisse eigene Charakteristik und Dynamik, denn auf den ersten Blick erscheint der Straßenverkehr chaotisch. Trotzdem fließt und funktioniert er auf seine eigene Art und Weise. Straßenlinien spielen nur eine untergeordnete Rolle, soll heißen bei einer einspurigen Autobahnauffahrt habe ich auch schon zwei Autos nebeneinander auffahren sehen. Taxis, aber nicht ausschließlich, nehmen sich auch öfter das Recht heraus den Fußgängerweg als Straße zu benutzen. Interessanterweise stehen bei der Schnellstraße immer wieder in kurzen Abschnitten Arbeiter die die Straße vom Müll, welcher von den LKWS herunterfällt, befreien. Gemütlich vor sich hin trabende Radfahrer, sowie Mopedfahrer mit den auffälligen dicken Handschuhen sieht man auch immer wieder auf Schnellstraßen. Gehupt wird in Shenyang auch sehr gerne. Aber es ist im Vergleich zu unserem Hupen nicht „böse“  gemeint, sondern entspricht eher einem „Achtung Platz machen, ich komme“. Platz machen müssen auch die Fußgänger. Hier gilt das Recht des Stärkeren. Sprich, Platz macht man bei LKWs, Bussen, PKWs und zu guter Letzt die Fußgänger. Auch bei einer grünen Ampel für Fußgänger muss man höllisch gut aufpassen, dass man nicht niedergemäht wird. Die 5-spurigen Hauptstraßen sind ab 10 Uhr abends fast Auto und Menschen leer. Erst um 6 Uhr früh beginnen sich die Straßen soweit zu füllen, dass abschnittsweise nur noch im Schritttempo gefahren werden kann. Ebenfalls ein interessantes Detail ist, dass die Kreuzungsampeln immer gegenüberliegend der Kreuzung montiert sind. Das heißt, bei der Kreuzungshaltelinie befindet sich nicht die Ampel sondern gegenüberliegend. Eine Ampel kann auch mal 5 Minuten lang rot sein, dafür ist sie auch lange grün und die Countdowns auf die nächste Ampelphase verkürzen das scheinbare lange Warten.

Freizeit 1

Am ersten freien Abend machte ich mich auf um die Gegend um das Hotel zu erkundigen und begab mich zugleich in ein riesen großes Teehausgeschäft. Man kann sich das so vorstellen, als wäre man in einem dieser großen Möbelgeschäfte die dann nur einen Typ von Ware wie z.B. Fenster oder Keramik inklusive Zubehör verkaufen. Der Tee wird dort auf speziell angefertigten Teetischen zubereitet, was schon fast einer kleinen Zeremonie gleicht. Dort durfte ich auch gleich erfahren, dass Europäer in der breiten Bevölkerung teilweise noch als Exoten angesehen werden. Denn die Verkäuferin wollte unbeding ein Bild mit mir machen. In einem Park ist mir auch so eine ähnliche Situation widerfahren, was dann doch schon fast befremdlich wirkte. Ist aber auch nicht verwunderlich wenn in einer 8-9 Millionen Metropole nur etwa 2000 Ausländer wohnhaft sind. Jedenfalls nahm ich die Visitenkarte die mir die sichtlich erfreute junge Dame anbot, so wie es sich gehörte, mit beiden Händen entgegen. Dann studiert man die Visitenkarte und verstaut sie an einem ordentlichen Platz. Alles andere wäre eine unhöfliche Geste.

tea house

Die Lebensmittelgeschäfte haben unter der Woche bis 10 Uhr abends geöffnet. Sonntags sind die Nahversorgergeschäfte ebenfalls geöffnet und auch an Baustellen wird durchgeschufftet.

Am ersten freien Wochenende stieg der Smog auf den AQI 270 (vgl. dazu die oberen Bilder), was mich aber nicht davon abhielt zum Wuai Market aufzubrechen, der mittlerweile schon eine Touristenattraktion ist. Man bekommt dort einfach jeden Schnickschnack zu einem super günstigen Preis. Man sollte sich aber von der Qualität nicht zu viel erwarten, mein Föhn hielt nämlich nur eine Sitzung durch. Aufgrund des erhöhten Smogwertes und der kalten Luft kaufte ich mir gleich eine Mund-Maske. Die Chinesen ziehen diese Maske aber auch an, um niemand anderen anzustecken falls sie krank sind. Die einzelnen Geschäfte sind meist nicht größer als vier Quadratmeter und man kann auch hier wieder haut nahe China erleben. Die Verkäufer essen vor der Verkaufsablage und wenn mal nichts los ist, macht man ein kleines Nickerchen oder schaut mit den Kollegen Fernsehen.

Auch sonst sind die Chinesischen Kollegen unkompliziert. Wenn man beispielsweise in einem Gebäude keine Internetverbindung hat, dann reicht man dem Verkäufer einfach das Handy und zeigt die vorhandenen WIFIs an. Meistens geben Sie dann einem das WLAN Passwort. Will man wissen wieviel etwas kostet, reicht es aus auf den Taschenrechner der in jedem Geschäft vorhanden ist zu zeigen. Es lohnt sich auch auf alle Fälle überall zu handeln. Man bekommt dort immer einen Touristenpreis und auch wenn die Preise für uns teilweise lächerlich niedrig sind kann man immer etwas herausholen.

Da meine nächsten Stationen nicht weit entfernt waren und ich ja ohnehin mobiles Internet mit Kartenanzeige hatte, lief  ich die nächsten Stationen zu Fuß. So bekommt man auch abseits der großen Straßenschluchten ein besseres Bild der Stadt und erhält einen krassen Kontrast zwischen dem alten und dem neuen China. In den neuen modernen Einkaufshäusern sind ausschließlich westliche Marken wie Mcdondals, Starbucks, Gucci, Versage und co. vorhanden.

Essen

Auf dem Weg zum Mukden Palace bin ich zufälligerweise an einer christlichen Kirche vorbei gelaufen bei der gerade eine Tanzgruppe aktiv war, welche man immer wieder bei öffentlichen Plätzen, wie bei Parks, Einkaufszentren, der Mao Statue vorfindet.

Das Shenyang Imperial Palace wurde 1627 bis 1635 in der Qing Dynastie errichtet und ist 60.000m2 groß und enthält 114 klassische chinesische antike Architekturen und ist somit einen Besuch auf jeden Fall wert!

Aufgrund der eisigen Kälte die im Winter vorherrscht, es hatte bis zu -14 Grad, war ich froh ein Restaurant ausgemacht zu haben das eine etwas größere vegetarische Auswahl hatte. In der Provinz Liaoning, in der Shenyang liegt, wird vorwiegend deftig und scharf gegessen. Besonders empfehlen kann ich die gerillten Tofu Nudeln die dort eine regionale Spezialität sind. Beim Restauranteingang wird man meistens von mehreren Angestellten zum Platz geleitet. Dort erhält man, wahrscheinlich von der Jahreszeit abhänig, ein heißes Wasser. Die Speisekarte war in den drei Wochen in allen Restaurants glücklicherweise bebildert, so dass man einfach auf das Gericht zeigen konnte. Während man das Gericht auswählt, warten die Angestellten gespannt, was den der Europäer so alles auswählt.

In diesem einen Fall war das Restaurant komplett leer und die übrigen fünf herumstehenden Angestellten schauen einem interessiert beim Essen zu. Vor allem weil mein praktischer Umgang mit den chinesischen Essstäbchen bei einer Nudelsuppe nicht so gut gelang wie ich es mir erhofft hatte. Die Chinesen essen zuerst die Nudeln aus der Suppe mit den Stäbchen, um anschließend die Brühe auszuschlürfen.

Die Anzahl der Portionen mit den Fingern anzugeben sollte man nur machen, wenn man weiß wie die entsprechenden Handzeichen aussehen. Die ersten 10 Zahlen sehen so wie im Link beschrieben aus http://de.wikipedia.org/wiki/Chinesische_Zahlschrift#Handzeichen_zum_Ausdruck_chinesischer_Zahlen.

Je nach dem in welcher Gegend man isst, kann der Preis stark variieren. Auf der Arbeit haben wir für vier Personen ca. 100 RMB bezahlt und waren mehr als nur satt. In der Hotelgegend kann man dann schon mal im Durchschnitt für eine Mahlzeit 80 RMB ausgeben. Ich kann also nur jedem anraten, etwas abseits der großen Einkaufshäuser essen zu gehen und das nicht nur des Preises wegen. Auch sei darauf hingewiesen, dass das Klischee, dass man nicht alles auf essen dürfe, weil das unhöflich wäre, als veraltet gilt.

Freizeit 2

Die nächste Station war das Province Museum, welches sich gegenüber vom Theater befand und kostenlos ist. Es gab dort einige Ausstellungen wie z.B. Malereien von Landschaften von China, Münzsammlungen sowie verschiedene Ausgrabungen.

http://lnmuseum.com.cn/

Weiter ging es mit der Ubahn die ich unbedingt einmal ausprobieren wollte. In der Stadt gibt es momentan nur zwei neu errichtete Ubahnlinien! Es werden aber gerade aktuell 6 weitere gebaut. Eine einfache Fahrt mit den Öffis kostet in China nur 3 RMB, das entspricht ca. 40 Cent. Ein einfaches „nǐhǎo“ und 3 RMB reichen um eine Fahrtkarte zu erhalten. Wehe aber man hat nur einen 100 RMB Schein bei sich, das könnte dann den Fahrkartenerwerb unnötig kompliziert machen, da diese wie viele andere nicht Englisch sprechen können. Anschließend geht man durch den Security Check bei dem die Taschen halbherzig kontrolliert werden.

Die Ubahn war zu dem Zeitpunkt wo ich gefahren bin gerammelt voll. Die Leute standen bis zum Anschlag vor der Türe. Wie sollte ich da rein kommen? Ich tat es den anderen Fahrgästen einfach gleich. Rückwärts sich in den Ubahnwagon pressen. Auch war interessant zu beobachten, dass anders wie bei uns, die Fahrtgäste nicht warten bis alle ausgestiegen sind, sondern die Leute links und rechts hineingehen und in der Mitte die Leute aus dem Wagon aussteigen. Ich hatte aber das Gefühl, dass unser System besser funktioniert.

Eine weitere Station war das 1931 Incident Museum das, an den Einfall der Japaner in China erinnern soll. Zu sehen ist hier das Monument über den Sieg der Japaner.

Es wird erzählt wie am 18 September in Japan ein vermeintlicher Anschlag der Chinesen auf einen Zug verübt wurde. Der Anschlag, von den Japanern selbst durchgeführt, gab ihnen somit die Legitimation in China einzumarschieren. Daraufhin wurde Shenyang 14 Jahre lang von den Japanern besetzt und tyrannisiert.

1936 wurden zwei geheime Bakterielle Labore von den Japanern eröffnet bei denen Menschenversuche durchgeführt wurden. Von 1940 bis 1945 wurden an 3000 lebendigen Menschen solche Experimente durchgeführt. Die daraus entwickelten biologischen Waffen forderten 2,7 Millionen Menschenleben. Es war ein dunkles Kapitel in China das heutzutage immer noch nicht ganz aufgearbeitet ist. Mehr zum Thema: http://en.wikipedia.org/wiki/Mukden_Incident und http://www.918museum.org.cn/

Der Beiling Park bringt einen Tapetenwechsel in das Freizeitprogramm und ist besonders im abendgrauen schön, wenn man beim Sonnenuntergang die Stadt im Hintergrund sieht. Zu spät sollte es aber auch nicht sein, denn ohne wärmende Sonnenstrahlen hält es sich nicht lange in der Kälte aus. Im Beiling Park befindet sich auch die Totengrabstädte von Zhaoling.

Wenn man die Chance hat, sollte man auch mal außerhalb der Stadt einen Markt besuchen. Hier erwarten einen, dann mehr klassische chinesische Spezialitäten. Bei dem Markt bei dem ich war, machte sich als erstes der stinkende Geruch nach Fisch und Fleisch bemerkbar. Aber das gehört eben zu einem Markt. Der Boden war mit rotem Blut überzogen und als mich als nächstes ein abgetrennter Hühnerkopf mit separaten Hühnerfüssen anlachte, musste ich doch dann schnell weiter. Das war zu viel des Guten für einen vegetarischen Magen. Ich wechselte zu den nächsten Ständen und kaufte dann die Vorort gemachte Nudeln, Anis, getrocknete Shiitake Pilze und einen Schwarzreis und noch viel mehr :O)

Der Aufenthalt in China hat mir bei meinen chinesischen Kollegen viel Spaß gemacht und es lohnt sich allemal die Reise genauestens durchzuplanen, da 90% der Chinesen kein Englisch können.

Subjektiv gesehen hat man das Gefühl, dass man den Wandel den das Land gerade durch macht miterlebt, gerade in der Stadt. Viele Klischees die im Fettnäpfchen Reiseführer stehen sind veraltet und entsprechen nicht mehr der heutigen gesellschaftlichen Norm. Beim nächsten Mal, falls es eines geben wird, möchte ich aber mehr vom alten, ländlichen China sehen.

Andere Blogs zu Shenyang

http://www.andreas.de/wordpress/archives/tag/shenyang/page/4/


Page 2 of 3123

Modelle in der Informatik

By
on Regards: Article;

Probleme, die in der realen Welt vorkommen können mit Hilfe von Programmen gelöst oder reduziert werden. In der Softwareentwicklung wird dazu aus einem bestimmten Ausschnitt der realen Welt, ein Abbild erstellt. Dieses Abbild ist das Modell.

Ein abgebildetes Modell der Realität hat daher folgende Kennzeichen (vgl. Stachowiak Herbert 1987):

  • Abbildungsmerkmal – Modelle bilden etwas ab, Teilbereich der Realität
  • Verkürzungsmerkmal – Modelle verkürzen und vereinfachen auf das, was den Modellerstellern oder Modellbenutzer relevant erscheint
  • Pragmatisches Merkmal – sind ihren Originalen nicht eindeutig zuordenbar

Das pragmatische Merkmal kann in weitere Punkte unterteilt werden.

  • Modelle dienen bzw. haben einen Zweck für jemanden. Sie interpretieren interpretieren das Model subjektiv
  • Modelle beziehen sich auf einen bestimmten Zeitpunkt
  • Modelle beziehen sich auf bestimmte gedankliche oder tatsächliche Operationen

Abbildung 1

Mit Original ist nichts anderes gemeint, als ein Ausschnitt aus der Realität.

Beim Erstellen von Modellen kann man (Marco Thomas):

  • einige Originalattribute weglassen (Präterition), aber auch
  • einige Modellattribute zusätzlich einfügen (Abundanz),
  • einige Originalattribute mit anderen Bedeutungen belegen (Transkodierung) oder
  • einige Originalattribute hervorheben. (Kontrastierung).

„Objekte mit Zuständen und eigenem Verhalten sind gut geeignet, um den Ausschnitt der realen Welt, den das System repräsentieren soll, in einem Modell abzubilden.“ (Müller, T. 1998)

In der Softwareentwicklung gibt es viele verschiedene Darstellungsmodelle. Mit  UML wurde eine standardisierte Beschreibungssprache gefunden. Es wurden unter anderem folgende  Darstellungsmodelle definiert: Aktivitätsdiagramme, Anwendungsfalldiagramme. Das Klassendiagramm ist dabei wohl das Bekannteste. Aber auch das ERM- Diagramm, das sich beim Designen von Datenbanken etabliert hat, ist ein weiteres Darstellungsmodell.

Detailliertere Informationen zum Thema „Allgemeine Modelltheorie“ findet man in Stachowiak, H. (1973). Allgemeine Modelltheorie. Wien: Springer oder hier .

Bei der Erstellung von Modellen gibt es keine Garantie, dass das Modell in der Einsatzsituation so verstanden wird wie in der Entwicklungssituation. Auch kann nicht garantiert werden, dass das Modell  für die Einsatzsituation angemessen ist. (vgl. C. Floyd, H. Klaeren 1998).

Man darf nicht außer Acht lassen, dass der Computer um seine Umwelt nur durch das ihm  zugrunde liegende Modell Bescheid weiß. Das bedeutet nichts anderes, als dass das Modell festlegt, wie der Computer in der Wirklichkeit „agiert“. (vgl. C. Floyd, H. Klaeren 1998).

Folgendes Beispiel zeigt, dass ein „fehlerhaftes“ oder unvollständiges Modell  fatale Auswirkungen haben kann.

Beim Transrapid handelt es sich um eine Magnetschwebebahn. Der Transrapid übermittelt dem System ständig seine Position, was ein Kollidieren mit anderen Fahrzeugen verhindern soll. Trotzdem kam es beim Transrapid-Unglück im September 2006 zu einem tragischen Unfall mit 23 Toten. Dabei  kollidierte ein Fahrzeug mit einem Einsatzfahrzeug.

Eigentlich hätte das nicht passieren dürfen, weil das System weiß auf welchem Gleis sich ein  Fahrzeug  befindet. Dies passierte, weil die Einsatzfahrzeuge nicht in das Modell aufgenommen wurden. Das Einsatzfahrzeug war somit für das System unsichtbar. Die Mitarbeiter hätten durch Hinschauen überprüfen müssen, ob der Transrapid freie Fahrt hat.

Literatur

C. Floyd, H. Klaeren: Informatik gestern, heute, morgen. Studienbrief 1 zu Informatik und Gesellschaft. Universität Tübingen, 1998 S. 75ff

Müller, T. (1998) CORBA-basiertes Management von UNIX-Workstations mit Hilfe von ODP-Konzepten. Dipl.-Arb., Institut für Informatik der Technischen Universität München S. 47

Marco Thomas Die Vielfalt der Modelle in der Informatik, 23.12.10 http://ddi.cs.uni-potsdam.de/Personen/marco/Infos01_Thomas.pdfS. 3-5

Stachowiak, H. (1973). Allgemeine Modelltheorie. Wien: Springer. S. 131f

Abbildungsverzeichnis

Abbildung 1 Modell entnommen aus http://ddi.cs.uni-potsdam.de/Personen/marco/Infos01_Thomas.pdf Seite 3

Andere intressante Artikel:

Online Communities


Page 2 of 3123

Datenbank erstellen mit dem ER-Diagramm und MySql

By
on Regards: DBMS;

Datenbanken erstellen / modellieren mit dem ER-Modell

Ein Modell ist ein Ausschnitt aus der Realität oder ein gedankliches Konzept. Das Entity-Relationship-Modell ist ein Modell das aus Gegenständen und Beziehungen besteht. Es wird häufig verwendet um eine Datebank zu designen.

Beim ERM-Model handelt es sich bei den Entities meist um einen physikalischen Gegenstand, oder um ein gedankliches Konzept. Die Beziehungen zwischen den Gegenständen werden abstrahiert.

Grundlagen

Beziehungstypen

Datenbank erstellen

Literatur

Grundlagen

Entity

Ein Gegenstand wird im Modell durch ein Rechteck abgebildet. Der Gegenstand kann Eigenschaften enthalten die durch Attribute dargestellt werden. Attribute die zu einem Gegenstand gehören werden durch Linien verbunden.

Schlüssel sind eine minimale Menge von Attributen, deren Wert eine Entity eindeutig innerhalb aller Entities eines Types identifizieren. Schlüssel werden durch unterstrichene Attributnamen dargestellt.

Generalisierung

Die Generalisierung soll für ein übersichtliches und strukturiertes Modell sorgen. Dies kann erzielt werden, in dem Entities mit den gleichen Attributen zu einem Basis Entity zusammengefasst werden. Die Unterentities „erben“ die Attribute des Basis Entitys. Das Erben der Unterenties kann symbolisch durch einen Pfeil dargestellt werden. Im unteren Beispiel erben Mitarbeiter und Kunde die Attribute von Person.

Relationship

Beziehungstypen werden durch Rauten dargestellt. Diese werden dazu passend beschriftet.

Beziehungstypen

Es gibt verschiedene Beziehungstypen.

1:1 Beziehung

Jedem Entity m aus Mann wird höchstens ein Entity f aus Frau zugeordnet. Umgekehrt verhält es sich genauso. Jedem Entity f aus Frau wird maximal ein Entity m aus Mann zugeordnet. Es kann auch vorkommen, dass Entities keinen Partner haben.

Die Relation kann wie folgt in Worten beschrieben werden.

Ein Mann ist mit einer Frau verheiratet. Eine Frau ist mit einem Mann verheiratet.

1:n Beziehung

Jedem  Entity h aus Haus wird kein oder beliebige viele Entities aus Bewohner zugeordnet. Jedes Entity b aus der Menge Bewohner steht maximal einem Entity aus Haus in einer Beziehung.

Die Relation kann wie folgt in Worten beschrieben werden.

Ein Haus hat mehrere Bewohner. Mehrere Bewohner können in einem Haus sein.

n:1

Verhält sich wie die 1:n Beziehung nur umgekehrt.

N:m

Wenn keine Einschränkungen und Begrenzungen gelten, also  jedes Entity aus E1 mit beliebig vielen Entities aus E2 in Beziehung stehen kann und umgekehrt jedes Entity aus E2 mit beliebig vielen Entities aus E1 assoziiert ist, handelt es sich um eine n:m Beziehung. (vgl. Alfons Kempler 2009)

 

Min / Max Notation

Mit der Min / Max Notation kann man die Beziehungstypen genauer spezifizieren. Wir können z.B. sagen, dass kein oder ein Haus von genau einer Person besessen wird. Eine Person kann aber 0 oder mehrere Häuser besitzen. Die Notation würde dann wie folgt aussehen.

Da wir beim Erstellen der Datenbank die Min / Max Notation außer Acht lassen, verweise ich deshalb für weitere Informationen auf den Wikipedia Artikel und auf das Kapitel 6.6 Die (min, max) – Notation von der Online-Kurs ‘Datenbanken und Datenmodellierung’ Print Version.

Datenbank erstellen

Nach dem also das Model nach den ER-Diagramm Richtlinien erstellt wurde, gilt es den Entwurf in eine Datenbank zu übertragen. Ich gehe ab hier davon aus, dass man das Grundlegende über Datenbanken weiß.

Fremdschlüssel dienen als Verweis zwischen zwei Relationen, d. h. er zeigt an, welche Tupel / Zeile der Relationen inhaltlich miteinander in Verbindung stehen.

Als erstes beginnt man damit, die Entities in Tabellen um zu wandeln. Als Tabellenamen werden vorzugsweise die Entitynamen verwendet. Alle Attribute werden in der Tabelle als Spalten dargestellt. Dabei muss man sich jetzt überlegen, welches Attribut welchen Datentyp verwenden soll.

Folgendes Modell kann man wie folgt in eine Tabelle übersetzen (für das Beispiel wurde eine MySQL DB verwendet):

 

CREATE TABLE `Autor` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`Name` VARCHAR( 50 ) NULL
) ENGINE = InnoDB;

Wie man sehen kann wurde der Attributname „Identifikationsnr“ auf id verkürzt und als Primary Key gesetzt. Für den Name wurde der Datentyp varchar verwendet. So werden die Entities der Reihe nach in die Datenbank „übersetzt“.

Als nächstes muss man in der Datenbank die Voraussetzungen dafür schaffen, dass die Beziehungen abgebildet werden können. Am Einfachsten ist die n:m Beziehung ab zu bilden.

 

Aus der Min / Max Notation „(0,*)“  erkennen wir, dass es sich um eine „m:n“ Beziehung handelt.

N:M Beziehungen benötigen immer eine Hilfstabelle! In der Hilfstabelle müssen wir sogenannte Fremdschlüssel verwenden, um auf die jeweilige Tabelle zu verweisen. In die Hilfstabelle erstellen wir also zwei Spalten, die jeweils die Bezeichnung auf der zu verweisenden Schlüssel verwenden. Da die Beziehung „besuchen“ heißt, erstellen wir passenderweise eine Tabelle namens besuchen. Darin erstellen wir die zwei Spalten Schuelerid und Fachid. Das sieht dann so aus:

CREATE TABLE `Schueler` (
`Schuelderid` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`Name` VARCHAR( 100 ) NOT NULL
) ENGINE = InnoDB;

CREATE TABLE `Unterrichtsfach` (
`Fachid` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`Name` VARCHAR( 50 ) NOT NULL
) ENGINE = InnoDB;

CREATE TABLE `besuchen` (
  `Schuelderid` int(11) NOT NULL,
  `Fachid` int(11) NOT NULL
) ENGINE=InnoDB;

Anbei noch ein paar Testeinträge:

INSERT INTO `Schueler` (`Schuelderid` ,`Name`)
VALUES (NULL , 'Martin'), (NULL , 'Simon');

INSERT INTO `Unterrichtsfach` (`Fachid` ,`Name`)
VALUES (NULL , 'Betriebssysteme'), (NULL , 'Datenmodellierung');

Wenn Martin jetzt die die Unterrichtsfächer ‘Betriebssysteme’ und ‘Datenmodellierung’ besuchen soll, müssen wir die entsprechenden Einträge in die Tabelle ‘besuchen’ machen. Z.B. mit:

INSERT INTO `besuchen` (
`Schuelderid` ,
`Fachid`
)
VALUES ('1', '1'), ('1', '2');

INSERT INTO `besuchen` (
`Schuelderid` ,
`Fachid`
)
VALUES ('2', '2');

Nun fragen wir ab welche Fächer Martin besucht.

SELECTs.name,u.name
FROM`besuchen`ASb,UnterrichtsfachASu,SchuelerASs
WHEREb.fachid=u.fachid
ANDs.Schuelderid=b.Schuelderid
ANDs.name='Martin';

Wer will kann zur Hilfstabelle noch eine dritte Spalte id hinzufügen.

Aus der unteren Abbildung ist erkenntlich, dass ein Schüler 0 oder maximal einen Computer  verwenden kann. Ein Computer ist 0 oder mehreren Schüler zugeordnet. Es handelt sich also hier um eine 1:N Beziehung. Da wir im ersten Schritt alle Entities in der Datenbank implementiert haben, sieht unsere Computer Tabelle so aus:

CREATE TABLE `Computer` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`Name` VARCHAR( 10 ) NOT NULL
) ENGINE = InnoDB;

Anders wie bei einer N:M Beziehung muss nicht eine Hilfstabelle erstellt werden. Der Fremdschlüssel der Computertabelle kann direkt in die Tabelle des Schülers hinzugefügt werden.

ALTER TABLE`Schueler`ADD`computerid`INTNULLCOMMENT' verweis auf tabelle computer'

In die Computertabelle dürfte man keine Spalte erstellen um den Fremdschlüssel vom Schüler zu speichern, weil laut ER-Diagramm ein Computer mehreren Schüler zugeordnet sein kann.

Bei dieser Abbildung wird davon ausgegangen, dass dem Schüler ein Computer zugeordnet sein kann, aber nicht muss. Deshalb sind in der Spalte computerid NULL Einträge erlaubt. Falls man davon ausgeht, dass ein Schüler 0 oder mehrere Computer verwendet, müsste man dies mit einer N:M Beziehung realisieren.

Theoretisch könnte man eine 1:N Beziehung auch mit einer Hilfstabelle realisieren, jedoch versucht man in der Praxis, überflüssige Tabellen zu vermeiden. Denn wenn man bei größeren ER-Diagrammen alle Beziehungen mit Tabellen übersetzt, kann die Datenbank schnell unübersichtlich werden.

 

Bei einer 1:1 Beziehung wird so vorgegangen wie im oberen 1:N Beispiel. Die Verwendung von Hilfstabellen ist nicht möglich. Um die Tabellen miteinander zu verknüpfen, wird in die jeweilige Tabelle für die man sich entscheidet, eine zusätzliche Spalte erstellt in die man den Fremdschlüssel speichert. Ein Beispiel dazu:

CREATE TABLE `Mann` (
`idmann` INT NOT NULL AUTO_INCREMENT PRIMARY KEY
) ENGINE = InnoDB;

CREATE TABLE `Frau` (
`idfrau` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`Name` VARCHAR( 100 ) NOT NULL
) ENGINE = InnoDB;

Die Beziehung kann folgendermaßen realisiert werden:

ALTERTABLE`Mann`ADD`idfrau`INTNULLCOMMENT'verweis auf tabelle frau‘

Dabei spielt es keine Rolle welche Tabelle verwendet wird. Wir hätten genauso zur Tabelle Frau die Spalte mit dem Fremdschlüssel hinzufügen können.

Hat man alle Beziehungen in der Datenbank implementiert kann man als nächstes die Integritätsbedingung erstellen. Die Erstellung der Referenzielle Integritätsbedingung hier auch noch auszuführen sprengt allerdings den Rahmen. Ich verweise deshalb vorerst auf den Wikipedia Artikel “Referentielle Integrität“.

Literatur

Beziehungen, 09.02.2011, http://sql.idv.edu/thema/dbgrundlagen/beziehungen.htm#5

Referentielle Integrität, 09.02.2011, http://de.wikipedia.org/wiki/Referentielle_Integrit%C3%A4t#Verwendung_in_Datenbanksystemen

Integritätsbedingung, 09.02.2011, http://de.wikipedia.org/wiki/Integrit%C3%A4tsbedingung

A. Kemper A. Eickler Datenbanksysteme, 09.02.2011, http://www-db.in.tum.de/research/publications/books/DBMSeinf/

Alfons Kempler. (2009) Datenbanksysteme – Eine Einführung 7 Auflage, Oldenbourg Wissenscahftsverlag GmbH München


Page 2 of 3123