Nombre de tabla plural vs singular


41

¿Cómo debo nombrar mis tablas al crear una nueva base de datos?

Singular: Cliento Plural Clients:?


Una vez tuve un compañero de trabajo que insistió en que los nombres de las tablas sean singulares y los nombres de las vistas sean plurales.
René Nyffenegger

1
Hay otras escuelas de pensamiento. 1) Use verbos que le permitan expresar consultas en lenguaje natural, por ejemplo person NAMED 'fred' EARNS 20,000(donde los nombres en mayúsculas son las tablas). 2) use el nombre de la empresa para el conjunto PERSONNEL, p . Ej PAYROLL. ORG_CHART, Etc.
cuando

Respuestas:


44

Depende de usted. Sin embargo, solo sé consistente.

Personalmente , prefiero el singular en función de lo que almacena cada * fila: pedido, producto, usuario, artículo, etc.

Esto coincide con mi modelado (a través del modelado de roles de objetos) donde uso entidades / tipos singulares.

Editar:

Una de las razones es que plural falla cuando tiene tablas de enlaces:
Orders, Productsle dan OrderProductso OrdersProducts. Ninguno de los dos suena correcto

O tablas de historial (por supuesto, puede usar esquemas para esto):
Orders-> OrdersHistoryo (¡no!) OrdersHistories? No Order-> OrderHistoryser mejor?


2
¿Debería siempre reducirse a una elección Personal ? ¿Qué pasaría si hubiera 2 personas trabajando en el diseño de una base de datos? Entonces, una podría nombrar las tablas en plural y la otra en singular. ¿No hay un razonamiento válido sobre por qué usar Singularo Plural?
John Isaiah Carmona

2
@JohnIsaiahCarmona: se agregó una razón
gbn

3
Estoy de acuerdo en usar singular como el más sensato. Esta no parece ser la opinión popular, si miras a tu alrededor preguntas similares aquí y en SO, etc. Mucha gente parece tener una visión programática de las tablas como colecciones que, por lo tanto, deben tener nombres plurales. Creo que quizás los ORM podrían estar empezando a romper con la gente de este (mal) hábito. Si sus tablas tienen nombres plurales para comenzar, es difícil distinguir las propiedades de navegación principales y secundarias y distinguir los objetos de instancia y colección para una tabla.
Joel Brown

44
Otra razón a favor de Singular es si tiene una regla de que el PK lleva el nombre de la tabla, por ejemplo, TablenameIDor TablenameCodeo tablename_id. Con los nombres de tabla en plural, terminas con Orders.OrdersID(que no se ve bien) o Orders.OrderIDdonde usas plural para nombres de tabla pero cambias a singular para prefijos de columna.
ypercubeᵀᴹ

Otro punto en la misma línea.
Jack Douglas

8

Con respecto a los nombres de tablas singulares versus plurales, el tema parece ser controvertido, pero no debería serlo.

Mientras que una tabla es una colección de múltiples registros, una tabla lleva el nombre de la definición del tipo de registro que contiene. Si a una tabla se le permitiera tener un nombre diferente al del tipo de registro que contiene, puede darle a la tabla un nombre plural, por ejemplo, podría tener una tabla de Empleados que contenga múltiples registros de Empleado. Pero el diseñador de SQL no proporcionó nombres separados para tablas y tipos de registros.

Las cosas funcionan más lógicamente para los programas orientados a objetos que usan los datos, si el nombre de un tipo de registro (y, por extensión, el nombre de la tabla) se mantiene en singular, ya que corresponderá con el nombre de la clase que usaría para describir un registro .

Si luego desea identificar una colección en el programa, puede usar un plural, o mejor, usar un modificador apropiado, como EmployeeList o EmployeeArray.

También hay un problema con los plurales irregulares para la generación automática de código y los programadores que tienen diferentes antecedentes de lenguaje o ideas sobre la formación de plurales en un programa.

