Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySql中关系数据库的最佳设计方法_Mysql_Sql_Database_Relational Database_Primary Key - Fatal编程技术网

MySql中关系数据库的最佳设计方法

MySql中关系数据库的最佳设计方法,mysql,sql,database,relational-database,primary-key,Mysql,Sql,Database,Relational Database,Primary Key,我非常熟悉MySQL数据库管理系统。我很想知道设计更复杂东西的最佳方法 关系数据库。比如,假设我有一个“users”表,它的值是“主键”,自动递增。 使用这个“PK”作为“外键”,我可以创建一个名为“user_details”的表,在这里我可以存储用户的所有机密数据 是的,这是一个很好的方法。但我想知道有没有什么复杂的方法。 因为,如果localhost中的任何主体都可以访问数据库,那么它们就可以根据用户“PK”轻松获取“user\u details”数据 另外,使用应用程序生成的唯一代码作为数

我非常熟悉MySQL数据库管理系统。我很想知道设计更复杂东西的最佳方法 关系数据库。比如,假设我有一个“users”表,它的值是“主键”,自动递增。 使用这个“PK”作为“外键”,我可以创建一个名为“user_details”的表,在这里我可以存储用户的所有机密数据

是的,这是一个很好的方法。但我想知道有没有什么复杂的方法。 因为,如果localhost中的任何主体都可以访问数据库,那么它们就可以根据用户“PK”轻松获取“user\u details”数据


另外,使用应用程序生成的唯一代码作为数据库中的“PK”和“FK”还是数据库中的自动增量值就足够了?这是一个非常模糊的问题,所以我只列出几点:

  • 您的数据模型不应该考虑服务器安全性。为应用程序准确地构建数据模型,并尽可能地锁定对数据库和表的访问。这些是不同的关注点
  • 对仅允许最终用户知道的数据使用加密。例如,密码是单向加密的
  • MySQL的自动增量对于大多数用例来说已经足够了。有时我唯一让应用程序生成ID的时间是在我需要更集中的控制或有独特需求的地方。这并不总是必要的,因为您可以为每个服务器分别设置自动增量起始编号,而不必担心服务器生成冲突的ID。生成自己的ID有时会有性能缺陷,例如,生成GUID所需的时间比递增整数所需的时间更长

这有点像XY问题。如果您担心有人访问,请保护服务器/不给“任何人”访问数据库的权限(只允许以特定用户访问权限运行的某些进程),或者加密数据,不给用户密钥。@lc。是的,我们可以围绕数据库建立严密的安全机制。哪怕是一秒钟,我都不知道数据加密。后来我认为这可能会导致一些性能问题。但我很想知道大型关系数据库是如何设计的?基于“自动增量”值本身?如果您有一些想法,请分享您的知识:-)