PDA

Vollständige Version anzeigen : Modell und Normalisierung darstellen


SaschaBHH
26.01.2008, 14:12
Hallo Ihr,

wenn man sich über ein Datenbank Modell und die Normalisierung gedanken macht, fällt es mir schwer meine Gedanken&Ideen dazu festzuhalten.

Konkrett will ich ein altes Projekt von mir (aus Anfängerzeiten) "Updaten" und u.a. alle Anfängerfehler der Modellierung beseitigen.

Wie geht Ihr das an ein Datenmodell zu entwerfen? Zettel und Bleistift?:) Ich meine hier insbesondere die Visualisierung des Modells.

Hier hatte ich gelesen: db wiki Grundlagen des Datenbank-Designs (http://www.dbwiki.de/wiki.php?title=Access_Anf%E4nger:_Grundlagen_des_Datenbank-Designs)

das man sich auch Software zur Hilfe nehmen sollte (Viso Pro/ERwin). Gibt es in diesem Bereich auch günstigere alternativen (gar kostenlos)? Leider verdiene ich mit Access noch nicht soviel Geld um nicht zu sagen garnichts (Hobby mit Leidenschaft eben)

Bin dankbar für jeden Tip.

Josef P.
26.01.2008, 14:31
Der Erstentwurf des Datenmodells entsteht bei mir immer noch mit Papier und Bleistift. :)
Dabei liste ich mir aber anfangs nur die "Objekte" auf, die im Modell untergebracht werden müssen und zeichne die "logische" Verbindung ein. (das ist noch kein ER-Modell!)
Visio hätte ich zwar, aber das ist mir zu aufwendig. Ich verbringe lieber die Zeit zum Gestalten und Optimieren des Modells als mit graphischen Spielereien - und Gedankenblitze ;) halte ich am liebsten per Papier und Bleistift fest.

Wenn du ein "ER-Tool" verwenden willst, könntest du dir die Software DBDesigner 4 (http://www.fabforce.net/dbdesigner4/) ansehen. Damit kann man auch Reverse Engineering betreiben.

Ich springe selbst meist vom Grobentwurf auf dem Papier direkt in das DBMS und erstelle dort das Datenmodell. (Anm.: ich nutze kein Access-BE sondern meistens den SQL-Server und in diesem kann man über "Diagramme" die Beziehungen ganz gut darstellen, da die Anzeige der Tabellen variiert werden kann - z.B. nur Schlüssel, alle Felder, nur Namen, usw.)
"Sauberer" - im Sinne der Theorie - ist sicher das Entwerfen des kompletten ER-Modells, bevor man zum DBMS wechselt. ;)

SaschaBHH
26.01.2008, 15:07
Hallo Josef P.

Danke für Deinen Tip. Habe gerade das Programm installiert und werde es mal testen und hinterher entscheiden ob Papier und Bleistift praxisgerechter sind.

Schönes WE noch..

SaschaBHH
31.01.2008, 19:47
Hallo.

Ich habe mich eingehend mit dem DBDesigner beschäftigt und muss sagen, das mir das wirklich gut gefällt (Darstellung des ER-Modell s und auch Handhabung).

Scheinbar klappt es mit dem Synchronisieren der Datenbank mit dem Modell nicht, weil es MySQL und SQL wohl unterscheidliche Befehle nutzen. Leider wird das Prog auch nicht weiter entwickelt und wird wohl im MySQL Workbench die Fortsetzung finden. Josef P meinte, ich müsste mir einen Converter erstellen um das "Sprachproblem" zu lösen.. Das soll aber jetzt garnicht das Problem hier sein.

Ich habe stundenlang im Web gesucht und auch ein bißchen was getestet. Man kann viel Geld ausgeben für ein solches Tool.

