我应该从客户端收集的基本电子商务网站最重要的数据是什么?
这些是由部分分开的一些数据(这不是一个表格设计,因为它可以完全或分开,但稍后会进入):
登录凭据:
email, password
秘密问题数据:
secret question, secret question answer (or other method)
客户数据:
name, last name, birthday, address, city, state,
country, postal code, phone, cellphone
从上面我可能会遗漏一些东西,但如果你能指出我可以为注册模式收集的任何其他有益数据,我将不胜感激。
我是否还应该拥有用户名并允许用户选择要用于登录的用户名?这会带来什么好处吗?
我应该使用哪种字段类型最好地描述下面的每个字段?我已定义的任何我应该改变或考虑的内容?
这是我现在想作单表的设计示例:
id int(X) PRIMARY auto increment
email varchar(X) UNIQUE
password_hash varchar(64)
password_salt varchar(6)
language tinyint(1)
time_offset varchar(5)
secret_question_id tinyint(3)
secret_question_answer varchar(X)
name varchar(X)
last_name varchar(X)
birthday datetime
address varchar(X)
address_complement(X)
city_id int(X)
city varchar(X)
state_id int(X)
state varchar(X)
country_id int(X)
postal_code int(X)
phone_regional_ext int(X)
phone int(X)
cellphone_regional_ext int(X)
cellphone int(X)
ts_register datetime
ts_last_update timestamp NULL on update CURRENT_TIMESTAMP
status tinyint(1)
标有X的东西我仍然需要检查并查看可接受的大小或正确的字段类型。
至于state和state_id以及正在考虑国家的city和city_id我没有那种可用的数据,允许用户自己输入或选择系统中可用的数据。
答案 0 :(得分:1)
一般
我会将用户个人资料的用户帐户详细信息泄露到2个表格中。
我会默认使用用户名,因为我认为登录更快更容易。
您可以考虑添加性别字段。地点,年龄和性别数据可以帮助您更好地推广您的产品或服务。
答案 1 :(得分:1)
安全问题
请注意,secret question
会破坏整个安全系统。因为你正在以明确的方式存储秘密答案和秘密问题。
我建议不使用它。将重置密码通过电子邮件发送到确认的电子邮件地
如果你必须使用秘密问题的错误概念(在用户的Facebook页面上答案是一个简单的谷歌)。
至少将答案存储为:
answer_hash = SHA2(CONCAT(salt, lowercase(answer)),512)
我是否还应该拥有用户名并允许用户选择要用于登录的用户名?这会带来什么好处吗?
•我应该使用多个表吗? •为什么?什么时候 ?组织以外的任何收益?
我认为不需要,1表现在可以正常运行,它会简化您的数据库 如果您想稍后将数据拆分为2个表,则可以使用视图来组合表。
•当我需要使用内部或左侧连接检索它时,在某种程度上这不是很糟糕吗?
使用左连接检索可选数据 使用内部联接检索链接1对1的数据。
如果您加入主键,则不会花费大量时间,但仍需要时间。
答案 2 :(得分:1)
老实说,我不确定StackOverflow是否是满足您需求的最佳位置,但我会根据自己的经验添加一些项目。
大多数电子商务系统将“送货地址”和“帐单地址”视为单独的数据属性。
大多数电子商务系统允许用户存储多个地址,并保留历史记录。
大多数电子商务系统都存储客户联系首选项 - 新闻信件,这些信息可以排序。
大多数电子商务系统都存储客户付款方式(但信用卡号等敏感数据要么被遗漏,要么加密)。
大多数电子商务系统都会存储多种付款方式,并附有历史记录。
某些电子商务系统存储个性化数据,例如产品偏好等。
对于大多数这些数据项,您可能需要将它们存储在单独的表中,然后加入它们。你问是否有“组织”以外的任何好处 - 对于某些概念,几乎不可能在不引入新表的情况下存储所需的数据。例如,如果要为给定用户存储多个传递地址,则地址数据应位于单独的表中。 这不是一个错误 - 这是一个功能。连接不是“坏” - 它们只消耗最少的资源(只要你加入索引字段)。