当前位置: 首页 > 面试题库 >

SQL Server标准化策略:varchar vs int Identity

张建树
2023-03-14
问题内容

我只是想知道什么是最佳解决方案。

说我有一个规范化的数据库。整个系统的主键是varchar。我想知道的是,我应该将此varchar与int相关联以进行规范化还是将其保留?保留为varchar更简单,但可能会更优化

例如我可以有

People
======================
name      varchar(10)   
DoB       DateTime    
Height    int

Phone_Number
======================
name      varchar(10)   
number    varchar(15)

否则我可能有

People
======================
id        int Identity   
name      varchar(10)   
DoB       DateTime  
Height    int

Phone_Number
======================
id        int   
number    varchar(15)

当然,还要添加其他几个一对多的关系。

你们怎么想 哪个更好?为什么?


问题答案:

您真的可以使用名称作为主键吗?几个名字相同的人是否存在很高的风险?

如果您真的很幸运,可以将您的name属性用作主键,那么-一定要使用它。不过,通常情况下,您必须弥补一些不足,例如customer_id等。

最后:“ NAME”是至少一个DBMS中的保留字,因此请考虑使用其他名称,例如全名。



 类似资料:
  • 掘金量化策略文档 目录 双均线策略(期货) alpha对冲(股票+期货) 集合竞价选股(股票) 多因子选股(股票) 网格交易(期货) 指数增强(股票) 跨品种套利(期货) 跨期套利(期货) 日内回转交易(股票) 做市商交易(期货) 海龟交易法(期货) 行业轮动(股票) 机器学习(股票)

  • 实体类: DTO: 将实体转换为DTO的代码: 输出: 我在U中使用了2种引用类型名称和地址ser.java.在为User创建对象时,我也传递了名称和地址详细信息。当我尝试将User对象映射到UserDTO时,名称详细信息被成功映射,但地址详细信息没有被映射。 有谁能帮我理解为什么会这样,或者我错过了什么?

  • Kali Linux和Offensive Security希望我们的商标在网络社区获得广泛的认同,但是也要确保我们的商标用于我们的公司和产品.我们的商标核心策略是信任-避免用户在与Kali Linux和/或Offensive Security交涉的问题上产生误会.这影响到渗透测试发行版的开发和分发(例如Kali Linux)的可信度. 这份文档展示和描述我们的商标,并提供合理使用它们的指南.我们很

  • 前端标准化 本篇文章主要讲解什么是前后端分离,为什么要做前后端分离,还包括如何将前端工程化、前端编码约定、如何进行写RESTFul资源接口。 我们将前端分成两个工程: 1) WEB工程:主要提供RESTFul资源接口。 2) HTML工程:主要H5和JS,实现前端MVC分层,实现多端的能力。 前端标准化目标:代码可维护、可重构,组件化、可扩展【多端】

  • 我的问题是批处理规范化(BN)正在规范化什么。 我在问,BN是单独标准化每个像素的通道还是一起标准化所有像素的通道。它是在每张图像的基础上还是在整个批次的所有通道上进行的。 具体而言,BN在X上运行。比如说,。因此,当轴=3时,它在“c”维度上运行,即通道数(对于rgb)或特征图数。 因此,假设X是rgb,因此有3个通道。BN是否做到了以下几点:(这是BN的简化版本,用于讨论维度方面。我知道gam

  • 问题内容: 我目前正在将服务器从硬盘驱动器上的MyISAM切换到SSD上的InnoDB。 我有一个 3,800,000行(16GB)的 表作为基准表。 我的服务器设置: Ubuntu 64 + Nginx + MySQL 5.5 + … 我有两件事要测试,请牢记: 从硬盘驱动器切换到SSD将如何影响并发性 从MyISAM切换到InnoDB将如何影响并发性 我对工具和策略都有疑问: 由于我对并发性最