Y a-t-il un inconvénient à ne pas avoir de clé primaire pour une table dans Postgres? Puisque toutes les données sont stockées de toute façon dans le tas, la clé primaire est-elle juste un moyen d'appliquer une clé unique et un index en même temps? Ou y a-t-il une caractéristique fondamentale qu'une clé primaire fournit dans une table par opposition à une table qui n'a pas de clé primaire?Postgres Pas de problème de clé primaire
Répondre
par la documentation Postgres (http://www.postgresql.org/docs/9.2/static/sql-createtable.html):
Techniquement, la clé primaire est simplement une combinaison de UNIQUE et NON NULL, mais l'identification d'un ensemble de colonnes comme clé primaire fournit également métadonnées sur la conception du schéma, comme une clé primaire implique que d'autres tables peuvent compter sur cet ensemble de colonnes comme un identifiant unique pour les lignes.
Par expérience, j'ai créé beaucoup de tables sans eux. L'un des plus grands inconvénients de ne pas avoir de clé primaire est que vous ne pouvez avoir aucune vérification d'intégrité référentielle via une clé étrangère - puisque cette relation en nécessite une. Je pense que certaines solutions de réplication requièrent également une clé primaire ou un identifiant de colonne unique par ligne.
Ah, bon point sur le problème de réplication. Cela a complètement glissé dans mon esprit. Bien que j'aie un UUID unique dans chaque rangée, je devrais m'assurer qu'aucun PK ne sera un problème de réplication (pas de clés étrangères pour ceci donc ce n'est pas un problème). Merci. – AlexGad
Un autre problème qui vient à l'esprit est que la plupart des ORM (par exemple Django) ont des problèmes avec les tables qui n'ont pas de clés primaires. Donc, si jamais vous avez besoin de mettre une interface utilisateur sur le dessus de la table, cela peut rendre la vie un peu plus difficile pour quiconque travaille dessus. Pas une affaire énorme, mais pourrait être une considération (selon les données et ce qui se passe au sein de votre entreprise/équipe). –
Une contrainte de clé étrangère nécessite un index 'UNIQUE' sur la ou les colonnes cibles. Ne doit pas être une clé primaire. –
- 1. Clé primaire Postgres synchronisée
- 2. Problème clé primaire ASP.NET
- 3. Activerecode HABTM problème de clé primaire
- 4. Base de données Mysql - problème clé primaire
- 5. Les rails n'utiliseront pas de séquence pour la clé primaire?
- 6. Erreur DBML 1062 - pas de clé primaire
- 7. varchar() clé primaire ou clé primaire int?
- 8. Sauvegarde uuid (clé primaire) dans postgres en utilisant hibernate dao?
- 9. regroupement avec une clé non primaire dans Postgres/activerecord
- 10. Duplication de clé primaire
- 11. Clé primaire composite PostgreSQL
- 12. Le tableau n'a pas de clé primaire
- 13. Détection de clé primaire
- 14. problème Android SQLite3 application clé primaire
- 15. PLINQO primaire problème clé et l'indice
- 16. Java Hibernate - Problème clé primaire composite
- 17. Problème de clé primaire jQGrid lors de la suppression
- 18. Attribut de clé primaire RestKit
- 19. Problème d'incrémentation automatique de la clé primaire mysql
- 20. Code EF-Premier héritage et problème de clé primaire
- 21. Problème lors de l'obtention d'entités avec la clé primaire uniqueidentifier
- 22. clé primaire comme clé étrangère
- 23. Limite de clé primaire composite?
- 24. Scénario de clé primaire composite
- 25. PHP/MYSQL Problème de sélection par clé primaire
- 26. Pourquoi la table 9.3 postgres continue de perdre la clé primaire et les index?
- 27. Clé primaire + Clé primaire composite à l'origine du problème dans le schéma de la base de données Propel
- 28. Mysql baisse clé primaire ne fonctionne pas
- 29. Exception de duplication de clé primaire
- 30. problème de codage postgres
Comment gérez-vous la mise à jour d'un enregistrement dans une table sans clé primaire? – Olaf
Ne pas besoin de récupérer des lignes uniques et les lignes ne sont jamais mises à jour, seulement insérées. Bien que les lignes aient des identités individuelles (UUID), elles ne sont saisies que dans des plages. J'ai des index sur les plages, mais il est inutile d'avoir un index sur la clé unique si cela peut être évité. – AlexGad
Je pose la question spécifique, parce que je viens d'un fond de SQL Server et de décider si avoir un index clusterisé sur une table ou une table de tas seulement est une décision importante à prendre. Avec Postgres, cette décision semble dénuée de sens puisque les données sont toujours stockées sans ordre dans la table pour commencer. Cependant, je veux m'assurer que j'ai raison dans cette hypothèse. Quel est l'avantage d'un PK dans Postgres vs, disons une contrainte unique et un index séparé? Y a-t-il une distinction ou est-ce simplement un raccourci pour fournir ces fonctionnalités? – AlexGad