mysql – 管理用户数据的正确方法是什么?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了mysql – 管理用户数据的正确方法是什么?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含5235字,纯文字阅读大概需要8分钟。
内容图文
![mysql – 管理用户数据的正确方法是什么?](/upload/InfoBanner/zyjiaocheng/896/e196fcda4cca493a9e5c97d734f1c3ed.jpg)
我正在尝试使用用户配置文件创建一个简单的注册登录脚本,我创建了一个具有以下结构的表:
+------------+---------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+---------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| username | varchar(32) | NO | | NULL | |
| password | varchar(32) | NO | | NULL | |
| first_name | varchar(50) | NO | | NULL | |
| last_name | varchar(50) | NO | | NULL | |
| email | varchar(1024) | NO | | NULL | |
| active | int(1) | NO | | 0 | |
+------------+---------------+------+-----+---------+----------------+
我应该如何存储其他数据,如:
country, user level, registration date, domain name, email activation key, last login date, and so on ...
我有2个选项(也许有更多我不知道):
>在这个表中创建这些列
>创建另一个与用户ID相关的表
我的问题是:
>如果以后我想添加更多要存储的数据,哪一个更好?
>如果我采用第一种方法使用一个表,如果我们已经拥有活跃用户,那么在以后添加更多列时会出现问题吗?
>如果我们采用第二种方法,我应该如何构建数据表?
谢谢你
更新:
您对此问题的WordPress方法有何看法? WordPress有一个具有这种结构的usermeta表吗?
+------------+---------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+---------------------+------+-----+---------+----------------+
| umeta_id | bigint(20) unsigned | NO | PRI | NULL | auto_increment |
| user_id | bigint(20) unsigned | NO | MUL | 0 | |
| meta_key | varchar(255) | YES | MUL | NULL | |
| meta_value | longtext | YES | | NULL | |
+------------+---------------------+------+-----+---------+----------------+
那么您如何看待这种存储用户数据的方式呢?应该在拥有大量用户的应用程序中考虑这个吗?
解决方法:
这是一个很好的“有不止一种方法可以做到这一点”的问题.
首先考虑一下您的数据使用情况:
考虑哪些字段将更频繁地被读取和写入.
例如,名字和姓氏可能只写了一次而且很少更改,但根据您的应用程序,它们可能会经常被阅读.
可以经常写入上次登录日期,并且您可能希望保留每个登录日期.
激活密钥和注册日期等问题可能会被写入一次,然后很少阅读.
您还应该考虑同时提取哪些数据,并尝试非规范化以使这些读取更快.例如,如果您总是将用户名和密码以及名字一起提取(但没有其他联系信息),请将firstname放在登录表中.也就是说,如果这些数据很大,请考虑避免连接,并善待自己.
还要考虑查询的“where”子句中可能包含哪些字段,以及这些字段的索引.
这是我可能采取的一种方式:
联系表
(一次插入,罕见更新,多次读取)
+------------+---------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+---------------+------+-----+---------+----------------+
| user_id | int(11) | NO | PRI | NULL | auto_increment |
| first_name | varchar(50) | NO | | NULL | |
| last_name | varchar(50) | NO | | NULL | |
| address | varchar(50) | NO | | NULL | |
| city | varchar(50) | NO | | NULL | |
| state | varchar(50) | NO | | NULL | |
| country | varchar(50) | NO | | NULL | |
| email | varchar(1024) | NO | | NULL | |
+------------+---------------+------+-----+---------+----------------+
登录表
(一次插入,可能更新,多次读取;需要first_name才能在登录时回显)
+------------+---------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+---------------+------+-----+---------+----------------+
| user_id | int(11) | NO | PRI | NULL | |
| username | varchar(32) | NO | | NULL | |
| password | varchar(32) | NO | | NULL | |
| first_name | varchar(50) | NO | | NULL | |
+------------+---------------+------+-----+---------+----------------+
登录历史表
(许多写入,每个user_id有多个条目)
+------------+---------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+---------------+------+-----+---------+----------------+
| user_id | int(11) | NO | MUL | NULL | |
| last_login | timestamp | NO | MUL | NULL | |
+------------+---------------+------+-----+---------+----------------+
注册表
(一次写,很少读)
+------------------+---------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------------+---------------+------+-----+---------+----------------+
| user_id | int(11) | NO | PRI | NULL | |
| registration_date| timestamp | NO | | NULL | |
| activation_key | varchar(50) | NO | | NULL | |
+------------------+---------------+------+-----+---------+----------------+
内容总结
以上是互联网集市为您收集整理的mysql – 管理用户数据的正确方法是什么?全部内容,希望文章能够帮你解决mysql – 管理用户数据的正确方法是什么?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。