dknf für domain tables?

Hallo an Alle,
ich habe mehrere domain tables, viele andere Tabellen referenzieren diese. Nun frage ich mich welcher weg der bessere ist (DKNF oder per ID), da jede variante vor- & nachteile hat.
hoffe jemand kann mir den entscheidenden hinweis geben.

Gruß
Kratos

Da Maschinen die Arbeit erledigen sollen -> IDs
man muss es ihnen ja nicht noch schwerer machen als ohnehin schon ist :slight_smile:

“DKNF” ist für Theoretiker …

Beide Wege haben ihre Vor- und Nachteile.
Welchen Weg du wählst hängt ganz primär von deiner Anwendung ab und pauschal kann dir hier niemand eine Antwort darauf geben.


symbiont: komm schon, das kannst du besser! Statt einfach nur einen Spruch hier stehen zu lassen kannst du den sicherlich auch mit Argumenten unterlegen. Zeig uns, was du kannst …

Hinreichend gute Entscheidungen treffen

Das Verzetteln in Argumentationen überlass ich dann doch lieber Dir :slight_smile:
Wie er ja schrieb - Die Fürs und Widers kennt er bereits

Also bloß leere Sprüche, wie immer.

Der Originalposter hat nach Argumenten dafür oder dagegen gefragt und wenn du hier eine Meinung postest (nur für Theoretiker), dann hinterleg die bitte schön auch mit Argumenten.

Wow, das ging ja richtig schnell hier, super Forum. Danke schon mal.
Nur der richitge Hinweiß fehlt noch. :wink:
Von vorne weg, drückt bitte ein Auge zu falls ich irgendetwas dummes poste, beschäftige mich erst seit kurzem mit Datenbanken.
Zum Thema: Vor- & Nachteile kenn ich ein paar, obs alle sind weiß ich nicht (man findet im Internet nicht sehr viel über dknf). Die wichitgste Frage die ich mir stelle ist natürlich Performance. Auf der einen Seite natürlich mehr Daten in der Tabelle die die domain table referenziert, auf der anderen Seite muss nicht per join auf sie zugegriffen werden. Vielleicht gibts auch noch andere Kriterien die man berücksichtigen muss und deshalb hoffe ich das ihr mir helfen könnt Alles etwas besser zu verstehen.

Als kleines Beispiel damit meine Frage nicht zu allgemein ist: Ich habe fünf/sechs Kategorien die ich per create in die dafür vorgesehene Tabelle einfüge. Eine Produkt-Tabelle referenziert diese. Die Kategorien sollen dann beim Anlegen eines Produktes per select_feld ausgewählt werden.

Gruß
Kratos

weil Du es bist …

Ein praktisches Argument “dafür” brachte ich bereits - die Maschine. IDs erleichtern das Implementieren von Anwendungen und das Handling … Jedes DB-Framework kommt damit zurecht.

DKNF ist in den allermeisten Fällen “ünernormalisiert”. Will heißen - das macht nur in äußerst wenigen Anwendungsfällen Sinn - seine Frage war so allgemein, dass man genauso “allgemein” mit gutem Gewissen davon abraten kann - Es sei denn die Anwendung soll permanent neue Domains dazudefinieren können - oder Attribute sollen in der Anwendung “beliebig definierbar” sein. Da kann man sich aber auch überlegen, ob man für simple Domains nicht richtige Tables erzeugt. DKNF-Artiges wende ich z.B. an, um beliebige Attribute sequenzell in einer Table speichern zu können um z.B. Volltext-Implementierung “über alles” erleichtert - neben anderen Schweinereien - wie die bereits vorher genannte “Beliebigkeit”.

Wow, das ging ja schnell. Danke schon mal.
Nur der entscheidende Hinweiß war noch nicht dabei. :wink:
Eins von vorne weg: Drückt bitte ein Auge zu falls ich was dummes schreibe, beschäftige mich erst seit kurzem mit Datenbanken.
Zum Thema: Vor- & Nachteile kenne ich ein paar, obs alle sind weiß ich nicht (man findet nicht sehr viel im Internet über dknf). Das Wichtigste ist eigentlich Performance. Einerseits enstehen dadurch mehr Daten in der Tabelle die sie referenziert anderseits muss nicht per join auf sie zu gegriffen werden. Vielleicht müssen noch andere Kriterien berücksichtigt werden und da hoffe ich ja das ihr mir weiter helfen könnt.

Als kleines Beispiel damit meine Frage nicht zu allgemein ist: Ich habe fünf/sechs Kategorien die ich per create in die dafür vorgesehene Tabelle einfüge. Eine Produkt-Tabelle referenziert diese. Beim Anlegen eines Produktes soll eine Kategorie per select_feld ausgewählt werden.

Gruß
Kratos

Die Frage zielt also garnicht auf DKNF ab … du willst wissen, ob du die Kategorie selbst als natuerlichen Schlüssel verwenden, oder über eine ID referenzieren sollst.

Ja genau. Dachte das ist DKNF, da ja die ID wegfällt und der primary key der Name der Kategorie ist. Angewendet an Tabellen die sich kaum ändern.

Nicht ganz - bei der DKNF gibt man dem DomainKey selbst wieder einen Schlüssel - z.B. eine ID und referenziert darüber. … alles theoretischer Quark …

Überlege einfach was sich sinnvoll anfühlt - denke in Praktischen Begriffen wie “Stammdaten” - dann kommt auch was gescheites bei raus. Perfekte Lösungen gibt es kaum.

Für deine Kategorien würde ich einfach eine Tabelle wählen … denen eine ID verpassen - die referenzierst du in deinen Artikeln (mehr oder minder direkt - kommt auf die gewuenschte relation an). So bleibst du beim bewährten Paradigma (pff) mit IDs zu arbeiten - damit kommt jede Programmiersprache klar - deine Stammdaten sind besser zu handlen (stell Dir vor du musst mal nen Schreibfehler korrigieren) - und der Platzbedarf für Referenzen bleibt überschaubar - und - und - und

[LEFT]Aha, alles klar. Ich danke dir für die Erklärung und die Tipps.

Gruß
Kratos
[/LEFT]