Hallo liebe Experten,
ich stehe vor folgender Frage: sollte ich die BCNF verletzen, wenn die funktionale Abhängigkeit zu komplex ist, um sie bei der Abfrage als triviale Where-Klausel zu formulieren?
Die betreffende Relation ist ein Anrufer:
Das Attribut is_distinguishable speichert, ob der Anrufer anhand der aufgenommenen Informationen beim nächsten Anruf relativ eindeutig wiedererkennbar ist. Diese Bedingung soll als erfüllt gelten, wenn mindestens
a) address_fkey oder
b) phone_number_fkey oder
c) zwei der Attribute { first_name; last_name; company_name; title }
gesetzt sind.
Damit ist das Attribut is_distinguishable zwar funktional von allen anderen abhängig und damit redundant, hat aber durchaus seine Berechtigung, denn die Where-Klausel würde über 3 Zeilen gehen und verlangsamt die Abfrage auch maßgeblich.
Was würdet ihr machen - das Attribut wegschmeißen und als Where-Klausel formulieren oder es benutzen und damit die BCNF verletzen?
Gruß,
Amica
ich stehe vor folgender Frage: sollte ich die BCNF verletzen, wenn die funktionale Abhängigkeit zu komplex ist, um sie bei der Abfrage als triviale Where-Klausel zu formulieren?
Die betreffende Relation ist ein Anrufer:
Code:
id form_of_address_fkey => form_of_address.id (Anrede: Frau/Herr) address_fkey => address.id phone_number_fkey => phone_number.id first_name last_name company_name title (akad. Titel, z. B. "Prof. Dr.") is_distinguishable (siehe unten)
a) address_fkey oder
b) phone_number_fkey oder
c) zwei der Attribute { first_name; last_name; company_name; title }
gesetzt sind.
Damit ist das Attribut is_distinguishable zwar funktional von allen anderen abhängig und damit redundant, hat aber durchaus seine Berechtigung, denn die Where-Klausel würde über 3 Zeilen gehen und verlangsamt die Abfrage auch maßgeblich.
Was würdet ihr machen - das Attribut wegschmeißen und als Where-Klausel formulieren oder es benutzen und damit die BCNF verletzen?
Gruß,
Amica
Kommentar