|
|
|
Ein praxiserprobter Vorschlag zur Vergabe von Objektnamen in relationalen Datenbanken.
|
|
|
Eine stringent eingehaltene Namenskonvention für Datenbankobjekte sollte in jedem Projekt eine Selbstverständlichkeit sein. Sicherlich gibt es unzählig viele Möglichkeiten eine entsprechende Namenskonvention zu vereinbaren und ganz sicher ist keine die einzig Wahre. Eine Namenskonvention sollte aber den Anforderungen ihrer individuellen Anwendung angepaßt sein. Somit soll die hier vorgestellte Namenskonvention auch nur ein Ausgangspunkt für eine individuelle Weiterentwicklung sein.
Folgende Anforderungen sollen soll die hier vorgestellte Namenskonvention erfüllen:
-
Objektnamen (insbesondere Spaltennamen) sollen über die gesamte Datenbank hin eindeutig sein.
-
Die Zugehörigkeiten von Objekten zu ihren "besitzenden" Objekten (z.B. Spalten zu Tabellen) soll erkennbar sein.
-
Der Objektname, der bei einigen Datenbanken noch auf 32 Zeichen begrenzt ist, soll neben einen "sprechenden" Namen auch möglichst viel über die "Art" des Objekts aussagen.
-
Und nicht zuletzt soll das System leicht zu handhaben sein.
|
|
|
Alle Namen werden einheitlich in Kleinbuchstaben geschrieben.
|
|
|
Die Tabellennamen (bzw. Viewnamen) bestehen aus einem Zeichen für die Tabellenart, gefolgt von einem 3-stelligem Prefix und einer durch ein Unterstrich abgetrennter Klartextbeschreibung. Darüberhinaus können spezielle Tabellen auch noch einen durch einen Unterstrich getrennten Postfix, der Auskunft über die Datenart gibt, haben:
|
apre_name_post
a
|
:
|
t
|
=
|
Tabelle
|
v
|
=
|
View
|
h
|
=
|
History-Tabelle
|
a
|
=
|
Archive-Tabelle
|
|
|
pre
|
:
|
Eindeutiger Prefix, bestehend aus 3 Buchstaben. Dieser Prefix wird den Spaltennamen vorangestellt, um hierüber die Spaltennamen eindeutig zu halten. Der Prefix an sich muß daher über alle Tabellen eindeutig sein
|
|
name
|
:
|
Name, der den Inhalt der Tabelle bezeichnet (Wörter durch '_' getrennt)
Bei Assign-Tabelle (n:m-Beziehungen) wird der Name aus den beiden Prefix der verbundenen Tabellen, getrennt mit "_", gebildet.
|
|
(post)
|
:
|
assign
|
=
|
Assign-Tabelle (n:m-Beziehungen)
|
dim
|
=
|
Dimensionstabellen eines STAR-Schemas
|
value
|
=
|
Wertetabellen eines STAR-Schemas
|
interface
|
=
|
Interfacetabellen
|
import
|
=
|
Importtabellen
|
type
|
=
|
Typendefinitionen
|
class
|
=
|
Klasendefinitionen
|
|
|
|
Beispiele:
|
|
tuse_user
|
|
Eine Tabelle mit User-Informationen
|
|
tper_user_permissions
|
|
Eine Tabelle mit User-Berechtigungen
|
|
tcud_customer_dim
|
|
Eine Dimensionstabelle mit Kundendaten
|
|
tupa_use_per_assign
|
|
Eine Assigntabelle zwischen User- und Berechtigungen-Tabelle
|
|
vrda_reportdate
|
|
Eine View mit Reportdatum
|
|
|
|
Den Spaltennamen wird der 3-stellige Tabellen-Prefix (gefolgt von einem Unterstricht) vorangestellt. Desweiteren sind bestimmte Spaltennamen bestimmten Inhalten zugeordnet:
|
pre_id
|
:
|
ID's
|
|
pre_label
|
:
|
Labels (in der Regel in einer Tabelle eindeutig)
Datentyp
|
:
|
varchar(16)
|
varchar(32)
|
varchar(64)
|
varchar(128)
|
|
|
pre_description
|
:
|
Allgemeine Beschreibungen
Datentyp
|
:
|
varchar(64)
|
varchar(128)
|
varchar(256)
|
|
|
pre_date
|
:
|
Datumsfeld
Datentyp
|
:
|
date (datetime)
|
|
|
pre_datetime
|
:
|
Datumsfeld mit Zeitanteil
|
|
|
Beziehen sich Spalten einer Tabelle (Forgein Keys) auf andere Spalten anderer Tabellen, dann wird dem Original-Spaltennamen der Prefix der Tabelle zugeordnet. So kann sofort die Referenztabelle an dem Spaltennamen erkannt werden.
Beispiel:
|
|
tupa_use_per_assign
|
|
Eine Assigntabelle zwischen User- (tuse_user) und Berechtigungen-Tabelle (tper_user_permissions)
|
upa_use_id
|
|
|
int
|
|
Referenz auf Spalte use_id in Tabelle tuse_user
|
upa_per_id
|
|
|
int
|
|
Referenz auf Spalte per_id in Tabelle tper_user_permissions
|
|
|
|
|
Views bekommen ihren eigenen dreistelligen Prefix. Den Spaltennamen der Views wird dieser Prefix, getrennt durch ein "_" vorangestellt. Somit setzt sich der Spaltenname einer View zusammen aus dem Prefix der View, dem Prefix der Quelltabelle und dem Klartextnamen:
|
create view
vpre_ViewName
as select
pre_pre_ColName as pre_ColName
from
tpre_TableName
pre
|
:
|
Prefix der View
|
|
pre
|
:
|
Prefix der Tabelle
|
|
|
Beispiel:
|
|
create view
|
|
|
vusp_user_permissions
|
|
|
as select
|
|
|
use_name as usp_use_name,
|
|
|
per_permission as usp_per_permission
|
|
|
from
|
|
|
tuse_user,
|
|
|
tupa_use_per_assign,
|
// Assigntabelle
|
|
tper_user_permissions
|
|
|
where
|
|
|
upa_use_id = use_id and
|
|
|
upa_per_id = per_id
|
|
|
|
|
Der Name für Indexe auf einzelne Spalten besteht aus dem Prefix 'idx_' und dem Spaltenname:
|
create unique index
idx_pre_ColName
on
tpre_TableName (pre_ColName)
|
|
Beispiel:
|
|
Der Name des Index auf der Spalte use_name lautet idx_use_name
|
Besteht der Index aus mehreren Spalten, wird der Name aus den Prefix 'idx_', dem Tabellen-Prefix und einer Aufzählung der Spaltennamen (getrennt durch '_') zusammengesetzt:
|
create unique index
idx_pre_ColName1_ColName2_ColName3
on
tpre_TableName (pre_ColName1, pre_ColName2, pre_ColName3)
|
|
Wird die Aufzählung der Namen zu lang oder hat der Index eine spezielle Bedeutung, dann kann anstelle der Aufzählung der Spaltennamen auch eine logischer Name vergeben werden.
|
|
|
Foreign-Key-Namen setzen sich aus dem Prefix 'fky_' und dem Spaltennamen der 'Child-Tabelle' zusammen.
|
alter table
tpre_ChildTableName
add constraint
fky_ColName
foreign key (
pre_ChildColName)
references
tpre_ParentTableName (
pre_ParentColName)
|
|
Beispiel:
|
|
alter table
tupa_use_per_assign
add constraint
fky_upa_use_id
foreign key (
upa_use_id)
references
tuse_user (
use_id)
|
|
|
|
...
|