El idioma inglés no es un lenguaje de programación bueno y adecuado, y tratar de hacer que las declaraciones de la base de datos y del programa se ajusten al inglés porque suena mejor leer una de esas declaraciones es un error.


5

Al igual que la respuesta de @ gbn, creo que esto es más una cuestión de preferencias y, al igual que él, recomiendo que cualquier elección que haga, aplíquela en todas partes (al menos en esa base de datos). La consistencia lo vale.

Sin embargo, mi preferencia es que un plural suene mejor en las SELECTdeclaraciones:

SELECT Id, Name, Status 
FROM   Persons
WHERE  Status <> 5  --5 meaning deleted

Quiero decir, en este caso, al menos, hay varias personas en la mesa y varias de ellas son devueltas al cliente.


2
+ 1 aunque técnicamente el plural de Persona es Gente y esta es una razón por la que uso singular. Algunos ORM crearán automáticamente las tablas para usted y obtendrá escenarios extraños como este donde lingüísticamente el nombramiento no es lógico.
Mr.Brownstone

5

"orden" es una palabra reservada. "órdenes" no es

"usuario" es una palabra reservada. "usuarios" no es

"sesión" es una palabra reservada. "sesiones" no es

"resultado" es una palabra reservada. "resultados" no es

"relativo" es una palabra reservada. "parientes" no es

...

Esas parecen palabras comunes que pueden ir en una base de datos de línea de negocio. Las palabras en plural parecen ser menos comunes como palabras clave que las palabras singulares. Por lo tanto, puede ser beneficioso usar nombres de tablas en plural para evitar conflictos con las palabras clave de SQL.


1
Esto está demasiado cerca para mayor claridad. Manténgase alejado de las palabras reservadas, singular o plural. Eso realmente ayuda al depurar mensajes de error que usan plurales de palabras reservadas indistintamente. Lo ideal es elegir palabras del dominio de la aplicación para que sea más relevante para su uso / usuario.
Usuario de Emacs

¿Qué significa "demasiado cerca para la claridad"?
Neil McGuigan

1
Significa una innecesaria mayor sobrecarga de descifrado de mensajes de error. Por ejemplo, ordenar por y ordenar en mensajes de error de sintaxis. O tratando de depurar usuarios y usuarios en mensajes de error de autenticación.
Usuario de Emacs

IMO PurchaseOrder, PortalUser, UserSession son mejores que simplemente Order, User, Session, así que singular podría funcionar bien en este escenario
John Jai

1

Creo que la tabla SQL debería tener nombres plurales. Simplemente se lee mucho mejor.

Una tabla de registros de libros debería llamarse libros. El ORM debe usar la misma convención. El objeto Libros es una colección y preside todos los registros de la Tabla de libros. Un objeto Libro preside un solo registro.

Esto hace que la codificación sea más natural.

select name, publication_date from books where publication_date > '2000-01-01';

books = Books()
for book in books.get("publication_date >= '2000-01-01'"):
    print book.name

Tiene sentido hasta que tenga que escribir para ovejas en seep.get ... Doble las reglas, sea flexible.
Usuario de Emacs

Es cierto que algunos contenedores son palabras con sustantivos no plurales, como 'acceso'. pero se puede modificar usando: 'for access_record in access'.
dlink

Sin embargo, me vuelve un poco loco ver objetos de enlace. ¿Qué tal una tabla de enlaces entre Libros y Autores? "BooksAuthors" se ve y suena horrible, pero "BookAuthor" se ve y suena mejor. Luego ingresa a palabras que tienen terminaciones impares para plurales (estados) o son sustantivos irregulares (niño vs niños). OMI un mundo de dolor ocular!
Blobbles

Hola, @blobbles el plural sería BookAuthors, no BooksAuthors. Entonces todavía se lee natural. BookPublishers, BookFormats, etc.
dlink

