数据库 - 字符串作为主键? [复制]

2024-06-23

我使用 Laravel 5 开发一个应用程序,并在开发过程中使用 sqlite。我想稍后切换到更快的东西。我想要一个字符串作为用户表的唯一标识符。这有什么问题吗?例如使用外键?或者说自动递增整数没有什么区别?


简短的回答:使用字符串作为主键是完全可以的。

长答案:我们不擅长选择字符串作为主键。

什么是好的主键候选?

  1. 它应该是独一无二的。
  2. 它应该很少(如果有的话)改变。

现在,您可能认为您的字符串永远不会改变,并且它非常独特,直到它不再是唯一的。

另一个(次要)问题是性能。搜索、连接等在整数上比在字符串上快一点,主要是由于长度(数字通常比字符串短,因此比较更容易)。

我会长时间思考在主键上使用什么字符串,大多数时候这是一个坏主意

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

数据库 - 字符串作为主键? [复制] 的相关文章

  • 改变了 (un)serialize() 的行为?

    编辑 问题是现在已记录的 php 错误 https bugs php net bug php id 71617 https bugs php net bug php id 71617感谢您找到那个 Danack 我刚刚将应用程序从 PHPH
  • PHP的rand函数真的有那么糟糕吗? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何创建一个学说实体的模拟对象?

    我正在尝试使用 phpunit 为使用原则 2 的模型编写单元测试 我想模拟原则实体 但我真的不知道如何做到这一点 谁能向我解释我需要如何做到这一点 我正在使用 Zend 框架 需要测试的模型 class Country extends A
  • 销毁Session但保留flashdata

    我在用坦克验证 http www konyukhov com soft tank auth 用于我的 CI 1 7 3 应用程序中的用户管理 一切工作正常 但我正在尝试设置flash message当用户注销时显示 问题是 this gt
  • JS 中的模板?

    我们都喜欢简单 结构化且易于遵守的代码 我们试图在外观和逻辑之间带来差异 例如 在 PHP 中 我们可以使用模板机制 即创建一个带有 php 标签的 html 格式的文件 该文件使用一些预定义的变量 这些变量可以通过逻辑负责任的脚本来使用
  • Google OAuth 2 PHP 调用用户信息

    我正在尝试使用 Google 的 OAuth2 API 在他们的通用文档中 他们提到了一个名为 UserInfo 的调用 http code google com apis accounts docs OAuth2Login html us
  • 在 PHP 中获取和设置(私有)属性,就像在 C# 中一样,无需使用 getter setter 魔术方法重载

    Summary 代码示例 Class People private property private name other methods not shown for simplicity 直线前进 让我假设 name is a PRIVA
  • Monolog - 仅记录特定级别的错误

    我在普通 PHP 应用程序中使用 Monolog 我只想记录特定级别的错误 INFO 和不高于 因为我还有其他处理程序 这是我的代码
  • 如何在 Linux 上的 php 中启用 --enable-soap?

    这就是问题所在 我在 Apache 上安装了 PHP 5 2 9 但无法升级 PHP 有没有办法在 PHP 5 2 9 中启用 SOAP PHP 手册中说 要启用 SOAP 支持 请使用 enable soap 配置 PHP 这根本没有帮助
  • 如何使用ajax post请求将模态值插入数据库?

    查看代码 div class price div
  • 如何在 Django 项目上访问 SQLite 的 db shell?

    我正在尝试更新变量上的列以允许 db shell 中为 null 这样我就不必删除我的表 我有通知数据 sqlite位于主文件夹中并且sqlite3 db位于 主应用程序 子文件夹中 这是为什么 我想访问哪一个 我知道它们是 2 个不同的文
  • PHP 中的延迟加载类方法

    我有一堂课 里面有一些相当大的方法 在它的基本和最常见的状态下 大多数功能并不是必需的 所以我想知道是否有一种方法可以延迟加载类的一部分 这些方法需要能够访问私有 受保护的成员 因此如果这些方法是类的本机方法 那将是理想的选择 但是在寻找其
  • 将我的 JSON 字符串格式化为 PHP 中的
      有序列表

    我正在为一个宠物项目开发一个简单的 CMS 我目前有一个 JSON 字符串 其中包含菜单结构的页面 ID 和父页面 ID 的列表 我现在想将此字符串转换为嵌套或分层列表 有序列表 我尝试过循环查找 但似乎最终得到了过于复杂的子类范围 我正在
  • 将数组值翻转为数组键的函数? [复制]

    这个问题在这里已经有答案了 有没有一个php函数可以接受下面的数组 array size 4 1 gt string 0 6 gt string 1 7 gt string 1 8 gt string 7 将其翻转到下面的数组 请注意 数组
  • file_get_contents:即使出现错误也能获得完整响应

    是否有可能使file get contents即使发生错误也显示实际响应 否则很难调试 例如 假设您有以下代码 url https api twitter com oauth request token data array options
  • Outlook 2007 接收 html 邮件作为带有标头的源,其他 MUA 工作正常。为什么?

    我有几个简单的表单 可以发送纯 html 电子邮件 大多数客户端 Gmail Lotus Notes 8 hotmail live windows live mail outlookexpress 都能正常接收电子邮件 但 Outlook
  • 一系列 unicode 点的正则表达式 PHP

    我正在尝试从字符串中删除所有字符 除了 字母数字字符 美元符号 下划线 代码点之间的 Unicode 字符U 0080 and U FFFF 通过这样做 我得到了前三个条件 preg replace a zA Z d foo 我如何去满足第
  • SQLite适合并发读吗?

    在没有锁定的情况下 SQLite 数据库的性能是否能达到每秒 50 次读取左右 我正在尝试确定它是否可以在不会经常 写入 的 PHP 网站上使用 它主要是从一小部分表中读取相同的数据 没问题 并发读 写实际上会被 SQLite 序列化 所以
  • Laravel 错误“模型/模型名称的声明应与 Illuminate\Database\Eloquent\Model 兼容”

    我面临一个关于 Laravel 应用程序的奇怪问题 在我的生产服务器上更新作曲家后 我收到此错误 我的登录页面显示正常 当我输入凭据时 它显示此错误 无论凭据错误还是正确 它总是显示相同的错误 错误是 App Models User upd
  • Laravel 5 中的两个登录表单

    我一直想知道如何在 laravel 5 中制作两个登录表单一段时间 原因是因为我有一个多站点项目 我在一个项目中拥有管理站点和公共站点 我对路由进行了分组 以便管理路由回答一个域 公共路由回答另一个域 如下所示 Route group ar

随机推荐