数据库表命名,复数或单数[重复]

2024-04-01

命名数据库的表和模式时最好使用单数或复数。 例如。应该是客户还是客户?

命名时应该用Capital,如Customer或customer吗?关于命名有什么最佳实践吗?


这个问题需要一场宗教战争。

我毫不怀疑它应该是复数,因为......

  • 表是行的集合。
  • SQL 语法变得更加自然 -SELECT * FROM Customers代替SELECT * FROM Customer.
  • 与 OOP 的类比——你有一个类Customer以及名为的客户列表或其他集合Customers.
  • SELECT * FROM Customers AS Customer WHERE Customer.FirstName = 'John' - Customers指的是整个表,而Customer指当前行。

消极的事情

在开发过程中,人们必须多次在单数和复数之间切换。您可以从概念模型开始 - 例如实体关系模型 - 其中自然选择是命名实体Customer。从这个模型中,您生成一个数据库,并且必须将名称复数化以获得Customers桌子。最后,你选择你最喜欢的 O/R 映射器,它必须再次对名称进行单数化以获得一个名为的类Customer.

如果您必须手动执行此操作,因为该工具缺乏支持(例如 .NET 4.0 之前的 EntityFramework),那么保持表名单一但因此获得一个类可能是一个合理的选择Customer代替Customers无需手动更改它。

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

