管理DB table.users以进行未来开发的理想方式?

时间:2013-12-21 11:46:07

标签: php mysql database-table

首先需要提一下我是PHP / MySQL的新手。我想从您的经验中了解到,处理tbl.users表行的最佳方式或方法是什么,以便将来开发以及与Web应用程序上的其他功能兼容?

目前,我的表名users如下所示:

id  catid   firstname   lastname    username    email   password    status  image
14  21      Joe1        Doe         joe1.doe    jd@m.cc sha512ed    1       pic.jpg
15  17      Joe2        Doe         joe2.doe    jd@m.cc sha512ed    1       pic.jpg
18  22      Joe3        Doe         joe3.doe    jd@m.cc sha512ed    1       pic.jpg
33  20      Joe4        Doe         joe4.doe    jd@m.cc sha512ed    1       pic.jpg

现在当我完成用户时,我想用产品和客户等创建一个基本的电子商务......这就是问题,如何解决这个问题而不需要重新创建一个表名clients

tbl.users attributes添加新列并将其存储在某些属性以扩展client = 1之类的功能或其他类似内容会更聪明吗?

所以它会变成这样:

id  username    ... attributes
14  joe1.doe    ... rememberme = 1, client = 1
15  joe2.doe    ... rememberme = 1, client = 0
18  joe3.doe    ... rememberme = 0, client = 0
33  joe4.doe    ... rememberme = 1, client = 1

意味着user.id = 14, 33将成为客户,并将在e-commerce component中正确显示?

如果没问题,我应该如何存储attributes信息?我想我做的方式不对。

2 个答案:

答案 0 :(得分:2)

我了解到最好不要混合表,我的意思是如果你有用户表,不要将购物车信息添加到其中,将来会很难读取表格,你不会理解为什么你添加了这些信息进入用户表。

问题是客户是什么?非用户,只是访问者或用户? 如果他们是用户,您应该使用unique iduser_idclient_id创建客户表, 非常基本的表格,可以让您获得用户拥有的客户端数量,并且将来您可以在表格中添加更多列,例如items_bought等等,如果用户获得多个列,您应该这样做客户,女巫我认为是这样。

但如果每个用户都有1个客户端(我不认为是这种情况),您可以将列添加到用户表client_of中,但是您不能存储多个客户端,只能存储一个。

所以对于未来,不要混合表,每个“主题”都应该有自己的表,我认为当然。

P.S 当你有2个表时你有很多选择,所以不要在两个表中添加相同的attr,将用户的所有信息添加到users表,如果你需要客户的用户信息,从客户端获取他的id表,然后从users表中获取信息,但如果您需要只有客户端需要的信息,则将该attr添加到客户端表。

编辑: 快速示例:

用户表:

`id`    `first_name`    `last_name`    `username`    `password`    `date`
`1`     `alex`          `maya`         `alex.maya`   `pass12`      `yesterday`
`2`     `bob`           `smith`        `bob.smith`   `pass43`      `today` 

客户表:

`id`    `user_id`    `client_id` 
`1`     `1`          `2`
`2`     `2`          `1`

这张表说亚历克斯买的是鲍勃和从亚历克斯购买的鲍勃,让我说我是鲍勃,我想看看从我这里买的用户的信息:

$sql = "SELECT client_id FROM clients WHERE user_id = {$user_id}"; // output = the id of the users who are his clients.

`

答案 1 :(得分:0)

首先,我建议您阅读有关设计数据库的更多信息,特别是关于如何通过规范化获得最佳表格。 您将看到首先应该以图形方式设计数据库,制作一个包含实体和它们之间关系的简单图表。 作为面向对象的编程,您希望拥有更多通用表,其中包含几种类型共有的最小数据,例如,如果您的设计需要,您可以专注于Customers,Vendors,Employees等人员表。 下一步是询问这些实体是如何相关的,这样你就可以看到你需要一个新的关系表,或者只是在另一个表中添加一个唯一的ID。

在这里,我留下一个链接,以了解我之前提到过的问题:http://www.sqlcourse.com/index.html