que estaba un poco decepcionado porque he el hábito de crear una clave principal entero (después de lo que dijo algún maestro conmigo en la universidad). He leído mucho de la documentación sobre el rendimiento impulso usando la clave primaria entera.
Hay un término para esto: confirmation bias:
"también llamado sesgo de confirmación o sesgo myside) es una tendencia de las personas a favor de la información que confirma sus preconcepciones o hipótesis, independientemente de si son verdaderas. Esto tiene como resultado que las personas recopilen nuevas pruebas de forma selectiva, interpreten las pruebas de forma sesgada o que retiren información de manera selectiva de la memoria ".
Por supuesto, su primera reacción será decir: "¡Pero eso no es cierto!" Sí, dirías que 'porque estás predispuesto;) [con la lengua firmemente incrustada en la mejilla]
Aquí tienes un ejemplo clásico: dijiste que tu profesor de zoología te había dicho que todos los cisnes son blancos y, por supuesto, todos los cisnes que tú y tus amigos alguna vez han visto son blancos. Ahora digamos más adelante en la vida, un colega expresó la opinión de que quizás exista una criatura como un cisne negro. ¡¿Qué?! Eso no es lo que te enseñaron. Tu mundo está sacudido! Inmediatamente sales y realizas una encuesta de cisnes y cuentas 1,000 cisnes blancos y cero cisnes negros. ¡Prueba! Si hubieras encontrado 10.000 cisnes blancos, la hipótesis "Todos los cisnes son blancos" sería diez veces más cierto, ¿no?
Un enfoque diferente sería olvidarse de los cisnes blancos por el momento y tratar de buscar un cisne negro. Tal vez tomar unas vacaciones junto al mar en el soleado Dawlish?
Realmente no quiero sonar irrespetuoso; Admites que lees mucho sobre lo que te han dicho y que de hecho me gana mi respeto. Así que aquí hay un desafío: trate de encontrar casos en los que no sea necesario agregar una columna entera a una tabla.
Aquí hay algunos consejos y spoilers: tablas a las que no hacen referencia otras tablas; tablas de búsqueda de "todas las claves" de una sola columna; '' Pequeñas mesas que no se consultan mucho :)
Aquí están algunos otros temas relacionados que le gustará a investigar:
¿La palabra 'principal' en 'clave principal' tiene mucho significado o son todas las claves en una mesa dada igual?
¿Cuáles son las cualidades de una "buena" clave? (Por ejemplo, ¿los valores de una clave deben ser inmutables o una estabilidad "buena" suficiente?)
Se agrega una columna entera a la tabla como clave artificial (perhpas porque la clave natural disponible no es lo suficientemente buena) o como una clave sustituta (¿tal vez para aumentar el rendimiento de una clave natural "buena")?
Cuando se agrega una clave sustituta a una tabla por razones de rendimiento, ¿se trata de un efecto real medido o simplemente de un efecto percibido (es decir, una optimización prematura)?
¿Deben aparecer las claves sustitutas en el modelo comercial lógico o solo para la implementación?
¿Es una buena idea hacer siempre algo (por ejemplo, agregar una columna entera a una tabla) sin ocupar el cerebro cada vez? ;)
[Descargo de responsabilidad: soy un defensor clave natural y evito los sustitutos. Para mí son como la desnormalización: solo lo haces cuando tienes que hacerlo, generalmente por un problema de rendimiento (específico y demostrable), donde la falla se encuentra en otro lado (mala versión del producto SQL, falla de diseño lógico que no se puede arreglar en este momento, etc.) Los sustitutos nunca deberían aparecer en el modelo de negocio lógico. A veces necesito un identificador artificial e incluso he expuesto los modelos comerciales lógicos.]
¿Puede darnos un poco más de información sobre la tabla específica en cuestión? ¿Qué tipo de datos se almacenan en esta tabla y qué campo es la clave principal? –
¿Preguntó por qué su (s) par (es) decidió (n) crear una tabla con una clave principal de tipo VARCHAR? –
@Mark: no les di mucha más información sobre las tablas, porque era una pregunta general sobre la clave primaria varchar/int. Puedo decirte que estoy hablando de una tabla a la que hacen referencia muchas tablas en el db. – frabiacca