一尘不染

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

sql

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

说我有一个规范化的数据库。整个系统的主键是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)

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

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


阅读 116

收藏
2021-03-10

共1个答案

一尘不染

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

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

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

2021-03-10