Dan*_*cco 5 mysql sql database database-design
我正在为一个新项目设计数据库,我不确定是否应该使用INT,CHAR或VARCHAR作为员工的社会安全号码.在我的国家,SSN由11位数字组成.
请注意,我将在此表上使用ID列作为主键,因此SSN不会用作密钥.
INT注意事项:无法在列上错误地存储文本,这很好,但我无法确保插入的值具有正确的位数.
CHAR注意事项:我可以确保条目具有正确的位数,但我不能确定这些是数字,并且SSN的长度将来可能会增加.
VARCHAR注意事项:没有其他两个的任何好处,但是是最灵活的,例如,如果长度改变则不会受到影响.
SSN是否有标准数据类型?你们用的是什么?
虽然SSN只是数字,但它不代表单个数字.您不会在整个SSN上进行任何数值计算,因此将其存储为数字实际上没有多大意义.
将它存储为数字会占用更少的空间,但不会太多,因为您需要一个bigint(8个字节)来保存一个11位数字.使用a varchar将使用11个字节作为字符,使用另一个字节作为长度,因此差异不足以激励将其存储为数字.
关于验证SSN的长度和内容,这实际上是用户界面的工作.数据库不应该允许任何损害数据完整性的东西,但是无效的SSN不会以这种方式造成伤害.
我会使用a varchar,因为它提供了你提到的灵活性.
| 归档时间: |
|
| 查看次数: |
13057 次 |
| 最近记录: |