1

Meine Datenbank enthält viele Spalten, die in allen Tabellen wiederverwendet werden, aber der Name der Spalte ändert sich.Wie identifizieren Sie identische Spalten mit unterschiedlichen Namen in Tabellen?

edit: als ein Beispiel: Wir sind in der Telekommunikation und beschäftigen sich mit der 10-stelligen Telefonnummer. Es wird über 100 von Tabellen verwendet, normalerweise mit einem anderen column_name für jede Tabelle, und der Datentyp und das Format der Spalte sind nicht konsistent (zB '123-456-7890', '1234567890', int 1234567890, 1800-123-456- 7890).

Für Training und Analyse möchte ich in der Lage sein, diese Duplikate mit anderen Namen zu verknüpfen oder zu identifizieren.

Wie kann ich das tun?

+1

Das klingt wie eine manuelle Aufgabe :( –

+0

Können Sie ein Beispiel geben, was Sie tun? Ich nehme an, Sie haben einen Primärschlüssel oder Fremdschlüssel-Setup für jede Tabelle? – GabrielVa

+0

Wie viele Daten insgesamt? Weniger als 20 GB? Weniger als 2 GB? – Jeutnarg

Antwort

0

Beispiel: Ich arbeite in der Telekommunikation und wir verwenden die Telefonnummer in vielen verschiedenen Möglichkeiten. Der Datenpunkt (die Telefonnummer) in buchstäblich 100s von Tabellen wiederverwendet wurde, und es Dutzende von verschiedenen Spaltennamen

Ok hat, nein, SQL Server diese Spalten automatisch für Sie nicht identifizieren können.

Wenn Sie Regeln zur programmgesteuerten Identifizierung einer Telefonnummernspalte basierend auf verfügbaren Metadaten (z. B. in sys.columns) finden, können Sie eine Abfrage schreiben, die alle diese Spalten erhält.

Wenn Sie Ihre Spalten durchlaufen müssen und manuell entscheiden, welche Telefonnummernspalten verwendet werden, können Sie diese Informationen manuell in einer Metatabelle Ihres eigenen Designs speichern. Etwas wie:

TableName ColumnName StandardName 
Table1  Phone   PhoneNumber 
Table2  HomePhone  PhoneNumber 
Table2  WorkPhone  PhoneNumber 

Wo TableName und ColumnName die tatsächlichen Namen sind, und StandardName ist ein Wert, den Sie manuell zuweisen, dass der gleiche „Standard“ Name für alle „identisch“ Spalten sein.

Und dann könnte diese Meta-Tabelle für Referenz, Training und Analyse verwendet/abgefragt werden.

0

Wenn Fremdschlüssel mit einer Referenzbedingung deklariert wurden, sollte Ihnen das zumindest bei den Schlüsselfeldern helfen.

Manchmal, aber nicht immer, hat der Datenbank-Designer benutzerdefinierte Typen verwendet, um ein bestimmtes Datenformat einmal anzugeben, anstatt die gleiche Definition in vielen Spalten neu zu erstellen. Wenn dies der Fall ist, dann haben mehrere Tabellen, die sich auf denselben UDT beziehen, alle die gleiche Form, obwohl nicht notwendigerweise dieselbe exakte Semantik erforderlich ist.

Eine kurze Studie der Systemtabellen sollte Ihnen zeigen, wie Sie sie abfragen und nach dem UDT-Namen gruppieren. Das sollte Spalten aber die gleichen Daten zusammenbringen.

+0

Das ist eine gute Idee, aber ich denke nicht, dass es helfen wird, weil unser Datenbankdesign nicht mit viel Spezifität gemacht wurde. Als Beispiel verwenden wir die Telefonnummer über Hunderte von Tabellen. Dies kann ein Varchar sein, ein int, eine Verkettung mit anderen Feldern ... Und darüber hinaus haben wir fast immer einen anderen Namen für die Spalte in jeder Tabelle. Ich habe nach Wegen gesucht, solche Duplikationen derselben semantischen Spalte zu identifizieren, und habe sie nicht gefunden. Ich möchte eine Referenztabelle manuell erstellen, um diese Fälle zu identifizieren. – ColinMac

+1

Klingt richtig. In den schlechten Zeiten vor den Datenbanken mussten die Leute manuell Datenwörterbücher erstellen, um den verwirrten Raum in den Dateien zu verstehen. Das scheint wieder zu kommen, da mehr und mehr ältere Datenbanken untersucht werden, und es wurde herausgefunden, dass sie ohne integrierte Datenverwaltung entworfen wurden. –

+0

Genau das ist bei der Arbeit der Fall. Wir arbeiten mit vielen Legacy-Systemen durch jahrzehntelange Akquisitionen ... – ColinMac