我正在整理一个位置数据库,以查找给定地址的最近位置。当我开始列出关于我的业务的表时,我想知道其他人在做什么以及是否存在针对某些常见数据类型的“最佳实践”。如电话号码,地址甚至经纬度。
这是我到目前为止所拥有的。有什么建议或改进吗?
这些都应该是美国地址,仅供参考。
Column DataType
------ ------------
id int
city nvarchar(100)
address nvarchar(100)
address2 nvarchar(100)
state varchar(2)
zip nvarchar(10)
phone nvarchar(14)
fax nvarchar(14)
name nvarchar(100)
latitude float
longitude float
notes text
答案 0 :(得分:3)
我使用varchar(max)或nvarchar(max)而不是text ...我认为TEXT是“老路”
答案 1 :(得分:2)
您的电话号码应该支持更多字符。有了今天的VOIP电话网络,一些从正常电话线转换到VOIP电话线的业务有时会为新的电话分机提供大量电话。
例如,当我想在工作时给我的女朋友打电话时,我必须拨打像
这样的内容1-888-555-5555 x667833
如果您想要将其删除所有符号(18885555555667833),那么这是17个字符。如果你想允许自由文本(比如 1-888-555-5555请求Bob ),你应该考虑更多的字符。
答案 2 :(得分:2)
我发现使用从hCard microformat借来的名字很有用。其中一些是针对人的,一些是针对地址的,并且它与hCard规范没有按1:1排列,但是,到目前为止,这个子集非常有用:
honorificPrefix nVarChar(20)
givenName nVarChar(50)
additionalName nVarChar(50)
familyName nVarChar(50)
nickName nVarChar(50)
honorificSuffix nVarChar(20)
fn nVarChar(50) -- # Formatted name
email nVarChar(255)
title nVarChar(50)
role nVarChar(50)
organizationName nVarChar(100)
organizationUnit nVarChar(100)
streetAddress nVarChar(100)
extendedAddress1 nVarChar(100) -- # hCard specs support any number of these
extendedAddress2 nVarChar(100) -- # I've not seen a need for more than two.
locality nVarChar(55)
region nVarChar(2)
postalCode nVarChar(20)
postOfficeBox nVarChar(20)
countryName nVarChar(50)
phone nVarChar(25)
fax nVarChar(25)
latitude float
longitude float
经验表明,列出的数据类型和大小已经适用于美国各地的人员和组织的各种目录。但是,我喜欢这里的一些评论,这些评论表明电话号码的数据类型更大。此外,我不相信将纬度和经度存储为漂浮是可行的方式,因此您的milage可能会有所不同。
祝你好运!答案 3 :(得分:2)
我不会长时间使用float。我已经看到一些非常糟糕的舍入问题,当这样做并且在一个lat长计算中舍入可能会把你放在错误的位置。请改用小数类型并定义所需的位数。
答案 4 :(得分:1)
考虑到你只想要美国地址,我会使用varchar来传真,电话和邮编。您甚至可以将varchar用于city,address和AddressExtra。
如果你要打印地址,你可能需要一些方法来逐行分解,但你只有一列,这可能有点短。
我会将笔记规范化到自己的表中,因此您可以按日期或类型跟踪它们。
你可能想要一个状态,“N”ew,“D”复制,“X”删除,“A”ctive等。
答案 5 :(得分:0)
该数据库将用于哪个行业?
许多行业都有标准可以作为对象,表格和数据类型的设计和实现的指导。
例如,在使用医疗保健和保险信息后,影响我设计的一个标准是“ANSI ASC X12N 837医疗索赔(837)”。
如果您希望从外部系统导入或导出信息,我会使用行业标准作为指导。
答案 6 :(得分:0)
我不会那么大胆地称这些最佳实践,但是我在这里学到了很多建议:
答案 7 :(得分:0)
我从未想过如何“评论”而不是“回答”
但是我没有关注有关lat / long的舍入问题的警告。圆形到四个十分位置的度数是两米以下的最大误差。如果你在两米之外,你会迷路吗?如果是这样,那么没有GPS设备可以帮助你。
虽然如果您使用谷歌地图使用的任何地址将地址转换为纬度/经度,您可能会被阻止。