在mySQL中构建用户表

时间:2015-02-24 20:12:05

标签: php mysql

我正在尝试确定构建用户表的最佳方法。用户可以访问多个“品牌”,每个品牌都有多个表格。也就是说,如果用户X想要查看品牌Y的数据,则数据库包含说明我需要调用哪些表的信息。

例如,用户X可以访问Brand1和Brand2。 Brand1在table1,table2和table3中有其数据。 Brand2的数据见表4,表5,表6。用户选择Brand2,应用程序调用以查明table4,table5,table6应该被使用,直到用户选择不同的品牌。

知道单个品牌可能拥有多个可以访问数据的用户,最好的结构方法是什么?

我是否需要的不仅仅是用户表,如果是这样,还有什么以及如何连接到用户表?

感谢。

2 个答案:

答案 0 :(得分:1)

像Mark Ba​​ker指出的那样,你可以有一个用户表,一个品牌表和一个user_brand表。

用户表 - 存储user_id(和其他用户数据) 品牌表 - 存储brand_id(和其他品牌数据)

您已经定义了用户和品牌之间的关系。它的M:N(多对多),这意味着:

  • 一个用户可以访问多个品牌。
  • 许多用户都可以访问一个品牌。

表user_brand解决了访问问题。

user_brand表 - 存储user_id和brand_id(以及更好地描述此关系的可选数据)。

这是关于sql语法的example(强制执行外键约束)。

答案 1 :(得分:-2)

您可以使用GRANT查询,这样用户只能访问数据库中的2个表,然后在应用程序中,您可以编写它以选择1个表,直到用户更改品牌。品牌本身就是表,不是吗?

在PHP代码中,代码和查询应如下所示:

<?php
$db = new mysqli('hostname', 'db_username', 'db_password', 'db_name');
$brand = $_SESSION['brandName']; // use this if you use sessions to cache the data
$db->query("SELECT * from `$brand`");