SQL表名,应该用复数还是单数

本文探讨了在数据库命名中使用单数形式的原因,包括概念直观性、便利性、优雅性、全球化考虑、简化拼写和提高效率等方面。通过比较单数和复数形式,展示了统一使用单数形式带来的好处。

用单数形式更佳,理由如下:

1、概念直观。 你有一个袋子,里面有好多个苹果,你会说这是个苹果袋。但无论里面有0,1,百万个苹果,它依然是个袋子。表也是如此,表明需要描述清楚,表里面包含的对象,而非有多少个数据。

2、便利性 单数形式更简单。有一些单词,它的复数形式可能是非常规的,或者就没有复数形式,但是单数不一样,单数形式则没那么多讲究。有些单词的复数,可能会想到你头大,可能得好好google才出来

3、优雅 特别是一些master-detail形式的资源名称,统一用单数,读起来更方便,对齐更整齐,从顺序上更有逻辑性。 对比下 单数: OrderOrderDetail 复数: OrderDetailsOrders

4、简单朴素 设想下,不管是表名,主键,关系,实例Classes,你都可以统一用单数,所有看上去那么统一,也不用费心地各种复数单数中转换你的思维 Customer、Customer.CustomerID、CustomerAddress、public Class Customer {...}、SELECT * FROM Customer WHERE CustomerID = 100。 一旦你确定,要处理的这个对象,名字定为Customer,那么所有和数据库相关的交互、编程就都将使用这个单词

5、全球化 假设你身处一个全球化的团队,成员中有些人,母语不是英文,对他们来说,辨认、书写一个单词的复数形式,要更困难,会给他们带来麻烦,也给团队合作带来麻烦。

6、这可以节省你的拼写时间,硬盘空间,甚至让你的键盘更“长寿” SELECT Customer.CustomerName FROM Customer WHERE Customer.CustomerID = 100、SELECT Customers.CustomerName FROM Customers WHERE Customers.CustomerID = 100 看这两条语句,你可以省下3个字母,3个字节,3次键盘敲击
最后,我还认为,你应该给一些容易冲突的名字加个前缀,例如User,要把对应的前缀加上,也就是 User > LoginUser, AppUser, SystemUser, CMSUser,...

-- ClinicDB 数据库核心实验完整SQL代码(含字段容错方案) -- 说明:若某字段报错,按代码内注释提示替换即可,默认用复数(Doctors/Patients),单数需手动改为Doctor/Patient -- 1. 医生查询:获取医生姓、职称及个人简介 SELECT DoctorName AS 医生姓, Title AS 职称, DoctorIntro AS 个人简介 -- 报错替换方案:PersonalProfile 或 Profile FROM Doctors; -- 报错替换:Doctor(单数) -- 2. 门诊就诊查询:筛选自费就诊记录(含就诊日期、病人编号) SELECT PatientID AS 病人编号, VisitDate AS 就诊日期, PaymentType AS 费用类型 -- 报错替换方案:CostType(最常用替换项) FROM Mz_Visit_Info WHERE PaymentType = '自费'; -- 替换字段时,此处需同步修改(与SELECT保持一致) -- 3. 门诊就诊统计:按病人分组,统计随诊/住院病人的就诊次数 SELECT v.PatientID AS 病人编号, COUNT(VisitID) AS 就诊次数, -- 报错替换方案:COUNT(*)(兼容无VisitID主键的) v.VisitDate AS 就诊日期, v.DisposalMethod AS 处置方式 -- 报错替换方案:Disposal(简化版)或 TreatmentMethod(完整版) FROM Mz_Visit_Info v -- v,简化多关联/分组逻辑 WHERE v.DisposalMethod IN ('随诊', '住院') -- 替换字段时,此处需同步修改 GROUP BY v.PatientID, v.VisitDate, v.DisposalMethod -- 非聚合字段必须包含在GROUP BY中 ORDER BY 就诊次数 DESC; -- 按就诊次数降序排列,优先显示就诊频繁的病人 -- 4. 病人查询:计算病人年龄+统计性别分布(双功能场景) -- 4.1 计算病人年龄(以MySQL语法为例,其他数据库可保留核心逻辑) SELECT PatientName AS 病人姓, Sex AS 性别, -- 报错替换方案:PatientSex(避免与其他Sex字段冲突) TIMESTAMPDIFF(YEAR, BirthDate, CURDATE()) AS 年龄 -- 报错替换方案:BirthDate→PatientBirth FROM Patients; -- 报错替换:Patient(单数) -- 4.2 统计不同性别的病人数量 SELECT Sex AS 性别, -- 替换字段时,此处需与4.1保持一致 COUNT(*) AS 病人数量 FROM Patients GROUP BY Sex;
最新发布
10-23
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值