2010-12-09 5 views
0

Ich musste kürzlich mit einer Anwendung arbeiten, bei der die meisten Tabellen sich nicht über Primärschlüssel referenzieren, sondern eher auf zusätzliche synthetische Felder angewiesen sind. Angenommen, es gibt die Tabellen Person (ID, Name, Token) und Pet (ID, Name, PersonToken). Eine Person kann viele Haustiere haben. Pet.personToken wäre ein Fremdschlüssel, der auf Person.token verweist.Verwendung zusätzlicher synthetischer Felder anstelle von Primärschlüsseln zu Referenztabellen

Nun, wenn ich das Schema erstellen würde, würde ich einfach Person.id verwenden, um Datensätze in diesem zu referenzieren. Mir wurde gesagt, dass die Anwendung "Token" -Spalten verwendet, um die Datenmigration zwischen verschiedenen Servern zu vereinfachen.

Meine Frage ist, ist das etwas ziemlich üblich oder ist es einfach komisches Design?

+0

Was ist der Datentyp der Primärschlüssel, also "ID" und wie vergleicht es mit dem "Tokens" -Datentyp? Was ist die Logik für die Erzeugung von 'id's im Vergleich zu den entsprechenden' token'? – InSane

+0

IDs sind normalerweise automatisch inkrementierte Ganzzahlen. Tokens sind oft Strings, die der Benutzer irgendwo manuell eingeben muss. –

Antwort

1

Ich kann nicht sagen, ob es in der Branche als Ganzes üblich ist, aber ich habe das Gleiche in einer Reihe von Anwendungen gesehen, die ich in der Vergangenheit gearbeitet habe.

Ich denke, es ist ein seltsames Design, das am Ende platziert wird, weil nicht genug Gedanken in die ursprünglichen Entwürfe des Systems eingearbeitet wurden.

1

Dies scheint einfach ein seltsames Design zu sein.

Ich habe so etwas noch nicht gesehen.

Dies scheint zu viel zu sein, und ich müsste die Index/Fremdschlüssel-Implementierungen sehen. Auch würde nicht ...

wie die Implementierung von Token-Generator, um zu sehen, wenn Sie die sagen, dass mir gesagt, wurde die Anwendung „Token“ Spalten aus Gründen der einfacheren Datenmigration zwischen verschiedenen Servern verwendet. ist dies für die Replikation? Oder einfach vom Test zur Entwicklung?

Alles in allem scheint dies nicht das beste Design, das ich je gesehen habe.

+0

Tokens sind in den meisten Fällen Strings (Varchars), die jedem Datensatz beim Erstellen manuell zugewiesen werden. Im Falle meines erfundenen Beispiels könnte Person.token etwas wie die SSN einer Person oder eine Ausweiskarte sein. Unter Umgebungen verstehen sie Dinge wie Entwicklung, Test und so weiter. –

+0

Trotzdem scheint das immer noch nicht der beste Ansatz zu sein ... –

Verwandte Themen