Alors que j'écris depuis longtemps sur php, c'était toujours une compétence que j'ai apprise moi-même et je viens de frapper une crise de confiance mineure sur les jointures de tables!Utiliser auto_increments pour rejoindre des tables MyISAM dans MySQL
En supposant une base de données mysql auth
contenant les tables MyISAM users
et permissions
:
users
- id (auto increment)
- email
permissions
- id (auto increment)
- name
Pour vous joindre à ces tables dans un grand nombre à plusieurs (ou un à plusieurs), je l'ai toujours utilisé les tables de bridge comme ceci:
user_permissions
- id (auto increment)
- user_id
- permission_id
(Je sais que innoDB est capable de relations, mais il est aussi plus complexe et des porcs plus de mémoire, donc dans le but de q Je voudrais rester avec MyISAM)
Ma question particulière est la suivante: est-il sage de joindre les tables en utilisant la clé auto-incrémentée, ou devrais-je générer ma propre clé supplémentaire?
Je suis conscient que des problèmes peuvent se produire si une table est corrompue et que je dois reconstruire ou si je commence à mettre en miroir à deux dbs et les clés sont désynchronisées. Je suis également conscient que si je génère un hachage unique pour chaque ligne (à utiliser dans les jointures), il y a la surcharge de générer un hachage et de vérifier qu'il est nouveau avant chaque insertion de données.
Comment les autres le font-ils? Ces problèmes sont-ils des problèmes que vous avez vus dans des situations pratiques?
Merci pour votre temps!
Adam
Merci, je sais comment faire le SQL - la question est plus sur l'utilisation sécuritaire des auto_increments dans la jointure. –
Je suppose que je ne comprends pas le problème. Que voulez-vous dire "sûr"? Qu'est-ce que l'incrémentation automatique a à voir avec l'adhésion? –
Selon la question, si la base de données doit être endommagée ou si un miroir doit échouer, est-ce que je risque de perdre la relation si la relation est construite sur des valeurs auto_incremented? –