2017-01-31 2 views
0

Korrigieren Sie mich, wenn ich falsch liege, aber mein Verständnis ist, dass in MSSQL Unterstrukturen einer Datenbank wie Ansichten, Schemata und Tabellen mithilfe Objektnotation verwiesen werden können wie zum Beispiel:Ist es gute Praxis, Punkte innerhalb Tabellennamen in MySQL zu verwenden

Database.Schema.Table.Column

Jedes dieser Objekte ich glaube, ihre eigenen Eigenschaften hat.

Ich muss die Struktur einer MSSQL DB in MySQL replizieren und bin mir nicht sicher, was die beste Praxis ist.

ich mit der folgenden Namenskonvention über das Erstellen von Tabellen in MySQL denke:

Database 
|---SubStructureX.Table 
| |---Column_A 
| |---Column_B 
|---SubStructureY.Table 
| |---Column_C 
| |---Column_D 
| 
| 

Daher ist eine MySQL-Abfrage könnte wie folgt aussehen:

SELECT Column_A, Column_B FROM SubStructureX.Table 

Kurz gesagt, "SubstructureX.Table" ist nur ein Tabellenname, der einen Punkt enthält. Ich würde dies für die Benutzerfreundlichkeit während der Replikation der MSSQL-Struktur tun. Es ist mir egal, ob die Dinge vor und nach dem Punkt keine Objekte in MySQL sind.

Ist das eine gute MySQL-Praxis?

+0

Planen Sie "Schemas" in 'MSSQL' zu erstellen? –

+0

Die MSSQL-Datenbank wurde bereits erstellt und enthält Schemata und Ansichten. Ich versuche, die Struktur in MySQL zu replizieren. Ich denke, ich könnte auch fragen, ob MySQL Schemata und Views unterstützt, aber ich habe wirklich keine Verwendung für diese Strukturen, nachdem ich die DB auf MySQL portiert habe. Lassen Sie mich wissen, wenn das Sinn macht, bekomme ich vielleicht nicht die richtige Terminologie. –

Antwort

2

In MySQL? Nein, ich würde meinen, dass es keine gute Methode ist, Punkte in Tabellennamen überhaupt zu verwenden. Ich würde denken, dass es eine sehr schlechte Übung ist. Der Punkt ist der Referenzoperator in SQL. Das heißt, wenn Sie auf eine Spalte beziehen möchten vollständig qualifizierte Notation, die Sie tun so wie folgt aus:

SELECT Table.Column_A ... 

Oder mit Graviszeichen zitiert:

SELECT `Table`.`Column_A` ... 

Nun stellen Sie sich vor Ihrem Tisch StructureX.Table gestattet . Genau wie bei einem Leerzeichen müssen Sie das zitieren, um es zu umgehen, weil Sie nicht wollen, dass MySQL denkt, der Punkt sei ein Operator. Das heißt, Ihr SQL wie folgt auszusehen hat:

SELECT `StructureX.Table`.Column_A ... 

Oder mit Graviszeichen zitiert:

SELECT `StructureX.Table`.`Column_A` ... 

Heißt das nicht aussehen wie ein Syntaxfehler für Sie? Wie vielleicht es soll so sein:

SELECT `StructureX`.`Table`.`Column_A` ... 

Dies wäre ein Alptraum zu erhalten und als Systemanalytiker würde ich jede Anwendung oder Entwickler hassen, die diese Nomenklatur auf mich zugefügt. Es bringt mich dazu, meine Augen auszumerzen.

Microsoft SQL Server ist anders, weil es mehrere Schemas innerhalb einer einzigen Datenbank unterstützt, während MySQL Schema als Synonym für Datenbank behandelt. In MS SQL Server sind schemas Auflistungen von Objekten, und Sie können sie verwenden, um Ihre Tabellen zu organisieren, oder Sicherheit für Tabellen als eine Gruppe anwenden. Das Standardschema ist dbo, weshalb Sie das so oft aufgelistet sehen. In MS SQL Server-Syntax, ist diese:

SELECT [StructureX].[Table].[Column_A] ... 

Mittel innerhalb der aktuellen Datenbank, das Schema mit dem Namen StructureX, Tabelle Table und Spaltennamen Column_A benannt. MS SQL Server unterstützt tatsächlich eine four part name, mit dem vierten Teil ist der Datenbank:

SELECT [MyDatabase].[StructureX].[Table].[Column_A] ... 

Hier MyDatabase ist der Name der Datenbank.

Derselbe Stil funktioniert in MySQL, außer Sie müssen daran denken, dass Schema und Datenbank synonym sind. So gibt dieses:

SELECT `StructureX`.`Table`.`Column_A` ... 

Würde bedeuten Datenbank StructureX, Tabelle Table und Spalte Column_A.

+0

Hier habe ich versucht zu gehen. Verwenden Sie anstelle des Punktes einen Unterstrich im Tabellennamen? Ich gehe davon aus, aber ich möchte nur die Meinungen anderer hören. Also in MSSQL hätte ich DB.Schema.Table und ich könnte Tabellen in MySQL als DB erstellen -> Schema_Table, wobei "Schema_Table" nur eine normale MySQL-Tabelle ist. –

+0

@Charlie Ja, ein Unterstrich wäre vollkommen in Ordnung. Ich arbeite mit mehreren Systemen, die eine kurze Abkürzung für den Bereich verwenden, mit dem die Tabelle am Anfang der Tabelle in Beziehung steht (normalerweise 2-4 Zeichen), die helfen, Tabellen in Gruppen zu organisieren. Es macht * viel * einfacher, verknüpfte Tabellen zu finden. –

0

Ich kann ja sagen:

Aber statt Tabellennamen zu verwenden, machen Sie eine Tabelle einige Alias ​​wie diese,

wählen a.column1 von Yourtable als ein

Verwenden Sie Tabelle alias ist eine gute Übung.

+0

Die Frage bezieht sich auf die beste Vorgehensweise für die Namenskonvention von MySQL-Tabellen, nicht für die Abfrage von Tabellen. Wenn Sie die Abfrage oben als Beispiel verwenden, wäre dies eine gute Übung: SELECT spalte1 FROM a.yourTable AS aTableAlias ​​ –

+0

Ihre Frage sagte mit "dot (.)", Soweit ich weiß, mit "dot (.)" Scheint zu sein Ein Aliase also auch mit Namenskonvention. Es hängt alles von dir ab. –

+0

Ich wollte die Verwendung von Punkten (.) Als Teil eines Tabellennamens wie This.Is.One.Table –

Verwandte Themen