2015-02-24 39 views
-1

我试图决定构建我的用户表的最佳方式。用户可以访问多个“品牌”,每个品牌都有多个表格。也就是说,如果用户X想要查看品牌Y的数据,那么数据库将包含有关我需要拨打哪些表的信息。在mySQL中构造用户表

例如,用户X可以访问Brand1和Brand2。 Brand1在table1,table2和table3中有它的数据。 Brand2在table4,table5,table6中有它的数据。用户选择品牌2,应用程序发出呼叫,以查明在使用者选择不同品牌之前应使用表格4,表格5,表格6。

如果知道单个品牌可能有多个用户可以访问这些数据,那么构建这种结构的最佳方式是什么?

我需要的不仅仅是一个用户表吗?如果是,还需要什么以及如何连接到用户表?

谢谢。

+4

每个品牌的一张桌子....糟糕设计的天堂......一个“用户”表,一个“品牌”表和一个“user_brand”表,它将用户链接到品牌(定义哪些品牌用户可以看到) – 2015-02-24 20:17:14

+0

我想它会是多个表,但我坚持每一个(即列是什么)。如果我制作一个品牌表,并且想要包含哪些用户可以访问,那么哪些专栏尤其需要指示多个用户访问该品牌? – jonmrich 2015-02-24 20:20:44

+0

不要过度使用表...阅读更多关于规范化http://en.wikipedia.org/wiki/Database_normalization - http://holowczak.com/database-normalization/ – bakriawad 2015-02-24 20:22:02

回答

-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`"); 
1

像马克·贝克指出,你可以有一个用户表,一个表的品牌和一个user_brand表。

用户表 - 商店USER_ID(和其他用户数据) 品牌表 - 商店brand_id(和其他品牌的数据)

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

  • 一个用户可以访问多个品牌。
  • 一个品牌可以被很多用户访问。

表user_brand解决了访问问题。

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

这是关于sql语法(强制实施外键约束)的example