1831 Stimmen

Dilemma bei der Benennung von Tabellen: Singular- und Plural-Namen

Nach akademischer Auffassung sollten Tabellennamen die Einzahl der Entität sein, deren Attribute sie speichern.

Ich mag kein T-SQL, das eckige Klammern um Namen erfordert, aber ich habe eine Users Tabelle in den Singular umzuwandeln, was dazu führt, dass diejenigen, die die Tabelle verwenden, manchmal Klammern verwenden müssen.

Mein Bauchgefühl sagt mir, dass es korrekter ist, beim Singular zu bleiben, aber mein Bauchgefühl sagt mir auch, dass Klammern unerwünschte Elemente wie Spaltennamen mit Leerzeichen usw. anzeigen.

Soll ich bleiben, oder soll ich gehen?

3voto

Red Punkte 1

Ein TABLE-Name ist EINE Definition für eine Tabellenstruktur. Ein VIEW- oder QUERY-Name ist EINE Definition eines Views oder einer Abfrage von (einer oder mehreren) Tabellen. Eine TABLE, VIEW oder QUERY kann eine der folgenden Angaben enthalten:

0 Datensätze 1 Datensatz Viele Datensätze.

Warum in aller Welt sollten Sie ein 's' an das Ende eines einzelnen Objektnamens setzen? Was wollen Sie mit diesem "s" am Ende eines Objektnamens ausdrücken?

Wenn Sie eine Differenzierung wünschen, fügen Sie '_tbl' hinzu. Eine Ansicht ist "_vew" (nicht die alberne "_v"-Konvention).

Mindestens 3 Zeichen als Suffix - damit ist diese Diskussion beendet.

Eine Tabelle ist ein DB-Objekt - nicht anders als jedes andere.

Durch die Einsparung von 3 Zeichen wird nichts außer der Klarheit der Bedeutung eingespart.

Rot ;-)

3voto

Vinz Punkte 1992

Ich verwende immer singuläre Tabellennamen, aber wie bereits erwähnt, ist es am wichtigsten, konsistent zu sein und für alle Namen die gleiche Form zu verwenden.

Was ich an pluralen Tabellennamen nicht mag, ist, dass kombinierte Namen ziemlich seltsam werden können. Wenn Sie zum Beispiel eine Tabelle mit dem Namen Users und Sie möchten Eigenschaften für den Benutzer speichern, würde dies zu einer Tabelle namens UsersProperties ...

3voto

friol Punkte 6956

Es gibt keine "Konvention", die vorschreibt, dass Tabellennamen Singular sein müssen.

Wir hatten zum Beispiel eine Tabelle mit dem Namen "REJECTS" in einer Datenbank, die von einem Rating-Prozess verwendet wurde und die die abgelehnten Datensätze eines Programmlaufs enthielt, und ich sehe keinen Grund, für diese Tabelle nicht den Plural zu verwenden (sie "REJECT" zu nennen, wäre einfach nur komisch oder zu optimistisch gewesen).

Bei dem anderen Problem (Anführungszeichen) kommt es auf den SQL-Dialekt an. Oracle verlangt keine Anführungszeichen bei Tabellennamen.

3voto

Angelin Nadar Punkte 8458

Auf der Suche nach einer guten Namensgebung entsteht die folgende Verwirrung: Soll ich den Namen :

1) nach dem, was die Tabelle hält z.B.: Eine Tabelle mit Benutzern. Es wird immer der Plural sein. Also, Benutzer

2) nach dem, was ein Rekordhalter z.B.: Ein Datensatz in der Benutzertabelle ist ein einzelner Benutzer. SO, Benutzer .

Nun, das Problem für users_roles hauptsächlich. Fall 1: gemäß der ersten Namenskonvention, users_roles Was dieser Name andeutet, Benutzer und ihre Rollen.

Fall 2: gemäß der zweiten Namenskonvention, user_role Was dieser Name andeutet, Benutzer und seine Rollen.

Eine gute Namenskonvention ist die Angabe eines zusätzliche Idee von Entitätsbeziehungen vor allem, wenn viele Beziehungen zueinander gespeichert sind .

In diesem Fall sollten wir, wie im Szenario beschrieben, Informationsmengen identifizieren.

In der Tabelle Benutzer sind alle gebildeten Sätze eindeutige Benutzer. In der Tabelle "Rollen" sind alle gebildeten Gruppen eindeutige Rollen. In der Tabelle mit den Benutzer- und Rollenbeziehungen können Benutzergruppen mit verschiedenen Rollen gebildet werden, was eine Vorstellung davon vermittelt 1-many-Beziehungen gespeichert .

I would prefer,
Users table => user
Roles table => role
users role relationship table => user_roles

2voto

markus Punkte 39397

Wenn Sie bestimmte Frameworks wie Zend Framework (PHP) verwenden, ist es nur ratsam, den Plural für Tabellenklassen und den Singular für Zeilenklassen zu verwenden.

Wenn Sie also ein Tabellenobjekt $users = new Users() erstellen und die Zeilenklasse als User deklariert haben, können Sie auch new User() aufrufen.

Wenn Sie nun Singular für Tabellennamen verwenden, müssten Sie etwas wie new UserTable() mit der Zeile new UserRow() machen. Das sieht für mich ungeschickter aus als ein Objekt Users() für die Tabelle und User()-Objekte für die Zeilen zu haben.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X