Namenskonventionen für Datenbanken, Tabellen und Spalten [geschlossen]
-
13-09-2019 - |
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?
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:
- Die Verwendung von Aliasnamen wird ohnehin oft empfohlen und in Betracht gezogen gute Übung.
- Die Verwendung von Aliasen ermöglicht in beiden Fällen a konsistenter Codierungsumgebung.
- 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.