Hallo zusammen,
ich plane derzeit ein Datenbankschema das u.a. Kontaktdaten verwalten soll.
Ein Datensatz sieht folgendermaßen aus:
(1)Firstname
(1)Lastname
(1-n)EmailAddresses
(0-n)PhoneNumbers
(1)Street
(1)City
Zu jedem Datum sollte eine 'visibility (public, protected, private)' hinterlegt werden.
Normalerweise würde ich alle Felder mit Multiplizität != 1 in eine extra Tabelle auslagern.
Problematisch wird das jedoch durch die das Attribut Visibility.
Das Schema würde dann in etwa so aussehen:
Nicht wirklich schön... daher würde ich folgendes bevorzugen:
Das ist aber auch nicht das, was die klassische Datenbanktheorie lehrt.
Zudem wird die BL bzgl. Überprüfung der (Multiplizitäten)Constraints relativ komplex, ungefähr so:
Ich bin nicht so tief im Datenbankdesign.
Kennt jemand einen anderen Weg wie man das Schema aufbauen könnte. Vielen Dank.
ich plane derzeit ein Datenbankschema das u.a. Kontaktdaten verwalten soll.
Ein Datensatz sieht folgendermaßen aus:
(1)Firstname
(1)Lastname
(1-n)EmailAddresses
(0-n)PhoneNumbers
(1)Street
(1)City
Zu jedem Datum sollte eine 'visibility (public, protected, private)' hinterlegt werden.
Normalerweise würde ich alle Felder mit Multiplizität != 1 in eine extra Tabelle auslagern.
Problematisch wird das jedoch durch die das Attribut Visibility.
Das Schema würde dann in etwa so aussehen:
Code:
Tabelle Contact:
[Firstname][Firstname_visibility][Lastname][Lastname_visibility]...[EmailAddressFK][PhoneNumberFK]
Tabelle Emails:
[EmailAddress][Visibility]
Tabelle Phone:
[PhoneNumber][Visibility]
Nicht wirklich schön... daher würde ich folgendes bevorzugen:
Code:
Tabelle Contact:
[Id] [ContactId] [TYPE] [VALUE] [VISIBILITY]
1 a EMAIL xy@xy.de protected
2 a EMAIL xy@ab.de public
3 a LNAME xy private
4 a FNAME ab private
5 a STREET...
Das ist aber auch nicht das, was die klassische Datenbanktheorie lehrt.
Zudem wird die BL bzgl. Überprüfung der (Multiplizitäten)Constraints relativ komplex, ungefähr so:
Code:
addContact(Contact aContact){
for(Iterator it = contacts.iterator();it.hasNext();){
Contact tmpContact = (Contact)it.next()
if(tmpContact.getType==LNAME)
throw new IllegalArgumentException("only one lname per person");
//...
}
contacts.add(aContact);
}
Ich bin nicht so tief im Datenbankdesign.
Kennt jemand einen anderen Weg wie man das Schema aufbauen könnte. Vielen Dank.