虽然我已经写了很长时间的 php,但它始终是我自己学会的一项技能,而且我刚刚遇到了关于表连接的小信心危机!
假设一个 MySQL 数据库auth
包含 MyISAM 表users
和permissions
:
users
- id (auto increment)
- email
permissions
- id (auto increment)
- name
为了以多对多(或一对多)的形式加入这些表,我一直使用这样的桥接表:
user_permissions
- id (auto increment)
- user_id
- permission_id
(我知道 innoDB 能够建立关系,但它也更复杂并且占用更多内存,所以出于 q 我想留在 myISAM 的目的)
我的特殊问题是:使用自动递增键加入表是否明智,还是应该生成自己的附加键?
我知道如果表损坏并且我必须重建或者如果我开始镜像到两个数据库并且密钥不同步,则可能会出现问题。
我也知道,如果我为每一行生成一个唯一的哈希(用于连接),那么在每次数据插入之前生成一个哈希并检查它是否是新的都会产生开销。
其他人是如何做到的?这些问题是您在实际情况中看到的吗?
谢谢你的时间!
亚当