1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen
  2. Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, Oracle, Sql-Server, Postgres, Access uvm
    Information ausblenden

Relationen von 3 Entitäten

Dieses Thema im Forum "Datenmodellierung, Datenbank-Design" wurde erstellt von Jubelius, 30 August 2017.

  1. Jubelius

    Jubelius Neuer Benutzer

    Hallo,

    ich habe folgendes Problem bei der Umsetzung einer Datenbank, und bin mir nicht sicher, ob sich dass überhaupt irgendwie abbilden lässt:

    [​IMG]

    Es geht primär um die 3 Entitäten: Klasse(Class), Material und Merkmal(Attribute).
    Hier die Beziehungen mal erklärt:
    Eine Klasse kann mehrere Attribute beinhalten, und ein Attribut kann zu mehreren Klassen gehören.
    Ein Material kann nur zu einer einzigen Klasse gehören und darf auch nur dessen Merkmale erhalten.

    Jetzt Könnte man sagen, das die Beziehung zwischen Material und Merkmal im Bild nicht richtig ist, denn über die Beziehung zwischen Klasse und Material erhält das Material ja bereits die Merkmale einer Klasse.

    Aber, das Material erhält zu gewissen Merkmalen natürlich auch Werte oder Wertelisten, sodass die Tabelle etwa wie folgt aussieht:

    tb_material
    Fingerprint | AttributeId | Content

    hierbei muss ich wie gesagt aufpassen, dass das Material keine Merkmale enthält, die nicht zu der vorher zugewiesenen Klasse gehören.

    Würde mich sehr freuen wenn mir jemand einen Rat geben könnte :)
    Danke im Voraus und liebe Grüße
     
  2. akretschmer

    akretschmer Datenbank-Guru

    Code:
    test=# create table klasse(id int primary key, name text);
    CREATE TABLE
    test=*# create table material(id int primary key, name text);
    CREATE TABLE
    test=*# create table merkmal(id int primary key, name text);
    CREATE TABLE
    test=*# create table klasse_merkmal(id_klasse int references klasse, id_merkmal int references merkmal, primary key(id_klasse, id_merkmal));
    CREATE TABLE
    test=*# create table material_klasse (material_id int references material primary key, klasse int references klasse);
    CREATE TABLE
    test=*#
    
    Sollte tun was Du willst, oder?
     
  3. Jubelius

    Jubelius Neuer Benutzer

    Hallo akretschmer,

    Danke für die schnelle Antwort.
    Das Problem ist, das ich die Tabelle "Material" nicht nur mit einem Namen füllen muss, sondern mit Werten, die sich auf Merkmale beziehen. Allerdings dürfen dann pro Material nur die Merkmale benutzt werden, die auch der Klasse zugeteilt sind.
     
Die Seite wird geladen...

Diese Seite empfehlen