分表

时间:2015-08-02 21:54:10

标签: mysql sql database database-design

我想弄清楚什么是最好的解决方案,以防我想创建两个表,其中一个表存储user_idnameaddress等列。第二个表只用于存储登录名和密码数据。

到目前为止,我的想法是创建没有主键的登录表。我可以在第一个表中使用引用user_id的外键,在更新/删除时使用级联关系,因此每个表中的数据将保持相关。但我担心我的解决方案并不好。你有更好的想法吗?顺便说一下,我还没有进入索引概念,所以你能帮助我吗?

1 个答案:

答案 0 :(得分:1)

经验法则:如果您有一对处于1:1关系的表,那么您可能设计错了。

在保证垂直分区的情况下,性能有例外,但您的情况并非如此。

有多种方法可以“隐藏”列:

  • 垂直分区(如您所建议)以及表格权限
  • 列的权限
  • VIEWs,以及表和视图的权限。
  • API代码(PHP等),甚至不让非管理员用户编写SQL语句。

我更喜欢最后一个选项。

密码应通过salted +加密的单向哈希存储。然后,如果它们被意外暴露,密码不会受到损害。

对于FOREIGN KEYs,我更喜欢在应用中编码业务逻辑,而不是依赖于FK的有限功能。