Convención de nomenclatura de tabla adecuada para una tabla de intersección de muchos a muchos


Tengo una relación de muchos a muchos para: Tablas de cliente y Broker (solo un ejemplo). Obviamente, cada cliente puede tener varios corredores y cada corredor puede tener varios clientes. Lo que se considera la convención de nomenclatura adecuada para la tabla intersect.... es el agente del cliente...?

Author: Zombies, 2010-02-05

6 answers

Normalmente uso los nombres de ambas tablas de unión.

Entonces, en su caso, ClientBroker.

 9
Author: Michael Todd,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-02-05 15:19:48

Preferiría "Clients_Brokers" (pluralizando ambos nombres para indicar muchos a muchos).

 31
Author: FrustratedWithFormsDesigner,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-02-05 15:22:00

Prefiero distinguir entre tablas intersect y tablas transaccionales reales. Así que los termino con un Mapa. Así que sería Client_Broker_Map, o ClientBrokerMap.

 13
Author: Sumit,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-02-05 15:26:18

He visto a menudo el formato "Client_Broker"

 8
Author: froadie,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-02-05 15:20:18

A algunos programadores no les gusta pluralizar los nombres de las tablas por algunas razones:

  • rompe la regla "es una", lo que significa que si tiene una tabla llamada "Usuario", entonces cada registro en la tabla "es un" objeto de usuario. Esto sigue las reglas de orientación de objetos.
  • una clase Modelo es usualmente nombrada por la tabla de donde provienen sus datos. Por lo tanto, si tiene un modelo de usuario, el registro representado por el modelo está en la tabla de usuarios

Esto tiene mucho sentido si tienes el control de todo bd y capas de negocio del proyecto. Sin embargo, muchos frameworks ahora tienen bibliotecas OR que facilitan el trabajo con tablas y relaciones. Esas bibliotecas OR a menudo tienen una sintaxis de nombres que debe seguirse para permitir que la biblioteca OR haga la mayor parte del trabajo pesado.

Por ejemplo, utilizo el framework Kohana MVC para PHP que ofrece una biblioteca OR. El OR sugiere pluralizar los nombres de las tablas, usando todos los nombres en minúsculas y usando guiones bajos para los nombres de tabla de muchos a muchos. Así que para su por ejemplo, tendría las siguientes tablas: clients, brokers y brokers_clients (elM sugiere organizar alfabéticamente los nombres de las tablas para tablas de muchos a muchos). Al crear modelos para estas tablas (extendiendo el modelo OR), se utiliza el valor singular del nombre de la tabla, por lo que el modelo para los clientes sería Cliente. El OR maneja la conversión de pluralización. El Koh de Kohana también utiliza una biblioteca de inflexión, por lo que los valores de pluralización inusuales se manejan correctamente. Por ejemplo, una tabla llamada 'categories' puede usar el nombre del modelo 'Category'. Por último, si ya tiene una estructura de bd implementada pero desea usar la biblioteca OR, puede anular la sintaxis de nombres de tabla default predeterminada y darle el nombre de tabla que desea usar.

 6
Author: wpjmurray,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-02-05 15:59:45

Estoy justo en medio de un proyecto donde estoy obteniendo nombres de tablas y campos usando DESCRIBE. Usaría Client_x_Broker para poder encontrar fácilmente una tabla y obtener los campos usando _x_ como criterio, una cadena que centainly no va a ocurrir naturalmente en código o conjuntos de datos, bueno, no en el mío de todos modos, y es fácil de strp para encontrar los nombres de las tablas individuales. Además, siempre y cuando sea consistente, puedo obtener mucha información solo del nombre de la tabla, incluidos los nombres de las claves Principales. Perdón por a, llegar tarde y b, continuar. :)

 5
Author: Bri,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-09-04 18:41:39