Frage

Wissen Sie, wie man die Namenskonventionen in der MySQL-Datenbank verwendet?Ich habe eine MySQL-Beispieldatenbank heruntergeladen.

Hier ist es:

CREATE DATABASE IF NOT EXISTS classicmodels  DEFAULT CHARACTER SET latin1;
USE  classicmodels ;
DROP TABLE IF EXISTS  customers ;
CREATE TABLE  customers  (
   customerNumber  int(11) NOT NULL,
   customerName  varchar(50) NOT NULL,
   contactLastName  varchar(50) NOT NULL,
   contactFirstName  varchar(50) NOT NULL,
   phone  varchar(50) NOT NULL,
   addressLine1  varchar(50) NOT NULL,
   addressLine2  varchar(50) default NULL,
   city  varchar(50) NOT NULL,
   state  varchar(50) default NULL,
   postalCode  varchar(15) default NULL,
   country  varchar(50) NOT NULL,
   salesRepEmployeeNumber  int(11) default NULL,
   creditLimit  double default NULL,
  PRIMARY KEY  ( customerNumber )
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

Bearbeiten:

Was ich bevorzuge:

    CREATE DATABASE IF NOT EXISTS classic_models;
    USE  classic_models ;
    DROP TABLE IF EXISTS  customers ;
    CREATE TABLE  customers  (
       customer_number  int(11) NOT NULL,
       customer_name  varchar(50) NOT NULL,
       -- or i define the column name this way:
       name varchar(50) NOT NULL, -- NOT customerName and NOT customer_name
       PRIMARY KEY  ( customer_number )
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

Habe ich recht?

Ich empfehle einen Artikel: SQL-Konvention Von Faruk ateaktion Haben Sie hier einen Rat, um Konventionen hier zu benennen?

War es hilfreich?

Lösung

Sie sind nie richtig (oder falsch) über Namenskonventionen. Wie Sie von Arbeitgeber zu Arbeitgeber gehen, werden Sie verschiedene Konventionen an jedem Arbeitsplatz begegnen, und Sie werden immer anpassen. Sie haben bereits gesagt, was Sie bevorzugen, also, wenn auf Ihren eigenen Projekten arbeiten, einfach, dass verwenden, außer Ihrem System sonst oben auf etwas gebaut wird, dass nutzt konsequent eine andere Konvention. Dann würde ich sagen, Sie wäre besser aus, dass die Konvention in diesem Projekt mit. Konsistenz> Vorzug.

Andere Tipps

Bitte bleiben Sie ruhig, wenn Ihnen diese Idee nicht gefällt.
Aber hast du darüber nachgedacht? Spaltennamen unabhängig von Tabellennamen ?

Semantik

Die Semantik wäre:
„Wenn zwei Felder startDate und endDate heißen, dann bezeichnen sie die Daten, die den für die aktuelle Tabelle berücksichtigten Zeitraum bestimmen.“

Da diese Semantik normalerweise tabellenübergreifend ist, ist es gut, einen einheitlichen Namen zu haben.

Bedenken hinsichtlich der Umsetzung

In der Datenbank

Vielleicht sagen einige Leute, dass sie es immer noch verstehen, wenn diesem gemeinsamen Spaltennamen der Tabellenname vorangestellt wird.Aber in mehreren Anwendungsfällen wurden wir davon gebissen und bevorzugen:

  • Um Meta-Anfragen zu verwenden (z. B.Erstellen Sie eine Anfrage zum Lesen aller Spalten mit dem Namen startDate oder suchen Sie alle Tabellen, die einige Referenzdaten verwenden.) Effizient sind feste Namen viel einfacher.
  • Gespeicherte Prozeduren oder Trigger können auch einfacher wiederverwendet werden, wenn die Namen festgelegt sind.

ORM

ORM ist wirklich gut darin, ein Feld einmal zu definieren und dann Unterklassen zu erstellen, die dieses Feld automatisch haben (Komposition wird ebenfalls verwendet).Die Datenbank hat keine Unterklassen, aber

  • Wenn die verschiedenen den Klassen zugeordneten Tabellen denselben Namen für Spalten verwenden, ist alles natürlich.
  • Andernfalls müssen Sie die Tatsache, dass das Startdatum im Code in der Datenbank als XXXStartDate oder XXX_start_date implementiert ist, manuell codieren (oder deklarieren).

Aliase erforderlich

Bei einigen Anfragen handelt es sich um Selbstverknüpfungen, die dieselbe Tabelle zweimal verknüpfen und daher in jedem Fall die Verwendung von Aliasnamen für Tabellennamen erfordern.

Die meisten anderen handcodierten Anfragen verbinden mehrere Tabellen.Diese Benennungsrichtlinie würde die Wahrscheinlichkeit erhöhen, dass zwei Spalten denselben Namen haben, sodass Aliase verwendet werden müssten.Ist das ein Problem?Ich denke, das liegt nicht daran, dass:

  1. Die Verwendung von Aliasnamen wird ohnehin oft empfohlen und in Betracht gezogen gute Übung.
  2. Die Verwendung von Aliasen ermöglicht in beiden Fällen a konsistenter Codierungsumgebung.
  3. Die Verwendung von Aliasen bietet gegenüber Tabellennamen einige Vorteile:
    A.Kann zulassen lange und klare Tabellennamen, einschließlich eines Präfixes zum Gruppieren der Tabellen nach „Modulen“, da in Anfragen ein kürzerer Alias ​​verwendet werden kann.
    B.Während für alle Module aller Anwendungen, die auf die Datenbank zugreifen, ein Tabellenname festgelegt ist, können Anwendungen oder Module in ihren Anfragen unterschiedliche Aliase verwenden, um die Bereitstellung zu ermöglichen semantischer in den Anfragen (genau wie die Wahl, eine Variable im Code zu benennen, mit denselben Regeln).

beiden Namenskonventionen Sie gezeigt haben, sind völlig akzeptabel. writingLikeThis ist einfacher zu tippen, aber writing_like_this ist leichter zu lesen. Das Wichtigste ist die Konsistenz. Wählen Sie eine Namenskonvention und bleiben Sie dabei.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top