没有找到这个特定的菜鸟问题的答案.如果我错过了,我道歉.
在MySQL数据库中,我有一个包含以下主键的表
PRIMARY KEY id(发票,项目)
在我的应用程序中,我还经常选择"项目"本身,而不是经常选择"发票".我假设我会从这些列的索引中受益.
当我定义以下内容时,MySQL不会抱怨:
INDEX(发票),INDEX(项目),PRIMARY KEY id(发票,项目)
但我没有看到任何证据(使用DESCRIBE - 我知道如何查看的唯一方法)已经为这两列建立了单独的索引.
所以问题是,构成主键的列是否会自动单独索引?另外,有没有比DESCRIBE更好的方法来探索我的桌子的结构?
我正在设计一个数据库,用于存储源自许多不同来源的数据.我存储的实例由原始源分配唯一ID.我存储的每个实例都应包含有关其来源的信息,以及该源关联的ID.
例如,请考虑下表说明问题:
----------------------------------------------------------------
| source_id | id_on_source | data |
----------------------------------------------------------------
| 1 | 17600 | ... |
| 1 | 17601 | ... |
| 2 | 1 | ... |
| 3 | 1 | ... |
----------------------------------------------------------------
Run Code Online (Sandbox Code Playgroud)
请注意,虽然id_on_source每个源都是唯一的,但可以id_on_source为不同的源找到相同的源.
我对关系数据库有一个很好的理解,但远非专家甚至是有经验的用户.我在设计中遇到的问题是我应该用作主键的问题.数据似乎决定使用复合主键(source_id, id_on_source).经过一番谷歌搜索后,我发现了一些关于复合主键优缺点的激烈争论,让我有点困惑.
该表与其他表具有一对多的关系,因此将在其他表的外键中引用.
我不依赖于特定的RDBMS,我不知道这是否事项的参数的缘故,但让我们说,我更喜欢的工作SQLite和MySQL.
在这种情况下使用复合外键有哪些优缺点?你更喜欢哪个?