数据库表命名,复数或单数[重复] 的相关文章

  • 克隆 Visual Studio 2012 发布配置文件

    如何复制 Visual Studio 发布配置文件 我找到的唯一解决方案是复制 粘贴 重命名发布设置文件 pubxml Properties PublishProfiles目录 创建新的发布配置文件时 会创建两个文件 pubxml 和 pu
  • 一个大连接或多个查询哪个提供更好的性能?

    我有一个名为订单的表 订单上的一列是 customer id我有一个名为 customers 的表 有 10 个字段 给定两个选项 如果我想构建订单对象数组并嵌入订单对象中的是客户对象 我有两个选择 选项1 A 首先查询订单表 b 循环遍历
  • 在 MySQL 中对连续值进行分组并向这些组添加 id

    我有一个简单的表 我需要确定四行的组 这些组不是连续的 但每行的每一行的值都有 1 例如 language id C 16 C 17 Java 18 Python 19 HTML 65 JavaScript 66 PHP 67 Perl 6
  • 编辑并继续:“当......时不允许更改”

    即使我创建了一个干净的 WinForms 项目 编辑并继续 也不起作用并给出错误 当调试器已附加到已运行的进程或正在调试的代码在构建或运行时进行了优化时 不允许进行更改 在 工具 选项 调试 中选中 编辑并继续 选项 未启用优化 似乎没有设
  • 如何调试 MySQL 存储过程?

    我当前的调试存储过程的过程非常简单 我创建一个名为 debug 的表 在存储过程运行时从其中插入变量值 这允许我查看脚本中给定点的任何变量的值 但是有没有更好的方法来调试 MySQL 存储过程 下列debug msg可以调用过程来简单地将调
  • VS 2012 中缺少实体数据模型

    添加新项目时 我在 数据 选项卡下找不到实体数据模型 我查看了几个问题和答案以及有关此问题的信息 但没有一个解决方案有效 我已修复 卸载并重新安装 手动安装 EF Tools 包并尝试卸载所有 VS 相关程序 我还尝试在不同的 NET 框架
  • 如何获取与值匹配或存在于另一个表中的记录?

    我试图弄清楚在这种情况下如何获取所有任务 其中两个字段等于某个值或者它们存在于另一个表中 这是查询 SELECT TASKS task id TASKS task title TASKS task description TASKS tas
  • ASP.NET 网站“发布”与 Web 部署项目

    如果我决定对 ASP NET 网站使用 发布 选项 而不是 Web 部署项目 我可以执行自定义 msbuild 操作吗 或者 如果我想在编译 部署期间执行自定义 msbuild 操作 我是否需要坚持使用 WDP 我认为发布选项是 VS NE
  • 非关系数据库设计[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我有兴趣了解您使用过的设计策略非关系型 nosql 数据库 也就是说 不使用传统关系设计或 SQL 的 大多数是新的 数据存储类 例如
  • 为什么 Visual Studio 2022 在 NuGet 包还原期间不再提示我输入凭据?

    我在 Visual Studio 2022 中有一个 Net Core C 解决方案 它使用多个需要凭据的 NuGet 包 我在尝试恢复 NuGet 包时遇到了凭据 密码不正确的问题 Visual Studio 之前在恢复时提示我输入凭据
  • 当我结束调试时,如何防止 Visual Studio 2013 关闭我的 IIS Express 应用程序?

    此前在 2012 年 如果我在 Chrome 中进行调试 例如 然后停止调试器 网站将继续在 IIS Express 中运行 2013年 情况似乎不再如此 这是我需要做出的新改变吗 即使停止调试器后如何保持网站实例运行 谢谢 关闭新的 启用
  • 使用 Greasemonkey 时存储数据

    使用 Greasemonkey 时是否有存储大量数据的好方法GM setValue只是没有削减它 那么这里有一些选项 设置服务器来保存数据 对于用户 并使用 xhr 来 创建 编辑 删除数据 谷歌应用程序 发动机 GAE http code
  • 通过 Matlab 访问 Physionet 的 ptbdb 中的数据库

    我首先设置系统 old path which rdsamp if isempty old path rmpath old path 1 end 8 end wfdb url http physionet org physiotools ma
  • 具有实体框架的 MVC 控制器的 T4 模板 - 主机的成员属性 (MvcTextTemplateHost)?

    有谁有我可以在 MVC 3 附带的 T4 模板 ControllerWithContext tt 中使用的 Host 对象成员的完整引用吗 我已经尝试了我能想到的所有谷歌搜索 但唯一相关的结果是这个页面 http blogs msdn co
  • 运行 t4 脚本作为 resx 文件的自定义工具

    我有一个资源文件MyResource resx 我想改变MyResource Designer cs文件生成 我有一个 t4 脚本 它接受 resx 文件作为输入并给出结果转换 但是 我必须手动运行此 t4 才能使其工作 我看到 resx
  • PHP 中的 MongoDB - 如何将项目插入集合中的数组中?

    这必须很容易 但我似乎无法弄清楚 假设我有一个集合users这是集合中的第一项 id ObjectId 4d8653c027d02a6437bc89ca name Oscar Godson email email protected cdn
  • 什么是数据库池?

    我只是想了解数据库连接池的概念以及它是如何实现的 数据库联系池是一种用于保持数据库连接打开的方法 以便其他人可以重用它们 通常 打开数据库连接是一项昂贵的操作 尤其是在数据库位于远程的情况下 您必须打开网络会话 进行身份验证 检查授权等等
  • 如何在列上创建外键,该列的每条记录都可能引用多个表之一中的列?

    我正在创建一个社交网络 它有新闻 照片等多个实体 可以有评论 由于所有评论都具有相同的列并且行为方式相同 唯一的区别是它们的类型 新闻 照片或将来添加的其他内容 我决定为所有评论创建一个表 其中的列名为type 它工作得很好 直到我决定将外
  • 将古吉拉特语文本插入 MySQL 表会产生垃圾字符和不可读的文本

    我有三个 MySQL 表 我正在向其中插入古吉拉特语内容 当我插入两个表时 它们插入得很好并且可读 但在一个表中 它显示垃圾字符 不可读的文本 我怎样才能解决这个问题 MySQL 有每个表的字符集设置 http dev mysql com
  • 对多个数据库执行 SQL 查询

    我知道我的帖子与该论坛中的其他帖子的标题非常相似 但我真的找不到我需要的答案 这是我的问题 我的 Windows Server 上运行着 SQL Server 在我的 SQL Server 中 我有大约 30 个数据库 它们都具有相同的表和

随机推荐