首先需要提一下我是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
信息?我想我做的方式不对。
答案 0 :(得分:2)
我了解到最好不要混合表,我的意思是如果你有用户表,不要将购物车信息添加到其中,将来会很难读取表格,你不会理解为什么你添加了这些信息进入用户表。
问题是客户是什么?非用户,只是访问者或用户?
如果他们是用户,您应该使用unique id
,user_id
,client_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