La legibilidad siempre es buena, pero no se trata de una oración, se trata de los lugares de los que estamos obteniendo datos. Por ejemplo table.field, author.authorNameestá perfectamente bien. Obtenga el authorName de la tabla de autores. Cuando solo hay un autor, el plural también se ve mal. authors.authorNamecuando solo hay un autor? Eso es más confuso imo. Esto, por supuesto, se ha mejorado mucho ahora que hemos eliminado el estilo de oración mysql_ y tenemos mejores formas de acceder a los datos :)
James

1

Después de trabajar con la programación durante algunos años, he concluido que la pluralización es una complicación innecesaria. Mi opinión es que, según la filosofía de KISS, un programador debe luchar por la solución más fácil y perezosa a todos los problemas por razones de tiempo y eficiencia. Por lo tanto, singular le brinda menos trabajo necesario en todos los escenarios.


¡Esta respuesta realmente no agrega nada a todo el hilo! ¡No responde el problema llamando a una tabla "orden", por ejemplo! Personalmente, uso palabras en francés cuando el inglés no funciona - ordre, groupe ... ¡ Siempre use el campo de comentarios de su tabla para explicar su elección! Pero, lo realmente importante es tener una convención y cumplirla .
Vérace

¿Cómo no agrega nada? Agregué que singular es menos trabajo en mi opinión. Si tiene una opinión diferente a la mía, no devalúe mi opinión. "Los pedidos" no son el problema, el problema son las pluralizaciones más complicadas que no son an -s como "Categorías", que he visto mal escritas en todo tipo de combinaciones que causan un trabajo innecesario.
ColacX

0

Es algo muy personal. He estado usando la forma singular durante 30 años. Pero puedo ver por qué a la gente le gustan los plurales. Los libros - autores son interesantes ya que creo que los autores de libros no están equivocados. Un libro puede tener uno o más autores. Y los autores pueden haber escrito uno o más libros (por ejemplo, co-escrito). También depende de cómo manejes los libros escritos por más de un autor. Estoy de acuerdo con otras respuestas; elige uno y sé consistente. En lo que respecta a las palabras reservadas cuestiones. Creo que no es difícil encontrar nombres alternativos. usuario -> app_user, sesión -> app_session, order -> customer_order


0

Vemos las cosas desde diferentes perspectivas, y creo que los dos campos se identifican por:

Singular ("usuario")
La persona que hace una correlación entre el nombre de la tabla y el hecho de que representa un contenedor, que puede contener varias filas.

Entonces "contenedor de usuario" puede contener múltiples filas.

Plural ("usuarios")
La persona que no hace la correlación entre el nombre de la tabla y el hecho de que representa un contenedor. Por supuesto, saben que es un contenedor, pero no está ahí en el nombre.

Por ejemplo,
un "cartón de huevos" puede tener múltiples huevos, pero eso es obvio ya que la referencia del contenedor está en el nombre, lo que proporciona el potencial para múltiples huevos. Sin embargo, con el nombre de tabla singular "usuario", la referencia del contenedor no está allí en el nombre. por ejemplo, "user_container" probablemente sea aceptable para las personas que prefieren nombres en plural.

Creo que esto también se debe a que años de plural es una práctica común y en la mayoría del material de enseñanza en línea.


Dicho todo esto, creo que técnicamente hablando el singular es más preciso dado que estamos nombrando un solo contenedor, y los contenedores pueden contener múltiples (o simples) filas.
Parece incorrecto para las personas, ya que vinculan mentalmente el nombre de la tabla con el contenido (varias filas necesitan un nombre plural) en lugar de vincular mentalmente el contenedor nombrado con el contenido (un contenedor permite múltiples).

Como siempre, a menudo no hay un bien y un mal, y se trata más de lo que se adapta al escenario, y de ser coherente con lo que elijas.

Si solo está haciendo el proyecto y no hay una razón real para hacerlo, haga lo que considere mejor, o simplemente prefiera. Aplique lo mismo cuando esté en un equipo de desarrollo y simplemente tome una decisión unánime.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.