Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

Hilfe bei DB-Design - Fragebogen

Dieses Thema im Forum "Datenmodellierung, Datenbank-Design" wurde erstellt von SilverUser, 8 März 2013.

  1. SilverUser

    SilverUser Neuer Benutzer

    Hi Leute,

    ich würde gerne eine Datenbank designen (mit dieser Website: http://ondras.zarovi.cz/sql/demo/ ), weiß aber nicht genau wie ich das anstellen soll.

    Das Ganze geht davon aus, dass ich einen Bewertungs-Fragebogen habe, welcher folgendermaßen aufgebaut ist:

    Es gibt eine Überschrift (z.B. Design), dann verschiedene Zeilen, deren Bewertung von oben nach unten immer schlechter wird (z.B. oberste Zeile: 'sieht sehr gut aus' ; unterste Zeile: 'sieht sehr schlecht aus'). Davon jedoch gibt es mehrere Spalten (z.B. Produkt 1 , Produkt 2, ... ).

    Problem: Ich weiß nicht genau, wie das oben genannte Schema in dem SQL-Designer aussehen soll. Kann mir da einer helfen?

    Gruß
     
  2. akretschmer

    akretschmer Datenbank-Guru

    Das ist ein Tool, um Tabellen mal graphisch zu entwerfen. Aber nicht das Layout, wie es später in der Anwendung auf dem Bildschirm ist, sondern rein logisch, wie Tabellen aufgebaut sind, welche Beziehungen es unter den Tabellen es gibt, welche Datentypen etc.

    Du scheinst Anfänger in Sachen Datenbanken zu sein. Ich finde es (das ist jetzt meine ganz private Meinung) nicht gut, mit solchen Tools anfangen zu wollen, das zu lernen.
    Du solltest erst mal lernen, was man z.B. unter 'Normalisierung' versteht, und Du solltest lernen, mit elementaren SQL-Befehlen umzugehen.
    Auch ganz wichtig: wie man Tabellen verknüpft, z.B. via FOREIGN KEYS.

    Um z.B. eine DB-Struktur aufzubauen, um für beliebig viele Produkte je eine aus (im Beispiel 3) möglichen Beurteilungen auszuwählen und das zu speichern (sowie das Datum, wann die Bewertung gespeichert wurde) könnte man folgende SQL-Befehle anwenden.

    Code:
    test=# create table bewertungsnoten(id int primary key, bewertung text);
    NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "bewertungsnoten_pkey" for table "bewertungsnoten"
    CREATE TABLE
    test=*# create table produkte (id serial primary key, name text);
    NOTICE: CREATE TABLE will create implicit sequence "produkte_id_seq" for serial column "produkte.id"
    NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "produkte_pkey" for table "produkte"
    CREATE TABLE
    test=*# create table bewertungen(produkt int references produkte, datum date default current_date, note int references bewertungsnoten);
    CREATE TABLE
    test=*# insert into bewertungsnoten values (1,'sehr gut');
    INSERT 0 1
    test=*# insert into bewertungsnoten values (2,'geht so');
    INSERT 0 1
    test=*# insert into bewertungsnoten values (3,'durchgefallen');
    INSERT 0 1
    test=*# insert into produkte values (1,'Taschenlampe');
    INSERT 0 1
    test=*# insert into produkte values (2,'Lasagne');
    INSERT 0 1
    test=*# insert into produkte values (3,'Socken');
    INSERT 0 1
    test=*#
    test=*#
    test=*# insert into bewertungen(produkt,note) values (1,1);
    INSERT 0 1
    test=*# insert into bewertungen(produkt,note) values (2,3);
    INSERT 0 1
    test=*# insert into bewertungen(produkt,note) values (3,2);
    INSERT 0 1
     
     
    test=*# select p.name, n.bewertung,b.datum from bewertungen b left join produkte p on b.produkt=p.id left join bewertungsnoten n on b.note=n.id;
     
         name     |   bewertung   |   datum
    --------------+---------------+------------
     Taschenlampe | sehr gut      | 2013-03-08
     Lasagne      | durchgefallen | 2013-03-08
     Socken       | geht so       | 2013-03-08
    (3 rows)
    
     
    
    Das sind lediglich 3 SQL-Befehle: CREATE TABLE, INSERT INTO und SELECT. Das kann man lernen, ist nicht schwer. Ich mache sowas erheblich schneller direkt in einer SQL-Konsole als ich das auf so einer Website umständlich malen würde.

    (meine Eingaben sind immer hinter dem test= *#, die anderen Zeilen sind Ausgaben der DB)

    Dinge wie Überschriften und so sind eine ganz andere Baustelle: das ist dann die Applikation, die die DB nutzt.


    Andreas
     
  3. SilverUser

    SilverUser Neuer Benutzer

    Hi Andreas,

    generell verstehe ich deinen Einwand, dass ich direkt in die 'fortgeschrittene' Materie einsteigen will. Aber so wie ich den SQL-Designer verstehe, erscheint es mir ja nur als simples Tool um Datenbeziehungen zu bilden. Generell ist das ja auch das, was ich will: Datenbeziehungen zwischen verschiedenen Elementen bilden.

    Im Prinzip will ich nur die Basics wissen.

    Gruß
     
  4. akretschmer

    akretschmer Datenbank-Guru

    Genau: lerne die Grundlagen! ;-)

    Andreas
     
  5. ukulele

    ukulele Datenbank-Guru

    Generell ein netter ERD Editor, auch wenn er z.B. doppelte Tabellennamen zuläßt :)

    Ich entwickle neue DBs auch gerne nur als ERD und male solange rum bis mir die Struktur gefällt. Aber jeder der DBs entwickelt muss zwingend das relationale Datenschema verstehen und dabei hilft eben die Normalisierung. Wenn du diese beiden Wikipedia Artikel verstanden hast dann kannst du auch ein ERD Zeichnen.

    http://de.wikipedia.org/wiki/Relationale_Datenbank
    http://de.wikipedia.org/wiki/Normalisierung_(Datenbank) (bis 3. NF)

    Die Normalisierung ist sehr theoretisch, aber bei wirklich komplexen Strukturen sinnvoll. Bei einer simplen DB reicht es aber zu wissen, wie es funktioniert.
     
    Tommi gefällt das.
  6. SilverUser

    SilverUser Neuer Benutzer

    Hallo ukulele,

    danke für die Links. Haben mir gewissermaßen geholfen.
     
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden