Mysql 设计客户机数据表?
对于一个基本的电子商务网站,我应该从客户那里收集的最重要的数据是什么 这些是我脑海中出现的一些数据,这些数据以部分分开(这还不是一个表设计,因为它可以是完全的,也可以是分开的,但将在后面讨论):Mysql 设计客户机数据表?,mysql,database-design,Mysql,Database Design,对于一个基本的电子商务网站,我应该从客户那里收集的最重要的数据是什么 这些是我脑海中出现的一些数据,这些数据以部分分开(这还不是一个表设计,因为它可以是完全的,也可以是分开的,但将在后面讨论): 登录凭据: email, password 机密问题数据: secret question, secret question answer (or other method) 客户数据: name, last name, birthday, address, city, state, coun
- 登录凭据:
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标记的东西我仍然需要检查并查看可接受的大小或正确的字段类型
至于州和州id,以及正在考虑国家/地区的城市和城市id,我没有这样的数据可供用户自己输入或选择系统中可用的数据。通常
安全问题
请注意,
秘密问题
会破坏您的整个安全系统。因为你把秘密答案和秘密问题都储存在透明的地方
我建议不要使用它。改为将重置密码发送到已确认的电子邮件地址
如果你必须使用对秘密问题的错误理解(答案是在用户的Facebook页面上用一个简单的谷歌搜索)。至少将答案存储为:
answer_hash = SHA2(CONCAT(salt, lowercase(answer)),512)
我是否也应该有一个用户名,并允许用户选择要使用哪个用户名登录?这有什么好处吗
- 作为一个用户,我更喜欢电子邮件地址李>
- 它是独一无二的,我永远记不起我的用户名,但电子邮件地址很简单李>
- 电子邮件地址作为与用户的通信链接具有双重功能李>
- 如果您必须拥有电子邮件地址,添加用户名只是额外的工作,没有任何好处李>
- 如果用户名必须是唯一的,则会给用户带来更大的负担(没有人希望被命名为snowwhite 45875,因为snowwhite 1..45874已经被使用)
如果以后要将数据拆分为两个表,可以使用视图合并这些表 •当我需要使用内部联接或左联接检索它时会怎么样?这在某种程度上不是很糟糕吗 使用左联接检索可选数据。
使用内部联接检索链接1到1的数据
如果您使用主键加入,将不会花费大量时间,但仍然需要时间 安全问题
请注意,
秘密问题
会破坏您的整个安全系统。因为你把秘密答案和秘密问题都储存在透明的地方
我建议不要使用它。改为将重置密码发送到已确认的电子邮件地址
如果你必须使用对秘密问题的错误理解(答案是在用户的Facebook页面上用一个简单的谷歌搜索)。至少将答案存储为:
answer_hash = SHA2(CONCAT(salt, lowercase(answer)),512)
我是否也应该有一个用户名,并允许用户选择要使用哪个用户名登录?这有什么好处吗
- 作为一个用户,我更喜欢电子邮件地址李>
- 它是独一无二的,我永远记不起我的用户名,但电子邮件地址很简单李>
- 电子邮件地址作为与用户的通信链接具有双重功能李>
- 如果您必须拥有电子邮件地址,添加用户名只是额外的工作,没有任何好处李>
- 如果用户名必须是唯一的,则会给用户带来更大的负担(没有人希望被命名为snowwhite 45875,因为snowwhite 1..45874已经被使用)
如果以后要将数据拆分为两个表,可以使用视图合并这些表 •当我需要使用内部联接或左联接检索它时会怎么样?这在某种程度上不是很糟糕吗 使用左联接检索可选数据。
使用内部联接检索链接1到1的数据
如果您使用主键加入,将不会花费大量时间,但仍然需要时间 老实说,我不确定StackOverflow是否是满足您需求的最佳场所,但我会根据我的经验添加一些项目 大多数电子商务系统将“递送地址”和“账单地址”识别为单独的数据属性 大多数电子商务系统允许