2017-05-24 3 views
0

Tabellennamen, Spaltennamen, Indexnamen usw. In MySQL (und MariaDB) haben diese eine maximale Länge von 64 Zeichen. Wie kann ich das erhöhen?Wie kann die maximale Länge des Bezeichners erhöht werden?

Duplizieren hier: Maximum length of a Column name in MySQL

MySQL docs hier: https://dev.mysql.com/doc/refman/5.7/en/identifiers.html

MariaDB docs hier: https://mariadb.com/kb/en/mariadb/identifier-names/

Störende Antwort: Wechseln Sie zu PostgreSQL und recompile.

Hintergrund: Spaltennamen, denen Tabellennamen vorangestellt sind, werden mit Tabellennamen kombiniert, denen die Namen der Unterprojekte vorangestellt sind. Gewöhnlich sind Projektnamen kurz, aber zwei kollidieren gerade und mindestens einer von ihnen wird etwas länger.

Beispiel:

/* One MySQL Instance for in-house applications called "MySQL" on port 3306. 
* One MySQL schema (database/catalog) per application "intranet_website". 
* Several sub-project prefixes per application, example: "finance_" 
* Individual table-name: "invoice" 
* Specific column-name: "TotalAmount" ****/ 
CREATE TABLE intranet_website.finance_invoice_tbl (
    -- ... 
    finance_invoice_TotalAmount DECIMAL(20,2), -- 27 chars 
    -- ... 
) 

Dies kann übertrieben erscheinen, aber bedenken Sie Java naming conventions, oder auch nur .Net.

com.companyname.intranetwebsite.finance.invoice.getTotalAmount() // 63 chars 
IntranetWebsite.Finance.Invoice.GetTotalAmount() // 47 chars 

Hinweis: Es ist nicht meine Wahl, Spalten mit Tabellennamen zu versehen. Es gibt jedoch einige Fälle, in denen dies für Joins ohne erneute Joins derselben Tabelle nur geringfügig nützlich ist. Ich kenne mindestens eine konkrete Instanz, wo Code-Schreiben SQL-Code aufgrund dieser Präfixe viel einfacher zu implementieren war.

+1

Es ist eine harte Grenze, es kann nicht erhöht werden. Wenn es sein könnte, würde die Dokumentation, die Sie in der Frage verlinkt haben, die Konfigurationswerte angeben, um dies zu tun. – Adrian

+0

Dies ist keine Antwort auf Ihre Frage, aber können Sie keine separate Datenbank pro Projekt erstellen und sie entsprechend benennen?Dies würde mindestens Projektnamen aus der Gleichung nehmen – Kitet

+0

Sie können es nur tun, indem Sie mysql Quelle herunterladen, ändern Sie die notwendigen Teile des Codes, kompilieren und machen. (Wenn Sie können :)) – abeyaz

Antwort

3

Es ist wahrscheinlich nicht möglich, wie andere bereits in Kommentaren vorgeschlagen haben.

Aber sollten Sie nicht müssen dies tun.

Spaltennamen mit Tabellennamen voran sind völlig unnötig, da SQL bietet die tablename.columname Syntax, die Sie verwenden können, um zwischen Spalten zu unterscheiden. Tatsächlich würden die meisten Programmierer, die ich kenne, von ganzem Herzen zustimmen, dass das Präfix jedes Spaltennamens mit dem Namen der Tabelle, zu der es gehört, sehr ärgerlich sein würde.

Tabellennamen, die mit den Projektnamen vorangestellt sind, sind ebenfalls nicht erforderlich, da dies für Kataloge/Schemas gilt. Außerdem unterstützen die meisten RDBMS die catalogname.tablename Syntax. Wenn Sie über mehrere Projekte verfügen, die Tabellen gemeinsam nutzen, und unterstützt Ihr RDBMS keine katalogübergreifenden Beziehungen, dann würde ich vorschlagen, dass Sie ein Projekt-Refactoring-Problem oder ein RDBMS-Problem haben, kein Tabellenbenennungsproblem.

Auch wenn Sie denken, dass 64-stellige Bezeichner kurz sind, sollten Sie Oracle versuchen. Oh, der Spaß, den du haben wirst!

+0

Spaltenpräfixe war ein Kampf, den ich gekämpft habe, um an diesem Projekt teilzunehmen. Ich habe verloren. Dies ist eine einzelne Anwendung mit fast 300 Tabellen und etwa einem Dutzend "Unterprojekten". Ich habe tatsächlich nach Unterprojekt-Präfixen gedrängt, insbesondere angesichts der Möglichkeit, eine einzige Datenbankinstanz mit anderen Anwendungen im Unternehmen zu teilen. Ich wollte Schemata/Kataloge auf sehr hohem Niveau verwenden. Eine pro Anwendung mit einigen "gemeinsamen" Schemas, vielleicht einer pro Abteilung. Ich nehme an, dass die Kataloge selbst Präfixe verwenden könnten ... Ich mag immer noch nicht die Idee von fast 100 Katalogen. – ebyrob

+0

@ebyrob - Zeit, um Ihren Lebenslauf aufzuwärmen? –

+0

@RickJames Wenn ich jedes Mal, wenn jemand eine kleine Stil-Richtlinie diktierte (nervige Präfixe), ins Boot sprang, würde ich nie etwas erreichen. Im Allgemeinen ist es wahrscheinlich meine Ausbildung, die etwas Aufmerksamkeit benötigt. Oder wenn ich es falsch mache, HILFE! – ebyrob

Verwandte Themen