Vom Preis her ganz interessant ist Altova DatabaseSpy (http://www.altova.com/de/). Hier wird über ADO mit der Datenbank verbunden und über SQL Scripts die Datenbank, dem Modell entsprechend angepasst. Im Großen und Ganzen entspricht es aber nicht dem Niveau vom DBDesigner.

Insbesondere die Darstellung und auch der Ausdruck des ER-Modells sind nicht so gut wie beim DBDesigner. Aber immerhin ist es allemal besser als das "Access Beziehungsfenster" und kostet nur 99,- Euro.

Datenmodellierung und Normalisierung ist so ein wichtiges Thema, das es mir unbegreiflich ist, warum Microsoft bei Access sich mit so einer Darstellungsform der Beziehungen zufrieden gibt.

Hat jemand noch Software Geheim Tips die auch das Reverse Engineering beinhaltet? Wie macht Ihr Euer ER-Modell? Wie Josef mit Paier und Bleistift (die wohl schnellste und kostengünstigste Variante! :grins: )

Vielleicht kann man diesen Thread dafür nutzen, um seine Erfahrungen mal auszutauschen. Danke für das lesen und DANKE für das eventuelle mitteilen Euer "Erfahrungen"

SaschaBHH
01.02.2008, 12:57
...die Leiter rauf. Vielleicht vermag einer was kluges zu erzählen?:)

Josef P.
01.02.2008, 13:13
@SaschaBHH: ich glaub, uns will niemand die tollen Tools zu günstigen Preisen verraten, die die Accessianer verwenden. ;)

SaschaBHH
01.02.2008, 13:28
Hi Josef.

Lese ich da ein bißchen Ironie in Deinen Worten?:)

Vielleicht gibt es keine Tools und Herlitz, Faber Castell und Co bieten doch die beste alternative...:D

Vielleicht habe ich mich auch nur zu viel mit dem Thema "Datem Modellierung" beschäftigt und sehe einfach nicht ein, warum ich mein Wissen jetzt in das kreative Highlight des "Access Beziehungsfensters" rein Designen soll. :(

Aber gut...vielleicht solls so sein. Oder doch nicht? ;)

Josef P.
01.02.2008, 13:38
Vielleicht habe ich mich auch nur zu viel mit dem Thema "Datem Modellierung" beschäftigt und sehe einfach nicht ein, warum ich mein Wissen jetzt in das kreative Highlight des "Access Beziehungsfensters" rein Designen soll.
... oder: vielleicht haben sich die Verantwortlichen für die Entwicklung von Access zu wenig mit Datenmodellierung beschäftigt. :D

BTW: zu viel kann man sich glaube ich gar nicht mit Datenmodellierung beschäftigen. ;)

Es würde auch mich interessieren, welche ERM-Hilfsmittel für ein Access-BE exisitieren.
(Bei SQL-SErver reichen mit - wie bereits erwähnt - anfangs Papier und Bleistift und später die Diagramme im SQL-Server aus. .... was nehmen aber die Accessianer?)

RudiH
01.02.2008, 18:06
Hallo SaschaBHH,
ich habe vor einigen Jahren etwas intensiver mit "ERWin" (ER for Windows)gearbeitet. Ich weiß allerdings nicht mehr, welche Firma sich dahinter verbirgt. Vielleicht googelst du einmal etwas. Das Programm ist schon sehr ausgereift und gehört bestimmt zu den Profis unter entity relationship.

Ein ER-Programm ist wohl für grundlegende Überlegungen vor allem komplexer DBs sehr sinnvoll. DBs für Access kann man mit etwas Erfahrung, wie meine Vorgänger es bereits dargelegt haben, einfacher mit etwas Papier und Bleistift zu Anfang und dann direkt in Access realisieren.

RudiH

SaschaBHH
01.02.2008, 20:02
Hi Rudi,

schön das Du Dich beteiligt hast. "ERWin" habe ich wohl bereits gefunden und muss gestehen, zu teuer für jemanden der damit nicht sein Brot verdient

