¿Hay alguna desventaja de no tener una clave primaria para una tabla en Postgres? Dado que todos los datos se almacenan desordenados en el montón de todos modos, ¿la clave principal es solo una forma de aplicar una clave única y un índice al mismo tiempo? ¿O hay una característica fundamental que proporciona una clave principal en una tabla en lugar de una tabla que no tiene una clave principal?Postgres No Principal Key drawback
Respuesta
por la documentación de Postgres (http://www.postgresql.org/docs/9.2/static/sql-createtable.html):
Técnicamente, clave primaria es simplemente una combinación de único y no se NULO, pero la identificación de un conjunto de columnas como clave principal también proporciona metadatos sobre el diseño del esquema, ya que una clave principal implica que otras tablas pueden confiar en este conjunto de columnas como identificador único para las filas.
Por experiencia, han creado un montón de mesas sin ellos. Uno de los mayores inconvenientes de no tener una clave principal es que no puede tener verificaciones de integridad referencial a través de una clave externa, ya que esa relación requiere una. Creo que algunas soluciones de replicación también requieren que haya una clave principal, o en el identificador de columna individual por fila.
Ah, buen punto sobre el problema de replicación. Eso me olvidó por completo. Aunque tengo un UUID único en cada fila, debo asegurarme de que ningún PK no sea un problema de replicación (no hay claves externas para esto, así que no hay problema). Gracias. – AlexGad
Otro problema que me viene a la mente es que la mayoría de los ORM (por ejemplo, Django) tienen problemas para tratar con tablas que no tienen claves principales. Por lo tanto, si alguna vez necesitas poner una IU en la parte superior de la tabla, entonces puede hacer la vida un poco más difícil para cualquiera que trabaje en ella. No es un gran problema, pero podría ser una consideración (dependiendo de los datos y lo que está sucediendo dentro de su empresa/equipo). –
Una restricción de clave foránea requiere un índice 'UNIQUE' en la (s) columna (s) de destino. No tiene que ser una llave primaria. –
- 1. Almacenamiento de SHA1 Signature como clave principal en Postgres SQL
- 2. ¿Alguna diferencia en la forma en que se define una clave principal en Postgres?
- 3. SQLite add Primary Key
- 4. Postgres 9.1 GRANT no funciona
- 5. ventanas Postgres pgpass - no trabajan
- 6. Idiomas que no sean SQL en postgres
- 7. ¿En qué condiciones SELECCIONAR con PRIMARY KEY ser lento?
- 8. ¿Clave principal compuesta o no?
- 9. ÍNDICE en Postgres?
- 10. C# JSON Serialización del diccionario en {key: value, ...} en lugar de {key: key, value: value, ...}
- 11. postgres autoincrement no actualizada sobre Identificación explícita inserta
- 12. Postgres FK referencia PK compuesta
- 13. Mountain Lion Postgres no pudo conectarse
- 14. No se puede obtener Postgres comenzó
- 15. Postgres: Agregar restricción si no existe
- 16. Manipulación Android Key (marco)
- 17. Global Windows Key Press
- 18. javascript keypress enter key
- 19. TreeView TreeNodeCollection Key
- 20. javascript alt key
- 21. Detect Enter Key C#
- 22. No se registraron errores con Falló Postgres/Psycopg2 copy_from
- 23. Key/Value pyqt QComboBox
- 24. ¿Qué Request.Params ["key"] hacer?
- 25. ÚNICA y PRIMARY KEY
- 26. PHP API Key Generator
- 27. ¿Qué significa la palabra clave KEY?
- 28. Reiniciar postgres
- 29. postgres crear un índice
- 30. Postgres Tuning
¿Cómo manejarías la actualización de un registro en una tabla sin una clave principal? – Olaf
No es necesario recuperar filas únicas y las filas nunca se actualizan, solo se insertan. Si bien las filas tienen identidades individuales (UUID), solo se toman en rangos. Tengo índices en los rangos, pero no tiene sentido tener un índice en la clave única si puede evitarse. – AlexGad
Estoy haciendo la pregunta específica, porque vengo de un fondo de SQL Server y decidir si tengo un índice agrupado en una tabla o en una tabla de almacenamiento dinámico es una decisión importante que hay que tomar. Con Postgres, esta decisión parece carecer de sentido ya que los datos siempre se almacenan desordenados en la tabla para comenzar. Sin embargo, quiero asegurarme de estar en lo correcto en esta suposición. ¿Cuál es el beneficio de un PK en Postgres vs, digamos una restricción única y un índice separado? ¿Hay alguna distinción o es solo una forma abreviada de proporcionar esas características? – AlexGad