我正在建立一个非常小的MySQL数据库,用于存储名字、姓氏、电子邮件和电话号码,并且正在努力为每个字段找到“完美”的数据类型。我知道没有完美的答案,但对于像这样的常用字段,必须有某种通用的约定。例如,我确定一个未格式化的美国电话号码太大,无法存储为无符号整数,它必须至少是一个大整数。
因为我相信其他人可能会发现这很有用,所以我不想把我的问题限制在我上面提到的字段上。
哪些数据类型适用于常见的数据库字段?像电话号码,电子邮件和地址这样的字段?
发布于 2008-12-10 00:57:35
有人会发布一个比这个更好的答案,但只是想说明一点,就我个人而言,我永远不会在任何类型的整数字段中存储电话号码,主要是因为:
不过,总的来说,我似乎几乎只使用:
对于任何ID或引用另一个ID的内容,
time
当然也有例外,但我发现这涵盖了大多数可能性。
发布于 2009-12-29 07:40:59
以下是我使用的一些常见数据类型(虽然我不是很专业):
| Column | Data type | Note
| ---------------- | ------------- | -------------------------------------
| id | INTEGER | AUTO_INCREMENT, UNSIGNED |
| uuid | CHAR(36) | or CHAR(16) binary |
| title | VARCHAR(255) | |
| full name | VARCHAR(70) | |
| gender | TINYINT | UNSIGNED |
| description | TINYTEXT | often may not be enough, use TEXT
instead
| post body | TEXT | |
| email | VARCHAR(255) | |
| url | VARCHAR(2083) | MySQL version < 5.0.3 - use TEXT |
| salt | CHAR(x) | randomly generated string, usually of
fixed length (x)
| digest (md5) | CHAR(32) | |
| phone number | VARCHAR(20) | |
| US zip code | CHAR(5) | Use CHAR(10) if you store extended
codes
| US/Canada p.code | CHAR(6) | |
| file path | VARCHAR(255) | |
| 5-star rating | DECIMAL(3,2) | UNSIGNED |
| price | DECIMAL(10,2) | UNSIGNED |
| date (creation) | DATE/DATETIME | usually displayed as initial date of
a post |
| date (tracking) | TIMESTAMP | can be used for tracking changes in a
post |
| tags, categories | TINYTEXT | comma separated values * |
| status | TINYINT(1) | 1 – published, 0 – unpublished, … You
can also use ENUM for human-readable
values
| json data | JSON | or LONGTEXT 发布于 2008-12-10 01:01:55
根据我的经验,名字/姓氏字段应该至少包含48个字符--有些国家的名字全称非常长,比如马来西亚或印度。
你应该始终把电话号码和邮政编码当做文本,而不是数字。()通常给出的原因是有以0开头的邮政编码,在某些国家/地区,电话号码也可以以0开头。但真正的原因是它们不是数字--它们是恰好由数字组成的标识符(这忽略了像加拿大这样邮政编码中有字母的国家)。因此将它们存储在文本字段中。
在MySQL中,您可以将VARCHAR字段用于此类信息。虽然这听起来很懒惰,但这意味着你不必太在意合适的最小大小。
https://stackoverflow.com/questions/354763
复制相似问题