Bei Wikipedia gibt es eine Liste von Datenmodellierungswerkzeugen (http://de.wikipedia.org/wiki/Liste_von_Datenmodellierungswerkzeugen) die ich bereits gecheckt habe. Heute habe ich gerade das Tool Datanamic Dezign (http://www.datanamic.com/) getestet. Es kostet 195,- Euro und ist ein bißchen vielversprechender als DatabaseSpy. Aber ich habe auch noch nicht alles gecheckt um ein entgültiges Urteil fällen zu können. Wir werden sehen...

SaschaBHH
01.02.2008, 22:09
Hallo insbesondere an Josef P,

habe mich gerade mit dem DB Designer beschäftigt. Der bietet eine SQL Export Funktion. Ich habe das Muster Modell einmal in SQL Exportiert.


CREATE TABLE Customer (
idCustomer INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
name VARCHAR(45) NULL,
address VARCHAR(255) NULL,
phone VARCHAR(20) NULL,
smartcard INTEGER UNSIGNED NULL,
discount NUMERIC(10,2) NULL DEFAULT 1.00,
PRIMARY KEY(idCustomer)
);


Kannst Du mir sagen, ob es sich um SQL oder MYSQL Code handelt?

Handelt es sich um SQL Code, warum motzt Access bei Ausführung der Abfrage "UNSIGNED" als Befehl unbekannt an....?

Anne Berg
01.02.2008, 22:15
Hallo,

das ist ganz gewiss kein Jet-SQL. Schau mal, ob du unter dem Stichwort DDL (Data Definition Language) in der Access-Hilfe etwas findest.

SaschaBHH
01.02.2008, 22:31
Nabend Anne,

also kein JET SQL. DDL habe ich mir angeschaut, scheinbar scheint aber auch das nicht zu sein. Insbesondere das erstellen des PK ist wohl anders bei DDL. Mal davon ab, das SQL ganz sicher nicht meine Stärke ist.

Hintergrund ist der, das ich im DBDesigner ein ER-Modell erstelle und dieses - auf Umwegen - in Access importieren will. In diesem Programm gibt es eine SQL Export Funktion und aus dem Export stammt eben dieser Code. Eine integrierte Synchronisation im DBDesigner funktioniert deshalb nicht, weil dieser wohl MySQL verwendet (hat mir Josef P gesteckt).

:)

Josef P.
01.02.2008, 22:37
in diesem Fall hat Jet 2 "Verständnisprobleme": UNSIGNED und AUTO_INCREMENT.
Folgendes sollte funktionieren:
CREATE TABLE Customer (
idCustomer INTEGER NOT NULL identity(1,1),
name VARCHAR(45) NULL,
address VARCHAR(255) NULL,
phone VARCHAR(20) NULL,
smartcard INTEGER NULL,
discount NUMERIC(10,2) NULL DEFAULT 1.00,
PRIMARY KEY(idCustomer)
);

Anm.: mit der Einstellung "SQL-Server" beim Export wird die SQL-Anweisung etwas mehr der Jet-SQL-Anweisung ähnlich sein.

SaschaBHH
01.02.2008, 22:56
Hi Josef,

muss ich eine Datendefinitionsabfrage in Access verwenden oder den "normalen" Abfrage Editor in SQL Ansicht? Wie auch immer, in beiden Fällen motzt er das


identity(1,1)


an. Nach entfernen des Teil, motzt er Numeric an. Aber das will ich besser nicht vertiefen. Es bringt ja nichts, wenn ich den ganzen Code umschreiben muss... ich teste wie gesagt den DBDesigner und versuche irgendwie das erstellte Modell in Access zu kriegen... aber noch gebe ich nicht auf... :D

Josef P.
01.02.2008, 23:08
vergaß ich zu erwähnen: entweder ADODB verwenden oder in der Datenbank ANSI92-Standard einstellen.
Ich probierte auch gerade eine Ministrukur aus. Beim SQL-Export kann man "SQL-Server"-Syntax wählen. Die damit erzeugten SQL-Anweisungen konnte ich 1:1 unter AcXP ausführen:
CREATE TABLE T1 (
id INTEGER NOT NULL IDENTITY ,
T VARCHAR(255) ,
PRIMARY KEY(id));
GO

CREATE TABLE T2 (
idT2 INTEGER NOT NULL IDENTITY ,
fiT1 INTEGER NOT NULL ,
Z INTEGER ,
PRIMARY KEY(idT2) ,
FOREIGN KEY(fiT1)
REFERENCES T1(id));
GO
Aber: ohne "GO" und jede SQL-Anweisung einzeln. Batch-Ausführung ist in einer Access-Abfrage nicht möglich.

SaschaBHH
02.02.2008, 15:42
Hallo Josef,

