Cette question se pose après la lecture d'un commentaire à cette question:
http://stackoverflow.com/questions/2190089/database-design/2190101
Lorsque vous créez un plusieurs-à-plusieurs table, faut-il créer une clé primaire composite sur les deux colonnes de clé étrangère, ou de créer un auto-incrément de substitution "ID" de la clé primaire, et vient de mettre indices sur vos deux FK colonnes (et peut-être une contrainte unique)? Quelles sont les implications sur les performances de l'insertion de nouveaux enregistrements/ré-indexation dans chaque cas?
En gros, ceci:
PartDevice
----------
PartID (PK/FK)
DeviceID (PK/FK)
vs ce:
PartDevice
----------
ID (PK/auto-increment)
PartID (FK)
DeviceID (FK)
Le commentateur dit:
ce qui rend les deux Id, le PK signifie l' le tableau est physiquement triés sur le disque dans cet ordre. Donc, si nous insérer (Part1/Device1), (Part1/Usb2), (Part2/Device3), puis (Partie 1/Device3) la base de données devra rompre l' table de part et d'insérer le dernier entre les entrées 2 et 3. Pour de nombreux enregistrements, cela devient très problématique car elle implique un brassage des centaines, des milliers, voire des millions d'enregistrements chaque fois que l'on est ajoutée. En revanche, un autoincrementing PK permet à la nouvelle des records pour être ajouté à la fin.
La raison pour laquelle je suis demander c'est parce que j'ai toujours été enclin à faire la clé primaire composite avec aucune substitution auto-incrémentée, mais je ne suis pas sûr si la clé de substitution est effectivement plus performant.