Sehr gute Entscheidung, dass wir auch dich als neuen Rekruten in unserem Boot begrüßen dürfen, ich hoffe, dieser Post wird vieles beschreiben, dammit dir die Modellierung deiner Datenbank leichter fällt.
Ich würde, was ich aus deinem Threadpost lesen kann, in etwa so lösen, wo sic sogar die Stärke, je nachdem, ob der Innen- oder Außen-Radius entsprechend nach dem Rohmaterial, falls das bei euch vorher definiert wurde, automatisch.
hier eine Tabelle mit den Rohmaterialien (10mm Holzschraube oder 10mm Metallschraube und so weiter, ...)
Code:
create table materialien(id serial primary key, name text unique not null, stärke numeric unique not null);
hier eine Tabelle, wo die gewollten Rohre, welche womöglich Wasser leiten, mit 100mm Aßendurchmesser eingetragen werden können
Code:
create table rohre(innenradius numeric not null, aussenradius numeric not null, material integer references materialien(id) not null);
Hier wird eine Trigger-Procedure geschrieben, welche, je nachdem, ob der Außen oder innenradius des Rohres angegeben wird, abhängig vom grundmaterial den anderen Wert automatisch einfügt
Code:
create or replace function auto_stärke_radius() returns trigger as $$ begin
if (new.innenradius is not Null) then
new.aussenradius = new.innenradius+2*materialien.stärke from materialien
where materialien.id = new.material; else if (new.aussenradius is not Null) then
new.innenradius = new.aussenradius-2*materialien.stärke; else raise exception '';
end if; end if; return new; end; $$ language plpgsql;
Zu guterletzt muss nurnoch der Auslöser der Funktion dazugeschrieben werden
Code:
create trigger auto_stärke_radius before insert on rohre for each row execute procedure auto_stärke_radius();
Bei weiteren Fragen bist du gerne dazu eingeladen, hier einfach über einen weiteren Post in diesem Thread oder, falls unabhängig von dieser Fragestellunng bitte direkt in einen neuen Thread schreiben.