Danke für den Hinweis. Hat das irgendwelche "fatalen" Auswirkungen, wenn ich ANSI-92 verwenden einstelle?

Bisher verfüge ich über ein "Grundwissen" zu JET SQL und ich möchte natürlich meine erstellten DB weiterhin mit meinen Kenntnisen nutzen.

Habe gestern auch wild Dinge betrieben, um mein ER-Modell aus dem DBDesigner in die Datenbank zu bekommen... mag man garnicht erzählen...:(

Du hattest mal Visio benutzt? Magst Du mir mal verraten, ob das Erstellen und Synchronisieren von Modellen in den PRO Versionen bereits ab 2002/2003
funzt? (Ich denke da an gebrauchte Software)

Nachdem Du geantwortet hast, werde ich aber diesen Thread aber beenden.



BTW: Ich war heute bei Staples und habe mir einen DIN A2 Block und 20 vernünftige Filzstifte gekauft.... die Pro Variante des EDMPH 2.0(Einfaches Datenmodell per Hand) :D

SaschaBHH
02.02.2008, 15:54
öhm


Beim SQL-Export kann man "SQL-Server"-Syntax wählen


Wo hast Du das endeckt im DBDesigner?

Josef P.
02.02.2008, 16:10
Hat das irgendwelche "fatalen" Auswirkungen, wenn ich ANSI-92 verwenden einstelle?
Fatal nicht. ;)
Es ist nur wie so vieles in Access nicht sauber durchgezogen.
Wenn du auf ANSI-92 stellst, dann musst du z.B. in Access-Abfrage % statt * als Platzhalter verwenden. Wenn du jedoch dann per DAO ein Recordset öffnen willst, ist trotzdem wieder * statt % erforderlich.
Das mit ANSI-92 erwähnte ich nur, falls du meine Beispiel-SQL-Anweisung in einer Access-Abfrage testen wolltest.
Mit Jet 4 gab es einige Erweiterungen für DDL, die aber MS im "ADODB-Wahn" nicht in DAO ergänzte.

zu Visio:
Ich habe keine Ahnung ob das damit gut funktioniert. Nutzte ich noch nie produktiv für Daten-Modellierung - ich sah mir das nur kurz an.
Wie bereits erwähnt, bin ich mit der Darstellung im SQL-Server zufrieden und erspare mir somit die Verwendung einer zusätzlichen Software.

Nachdem Du geantwortet hast, werde ich aber diesen Thread aber beenden.
Schade, dass kaum jemand schilderte, welche Alternativen zum Access-Beziehungsfenster im Einsatz sind. ... Oder hatte ich womöglich mit meiner Anspielung recht, dass sich Accessianer kaum Gedanken zum Modell machen und gleich mit der Formular-Gestaltung beginnen? - Ich hoffe nicht. :D

Beim SQL-Export kann man "SQL-Server"-Syntax wählen
Wo hast Du das endeckt im DBDesigner?
In einer Zweigentwicklung (DB Designer Fork (http://sourceforge.net/projects/dbdesigner-fork)) über das Menü: File - Export - Create SQL Script
(Ich dachte das gibt es im orignial DBDesigner auch. Dem ist aber nicht so. ;))

SaschaBHH
02.02.2008, 16:34
Hallo Josef.

Wie sagte Rudi:

DBs für Access kann man mit etwas Erfahrung, wie meine Vorgänger es bereits dargelegt haben, einfacher mit etwas Papier und Bleistift zu Anfang und dann direkt in Access realisieren.


Scheinbar ist das eben doch die gängigste Methode. Ich hoffe mal nicht, dass sich Deine Vermutung als Wahrheit bestätigt :)

Ich glaube ja eher, dass selbst die Ober-Accessianer mit Bleistift und Papier arbeiten und danach in Access weitermachen. Das Ergebnis stimmt nachher und entspricht allen Regeln der Kunst. Vielleicht gibt es der Eine oder Andere nur ungerne zu.. das ist eher meine Vermutung. :eek:

Ich habe jetzt meine Erfahrung mit ER Tools gemacht, am Rande noch einen MYSQL Server:mad: auf meinen Rechner installiert und zu guter letzt habe ich jetzt meine Stifte und das A2 Papier.

