Ich weiß, dass ich spät dran bin und die Frage bereits sehr gut beantwortet wurde, aber ich möchte meine Meinung zu Nr. 3 bezüglich der Voranstellung von Spaltennamen äußern.
Alle Spalten sollten mit einem Präfix benannt werden, das für die Tabelle, in der sie definiert sind, eindeutig ist.
Nehmen wir z. B. die Tabellen "customer" und "address" und verwenden wir die Präfixe "cust" bzw. "addr". Die Tabelle "customer" würde "cust_id", "cust_name" usw. enthalten. "address" würde "addr_id", "addr_cust_id" (FK zurück zum Kunden), "addr_street", etc. enthalten.
Als ich zum ersten Mal mit dieser Norm konfrontiert wurde, war ich strikt dagegen; ich hasste die Idee. Ich konnte die Vorstellung von all der zusätzlichen Tipparbeit und Redundanz nicht ertragen. Jetzt habe ich genug Erfahrung damit gemacht, um nie wieder zurückzukehren.
Dies hat zur Folge, dass alle Spalten in Ihrem Datenbankschema eindeutig sind. Es gibt einen großen Vorteil, der alle Argumente übertrumpft, die dagegen sprechen (meiner Meinung nach, natürlich):
Sie können Ihre gesamte Codebasis durchsuchen und zuverlässig jede Codezeile finden, die eine bestimmte Spalte berührt.
Der Nutzen von Nr. 1 ist unglaublich groß. Ich kann eine Spalte veralten lassen und weiß genau, welche Dateien aktualisiert werden müssen, bevor die Spalte sicher aus dem Schema entfernt werden kann. Ich kann die Bedeutung einer Spalte ändern und weiß genau, welcher Code umstrukturiert werden muss. Oder ich kann einfach feststellen, ob Daten aus einer Spalte überhaupt in einem bestimmten Teil des Systems verwendet werden. Ich kann gar nicht zählen, wie oft sich dadurch ein potenziell riesiges Projekt in ein einfaches verwandelt hat, und wie viele Stunden wir bei der Entwicklung eingespart haben.
Ein weiterer, relativ unbedeutender Vorteil ist, dass Sie Tabellen-Aliase nur verwenden müssen, wenn Sie einen Self-Join durchführen:
SELECT cust_id, cust_name, addr_street, addr_city, addr_state
FROM customer
INNER JOIN address ON addr_cust_id = cust_id
WHERE cust_name LIKE 'J%';
8 Stimmen
Ich denke, wir sollten den Plural für Tabellen und den Singular für Spalten verwenden.
7 Stimmen
Ich sehe eine Tabelle als "Speicher" mit mehreren Elementen, nicht als einzelne "Entität", daher nenne ich sie im Plural. Wenn ich Tabellen in Objekte umwandeln würde, würde ich die Objekte im Singular benennen. Dies ist nur meine persönliche Meinung.
4 Stimmen
@Tryinko Die Verwendung von ID überall ist die Hölle auf Erden für jeden, der mehrere Tabellen verknüpft. Der kleine Vorteil, dass man weiß, dass es sich um die PK handelt, wiegt auf keinen Fall den unglaublichen Ärger auf, die verdammte ID-Spalte in jeder verdammten Abfrage immer und immer wieder neu zu kalibrieren. Wenn Sie eine Möglichkeit wollen, PK in einer Tabelle zu kennzeichnen, machen Sie sie zur ersten Spalte. Auch die Angabe von FKs in den Namen von Spalten ist meiner Meinung nach ein weiteres böses Anti-Pattern.
2 Stimmen
Werfen Sie einen Blick auf diese Antwort .
1 Stimmen
Was die Groß- und Kleinschreibung angeht, schlage ich snake_case vor, damit Sie sich nicht um die Großschreibung von Akronymen kümmern müssen, wie es bei PascalCase der Fall ist. Beispiel: PHPVersion oder PhpVersion? In snake case heißt es eindeutig php_version, usw.
1 Stimmen
sqlshack.com/learn-sql-naming-konventionen fand dies hilfreich