• Liebe User, bitte beachtet folgendes Thema: Was im Forum passiert, bleibt im Forum! Danke!
  • Hallo Gemeinde! Das Problem leidet zurzeit unter technischen Problemen. Wir sind da dran, aber das Zeitkontingent ist begrenzt. In der Zwischenzeit dürfte den meisten aufgefallen sein, dass das Erstellen von Posts funktioniert, auch wenn das Forum erstmal eine Fehlermeldung wirft. Um unseren Löschaufwand zu minimieren, bitten wir euch darum, nicht mehrmals auf 'Post Reply' zu klicken, da das zur Mehrfachposts führt. Grußworte.

DB - SQL - oracel

Mitglied seit
01.09.2002
Beiträge
1.456
Reaktionen
0
Salut,

ich mach gerade ein Project für die Uni, abgabe ist am Donnerstag und ich hab ein paar Fragen bezüglich DBS und oracel:

- wie effizient sind "NULL" spalten?
ich soll aktivitäten von affen modelieren. wenn sich der affe bewegt, dann hat er ziel koordinaten, wenn er spielt/isst/schläft nur anfangs und endzeitpunkt. wenn ich jetzt sage
if aktivität != bewegen then ziel = NULL
ist das klug, oder besser die nterschiedlichen aktivitäten irgendwie trennen?

- bezüglich constraints:
ich speicher den vater/die mutter eines affen. referenziert über fremndschlüssel. wie lautet die constraint um zu sagen, dass ein vater älter als 16 sein muss, also ungefähr:
heute - vater.geburtsdatum > 16

hier rennen sonst immer sehr kluge leute rum (mit respekt den array-kopier-thread gelesen).
ein halbrichtiges ER-schema wäre hier
www.philippstumpf.de/db1.pdf
(französisch weil ich den kurs in lausanne mach)

thx
viedion
 

killerchicken_inaktiv

Guest
Hm, zunaechst mal, du sprichst sicher von Oracle, oder? Bin mir jetzt unsicher, weil du zwei mal oracel geschrieben hast...

Zum Aktivitaeten trennen: Je nachdem, ob es wichtig ist, welche Aktivitaet der Affe gerade durchfuehrt, solltest du trennen. Wenns nur darum geht ob er sich gerade bewegt -> machs so

Wie ist das Datum gespeichert (Sorry kann kein Wort fr.)
 

RRA^StArFiRe

Guest
das mit den NULL-spalten ist eigentlich egal.
je nach diskursbereich kannste halt ne weitere spezialisierung dafür einführn. aber letzendlich ist beides richtig, wenn du dann die nebenbedingungen richtig setzt. vor allem musste dann aber in den triggern die konsistenz überprüfen.
d.h. es kann ja nicht alles null sein, aber auch nicht alles nicht null, solche fälle musste dann immer abfangen.
das geht mit ner spezialisierung deutlich einfacher.

zu dem constraint bzw trigger...
du weißt wie man trigger schreibt oder?
also du musst einfach anhand des codes, das alter des vaters in ne lokale variable ziehn.


Code:
create or replace Trigger vatersAlter
Before insert or update on Chimpanze
for each Row 

DECLARE 
  vaterJahr    number;
  jahr             number;
begin 

  select annee into vaterJahr  from Chimpanze
  where :new.pere = code;

  select year(current_timestamp) into jahr;

  if jahr - vaterJahr < 16
    then raise_application_error(-20001,'blabla, vater nicht älter als 16'); 
    else 
         dbms_output.put_line('vater zugewiesen');       
  end if;
end;

so ähnlich müsste das gehn, kA obs current_timestamp so gibt in sql oracle, evtl musste ma da nach anderen date() funktionen noch googlen.


achso, zu dem ER-modell...
schräge linien sind immer schlecht, un die kardinalitäten so einfach in die mitte zu malen, auch. denn zb. zwischen possede und den entities darüber wechselt die logische flußrichtung von oben nach unten auf links nach rechts. also schreibt sie am besten immer an die entities.
und an relationship typen gehören keine kardinalitäten soweit ich mich erinnern kann.
und ne relation "mutter" bzw "vater" gibt auch punktabzug, änderts besser in "ist_mutter", aber beachtet auch hierbei die logische leserichtung.

naja, kA wie streng ihr bewertet werdet, aber bei dem modell könnte man ne menge rotmachn.



e: mir fällt grad ein, ich glaub du wolltest mit den 1-1 und 1-N die spanne ausdrücken... also wie in uml 0..n etc.
sowas gibts in ER modellen aber nicht, da gibt es nur N oder 1.
mehrere (inklusive 0) oder genau eins.
wenns davon mindestens eins geben muss, drückt man das über das attribut schwach aus, oder total.
jede andere mindestverfügbarkeitsangabe muss in den integritätsbedingungen stehen, die man immer zu so´nem modell machen muss.
 
Mitglied seit
01.09.2002
Beiträge
1.456
Reaktionen
0
thx!

bin gerade auf nem erasmus-jahr hier in der schweiz, ergo sind unsere abgaben meist in 2h gemacht, einmal drüber schaun - abnicken und skifahren/surfen/klettern/radfahren/saufen/... gehen, je nach jahreszeit.

- das er-modell wurde schon abgegeben, feedback auf grund chronischer abwesenheit im kurs nie bekommen

- zur speicherung der datums (?): das wird jetzt über ein "date" gemacht.

- trigger sind bekannt, sehen verständlich aus.

- zu dem "abfangen via trigger": da ich überall "null" erlaube, aber nicht gleichzeitig, muss ich das abfangen?

- morgen 14:00 uhr treffen mit der assistentin, dann wird geschaut. vor allem ist das ein bachelor-kurs, die normalen studenten hier haben n haufen zu tun, drum mal schaun, wie sehr das in die tiefen gehen soll...

- thx, weitere fragen werden kommen ^^

viedion

€: wenn ich nid (nester) und communaute (rudel) über construir (bauen) verknüpfen will, dann bekommt das "nid" einfach ein "contruitPar" (gebautVon) rein. ich mach da nicht extra eine tabelle, die das ganze dann verknüpft?

€2: was ich nicht vesteh: wenn ich zwei elemente habe, die sich gegenseitig brauchen, um eingetragen zu werden. bsp: ein affe braucht ein rudel, ein rudel braucht einen affen als alpha-tierchen. wie kann ich da anfangen daten einzutragen? ich verstosse ja immer gg eine constraint: ohne affen => kein alphatier => kein rudel =>kein affe =>...?? da beisst sich die katze doch immer in den schwanz...
 
Mitglied seit
01.09.2002
Beiträge
1.456
Reaktionen
0
so, die meisten fragen haben sich erledigt - wir haben zu viel gewollt.
die hälfte der geplanten trigger sind nicht notwendig - man soll nur zeigen, dass man unique, check und trigger beherrscht, dafür reicht von jeder sorte eine constraint.

wenn nun jmd fragen zu oracle hat, halt ich mich auch für einen experten :)

viedion

PS: die wollen von uns, dass wir daten erfinden - ne stunde einfach nur dinge erfunden - solche deppen!
 
Oben