Gå til innhold

Spørsmål ang database design


Anbefalte innlegg

Jeg har en ide som trenger en databasebackend, men jeg er usikker på hvordan jeg skal gå frem for å lage en effektiv databasestruktur.

 

Applikasjonen min skal lage relasjoner mellom forskjellige objekter, hvert objekt velger jeg å kalle et atom i denne sammenheng.

 

For alle typer atomer finnes det en blåkopi, dvs dersom to atomer er av samme type har de mulighet for å inneholde samme type informasjon. Feks dersom vi kaller en blåkopi for kontakt, så vil alle typer atomer av typen kontakt ha mulighet for å lagre data i alle feltene som blåkopien har.

 

Alle atomer skal også kunne relateres til hverandre, og det må være tydelig hvem som er parent og hvem som er child. Feks at et atom av typen kontakt har et barn av typen kontakt, eller arbeider i et atom av typen bedrift.

 

Noen forslag?

Lenke til kommentar
Videoannonse
Annonse

CREATE TABLE kontakt (

kontakt_id INTEGER NOT NULL,

navn VARCHAR NOT NULL,

parent_kontakt_id INTEGER,

works_in_kontakt_id INTEGER,

CONSTRAINT kontakt_pk PRIMARY KEY (kontakt_id)

);

 

 

ALTER TABLE kontakt ADD CONSTRAINT kontakt_kontakt_fk

FOREIGN KEY (parent_kontakt_id)

REFERENCES kontakt (kontakt_id)

ON DELETE NO ACTION

ON UPDATE NO ACTION

NOT DEFERRABLE;

 

ALTER TABLE kontakt ADD CONSTRAINT kontakt_kontakt_fk

FOREIGN KEY (works_in_kontakt_id)

REFERENCES kontakt (kontakt_id)

ON DELETE NO ACTION

ON UPDATE NO ACTION

NOT DEFERRABLE;

[code]

 

... blir en veldig enkel modell med kun en tabell dette, men det var ikke så veldig mye konkret informasjon i spørsmålet ditt.

 

Muligens vil du heller ha en egen tabell for "bedrift" og ha fremmednøkkel for works-in-relasjonen mot denne isteden.

 

Det er forøvrig vanligere å kalle "ting" for entiteter, og ikke "atomer", hvis man ønsker å ordlegge seg litt abstrakt :)

Endret av quantum
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...