Ich bedanke mich für Deine rege Beteiligung und Deine netten antworten, die immer ausführlich sind. Und siehst: Und das alles mit Bleistift !!! :winner:

Sascha Trowitzsch
24.02.2008, 20:52
Sorry, dass erst jetzt hier reinschneie...
Also, ich muss gestehen, dass mich bisher KEIN Modeller-Tools begeistert hat.
ERWin ist sicher das Standard-Ober-Tool, aber schwer zu handhaben - hat den Charme von Win 3.1-Programmen. Damit geht nichts schneller, als mit den Access-eigenen Tools.
Visio 2007 benutze ich, um NACH umfangreicher Modellierung ein grafisches Modell zu erstellen, aufzubereiten und auszudrucken - das kann bekanntlich Access mit seinem dämlichen Umweg über einen Bericht nicht sonderlich gut. In dieser Hinsicht ist Visio nicht zu schlagen. Blöd nur, dass man Änderungen am Modell damit nicht mehr so einfach zurückspielen kann, ohne den Comparer anzuwerfen.

Was mich an vielen Modeller-Tools stört sind die Relations, die im Gegensatz zum Access-Beziehungsfenster die Verbindungslinien pauschal zum Tabellen-Shape ziehen, ohne dass ersichtlich würde, welche Felder hier verknüpft werden. Da muss man immer erst eine Linie doppelklicken o.ä., um die beiden Schlüssel sehen zu können. Auch wenn in einigen Fällen die Schlüssel als Text neben den Linen stehen, ist die Übersicht nicht so gut, wie im Beziehungsfenster.

Papier&Bleistift sind, wie bei Josef, bei mir nur am Anfang dazu da, um die groben Entitäten abzubilden - quasi Zwischenschicht zwischen Unternehmensobjekten und Datenbank. Aber ein Modell mit 100+ Tabellen möchte ich lieber nicht auf Papier malen...

Im Endeffekt verwende ich also doch das Beziehungsfenster. Würde mich interessieren, was daran so schlecht ist?
Sicher hat es viele Unzulänglichkeiten - kein automatisches Layout, kein Zoom, keine Gruppierungsmöglichkeiten, etc. - aber mit was geht es leichter? Ich kenne nichts.

Ciao, Sascha

SaschaBHH
24.02.2008, 21:24
Nabend Sascha,

ich habe soviele Programme getestet, und muss sagen das ich vorerst bei Stift & Zettel stehen geblieben bin. Ohnehin hast Du Recht mit Deiner Kritik, das man nicht auf Anhieb erkennen kann welche Felder miteinander verknüpft sind. PK und FK werden häufig seperat in der Tabelle auf der Modellansicht gezeigt. Schön ist das nicht. Bei einigen Programmen gefällt mir der Druck und die Gestaltung mit "Bereichen" sehr gut. Klasse finde ich auch die Mini Ansicht der Beziehungen, in der ich in den gewünschten Bereich wählen kann und dieser mir im Modell angezeigt wird.

Was mich konkret am Access-Beziehungsfenster stört:

1. Ausdruck, 2. Sichtbereich (Vollbild wäre Klasse), 3. verpielte Darstellung

Und jetzt wo ich wie Du - Stift und Zettel verwende - und das Access Beziehungsfenster nutze, viel mir noch was auf:

Möchte ich mir Übersicht schaffen und füge die Tabelle tbl_Personen 2x in den Bereich ein, weil ich ein anderen Beziehungsbereich darstellen will, dann veschwindet nach dem speichern die ALIAS Tabelle und die Beziehung wird wieder auf dem Original dargestelllt. Verstehst? Arbeite ich mit reflexiven Beziehungen z.B. über m:n, dann bleibt die ALIAS Tabelle erhalten (siehe Bild).

Aber egal. Die (für mich) besten Tools Datanmic Dezigner oder auch DBDesigner sind noch etwas zu teuer oder werden nicht mehr weiter entwickelt. Also bin ich jetzt da, wo ich stehe. Nicht so schön, aber es klappt...bisher zumindest :)

Sollte ich mal was geniales an ER Tools finden, dann Berichte ich an gleicher stelle..