Avatar billede repsak Nybegynder
08. september 2003 - 12:59 Der er 10 kommentarer og
1 løsning

Tabel nedarvning

Jeg skal lave en tabelstruktur, hvor Person er en supertype og hhv. A, B og C er subtyper. Dvs. at A, B og C skal arve fra Person. Hvordan implementeres det i MySQL?
Avatar billede rodehoved Nybegynder
08. september 2003 - 13:16 #1
DU skal bruge Foreign keys, og dette understøttes kun af InnoDB, men InnoDB er så ikke standard i alle installationer af MySQL. Du kan læse mere om create tables på:
http://www.mysql.com/doc/en/InnoDB_foreign_key_constraints.html
Avatar billede repsak Nybegynder
08. september 2003 - 13:21 #2
Så er det vel nødvendigt at erklære alle atributterne flere steder - right? Jeg har set dit link men er stadig lidt itvivl
Avatar billede arne_v Ekspert
08. september 2003 - 13:23 #3
MySQL er jo en relationel database og ikke en objekt orienteret database,
så der er et problem.

Du kan vælge flere forskellige approaches:

3 tabeller A, B og C som alle har felterne fra Person. Slet ikke
objekt orienteret men fint relationelt.

4 tabeller A, B, C og Person, hvor de 3 tabeller har et felt der
peger på Person tabellen (foreign key -> primary key). Mere
objektorienteret, men ikke så fint relationelt.

1 tabel Person med et type felt og alle felter fra de 3 og NULL i
det ikke relevante felter. Tvivlsom både objektorienteret og
relationelt.

Jeg vill vælge den første løsning i de fleste tilfælde.
Avatar billede repsak Nybegynder
08. september 2003 - 13:33 #4
cool - tak for overblikket.
Bare for nysgerigheds skyld: hvilke databaser er objekt orienteret?
Avatar billede dsj Nybegynder
08. september 2003 - 13:46 #5
PostgreSQL kan håndtere tabel-nedarvning...
Avatar billede arne_v Ekspert
08. september 2003 - 13:48 #6
Der er ingen af de kendte database som er objekt orienterede.

Det er stadig en niche.

Der er en liste her:

http://www.service-architecture.com/products/object-oriented_databases.html
Avatar billede dsj Nybegynder
08. september 2003 - 14:19 #7
PostgreSQL er ikke objektorienteret, men indeholder funktionalitet der gør, at en tabel kan nedarve attributterne fra en anden tabel således.
Avatar billede repsak Nybegynder
11. september 2003 - 12:37 #8
arne_v -> hehe sidder lige og funderer... hvorfor er din "4 tabeller A, B, C og Person..." ikke så fin set med de relationelle briller?
Avatar billede arne_v Ekspert
11. september 2003 - 12:43 #9
Fordi der ikke er noget i database strukturen der forhindrer at der er
en record i A og en record i B der begge peger på samme record i Person.
Avatar billede repsak Nybegynder
11. september 2003 - 15:47 #10
Ok, så medmindre at en person må besidde flere roller så er det ikke relationelt smart
Avatar billede arne_v Ekspert
11. september 2003 - 16:45 #11
Korrekt.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester