AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Benennung von Spalten und Tabellen in der Praxis
Thema durchsuchen
Ansicht
Themen-Optionen

Benennung von Spalten und Tabellen in der Praxis

Ein Thema von Der schöne Günther · begonnen am 10. Jan 2014 · letzter Beitrag vom 11. Jan 2014
Antwort Antwort
Benutzerbild von sx2008
sx2008

Registriert seit: 15. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#1

AW: Benennung von Spalten und Tabellen in der Praxis

  Alt 10. Jan 2014, 16:03
Regel 1: nur Buchstaben, Ziffern und den Unterstrich verwenden (keine Umlaute, Leerzeichen oder Sonderzeichen)
Regel 2: ein Bezeichner darf nicht mit einer Ziffer beginnen
Regel 3: ein Bezeichner darf kein reserviertes Wort des DBMS sein (wie z.B. AND, USER, INDEX, TIME, CHAR, INSERT, ...)
Regel 4: max. 64 Zeichen pro Bezeichner (die Obergrenze lässt sich nicht so scharf definieren; man sollte unterhalb der Genze der meisten DBMS bleiben. Mit max 32 Zeichen ist man auf der sicheren Seite wenn man veraltete DBMS mal ausnimmt)
Regel 5: wie Regel 3 nur sollte man ALLe gängigen DBMS berücksichtigen damit man bei einer Portierung auf ein anderes DBMS nicht in Schwierigkeiten gerät

Im Anhang ist eine Unit mit der man diese Regeln überprüfen kann.
Angehängte Dateien
Dateityp: pas UCheckDesignators.pas (11,9 KB, 16x aufgerufen)
fork me on Github
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.212 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: Benennung von Spalten und Tabellen in der Praxis

  Alt 10. Jan 2014, 16:09
Danke für die Hilfe soweit, das hat mir alles gut weitergeholfen
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#3

AW: Benennung von Spalten und Tabellen in der Praxis

  Alt 10. Jan 2014, 17:47
Ganz besonders kreativ darfst Du Sein wenn Du Access verwendest "Des schönen Günters erste Tabelle" ist da durchauszulässig. Ob Du dann allerdings über ADO,ODBC,JET.... zugreifen kannst steht auf einem ganz anderen Blatt!
Darum unbedingt die vorgenannten Regeln beherzigen.
Ebenfalls nicht unproblematisch können sein % _ * &. (werden als Wildcards/Escapekeys verwendet!)

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Alt 10. Jan 2014, 17:52     Erstellt von Smut
Dieser Beitrag wurde von TBx gelöscht. - Grund: Verdacht auf SPAM und den damit verbundenen verschwenderischen Umgang von wertvollen Bits und Bytes
nahpets
(Gast)

n/a Beiträge
 
#5

AW: Benennung von Spalten und Tabellen in der Praxis

  Alt 10. Jan 2014, 18:19
'_' ist auch böse??
Nach meiner bisherigen Erfahrung nicht, das einzige Zeichen, außer Buchstaben und Ziffern, dass wir in Tabellen-, Spalten, Funktions-... -namen nutzen.
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.212 Beiträge
 
Delphi 10 Seattle Enterprise
 
#6

AW: Benennung von Spalten und Tabellen in der Praxis

  Alt 10. Jan 2014, 19:09
Den Unterstrich habe ich jetzt auch schon so oft gesehen, der höchstwahrscheinlich nirgendwo.
  Mit Zitat antworten Zitat
Furtbichler
(Gast)

n/a Beiträge
 
#7

AW: Benennung von Spalten und Tabellen in der Praxis

  Alt 10. Jan 2014, 19:11
Felder dürfen auch Leerzeilen und '_' beinhalten, nur ob das sinnvoll ist, ist die Frage (und ob das ANSI SQL konform ist, weiß ich auch nicht). Aber wozu? Na, Ich verwende Spalten mit Leerzeichen manchmal in Spaltenüberschriften von Views, damit im Report (meistens eine Direktanbindung von EXCEL an die DB) gleich der richtige Name erscheint: Kunden sind ja diesbezüglich ziemlich penetrant.

Es gibt Nomenklaturen, die mit einem Prefix pro Feldnamen arbeiten: Folgende Regeln habe ich für meine Projekte vor 20 Jahren eingeführt und mach das heute noch so:
  1. Der Tabellenname ist ein Wort als Einzahl, also 'Customer' nicht 'Customers'.
  2. Jede Tabelle bekommt einen Prefix aus 2 Buchstaben, bei sehr großen Projekten auch drei. Der Prefix soll eine Gedächtnisstütze für den Tabellennamen sein, also z.B. 'cu' bei 'Customer' (aber eben nicht 'xy'), 'pr' für 'Product' etc.
  3. Jedem Feld ist der Prefix vorangestellt, somit ist jedes Feld eindeutig innerhalb der DB. Der Name des Kunden ist dann z.B. 'cuName'. Ausnahme: Fremdschlüssel, die heißen so wie die PK-Spalte der referenzierten Tabelle. Wenn es also in der Customer-Tabelle einen Foreign-Key in die Adressen-Tabelle gibt, dann heißt dieser einfach 'adID' (siehe auch nächster Punkt).
  4. Jede Tabelle hat einen Primary Key mit einem autogenerierten Wert. Der Name dieser Spalte ist '<Prefix>ID', z.B. 'cuID' für die PK-Spalte der Customer-Tabelle.
  5. Die Reihenfolge der Spalten ist: PK,FK,Beschreibungen,Daten,Optionen
Die meisten ORM mit Database-First erlauben es, die Prefixe für die Erstellung der Eigenschaftsnamen wegzuschnippeln, sodaß meine Customer -Klasse anständige Propertienamen hat, also 'ID','Name' etc. Der FK wird eh durch den Referenztabellennamen ersetzt.

Bisher habe ich noch kein Projekt mit Code-first angefangen, vermutlich, weil ich mit dem DB-Design großalt geworden bin.

Mit diesen Prefixen kann man auf die explizite Verwendung von Aliasnamen in der Feldliste von Queries verzichten und es erleichtert Joins. So sieht das dann z.B. aus

Code:
Select cuID, cuName, adStreet, adCity
from Customer c
     join Address a on c.adID = a.adID
where cName like 'Mül%'
Wenn man sich an die Prefixe gewöhnt hat, ist dann so eine Query sehr leicht zu lesen, weil man nicht erst schauen muss, welche Tabelle den den Alias 'c' hat. Ok, man kann auch in allen Queries immer den Alias 'cu' nehmen, aber sagt das mal dem 'Neuen', der zur Einführung neue Reports bauen soll...
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#8

AW: Benennung von Spalten und Tabellen in der Praxis

  Alt 10. Jan 2014, 22:45
Die Lesbarkeit leidet aber auch nicht bei
SQL-Code:
Select cu.ID, cu.Name, ad.Street, ad.City
from Customer cu
     join Address ad on cu.AddressID = ad.ID
where cu.Name like 'Mül%'
für mich sogar besser lesbar.

Aufwendig ist natürlich das Verbinden von Tabellen mit gleichlautenden Spaltennamen.
Aber schreibfaul sollte man nicht sein und bis zu einem gewissen Grad kann man sich auch ein Tool schreiben, was die Abfragen nach der gewünschten Regel schreibt.

SQL-Code:
Select
  cu.ID Customer_ID, // oder cuID
  cu.Name Customer_Name,
  ad.Street Adress_Street,
  ad.City Address_City
from Customer cu
     join Address ad on cu.AddressID = ad.ID
where cu.Name like 'Mül%'
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:11 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz