0

我正在使用 PHP 5+ 和 MySQL 5+

我将很快开始为客户构建一个 Web 应用程序,但在开始之前,我想问一些关于基础设施的问题......

我正在为希望跟踪客户数据的 HR(人力资源)公司构建此 Web 应用程序。它将有人力资源(人民)、客户、联系人等表格,这些表格将通过关系相互链接。例如,应用程序的管理员会说 John 将在 X 时间段之间在客户 Doe 处。

没有什么特别的,但这里是我需要你帮助我思考的部分:

我正在为其执行此操作的客户在不同地区(城市)设有分支机构,每个办公室都有一些管理员,他们将在我的应用程序中工作,只使用“他们的”客户数据。并且会有人使用多个领域的数据。

因此,在成功登录后,他们应该只看到来自他们所连接的 city_id 的数据。

我可以通过将“city_id”列添加到我的所有表中,然后在登录表单中开始一个,然后像 我猜$_SESSION['city_id'] 的那样编写我的 MySQL 查询 来做到这一点。"SELECT * FROM company WHERE city_id={$_SESSION['city_id']}

但我希望它简单灵活,超级管理员应该能够添加新城市,并将其链接到新客户。

我应该如何构建我的数据库结构?我应该如何让超级管理员能够创建新城市并将其动态链接到其他表?

我正在考虑使用 X + 2 结构,例如 X 可以是表 Customer,另外两个是 City_list 和 City_handler。City_list 将包含所有可用的城市,City_handler 将存储与哪个城市相关联的谁和什么。这是一个坏主意吗?

如果我有一个看起来像这样的数据库结构,那么在实践中应该如何实现:

客户
customer_id
customer_name

City_list
city_id
city_name

City_handler
customer_id
city_id

如果您能帮我将这些与 FK 联系起来(我猜?)并告诉我一些如何工作以及可能出现的问题,我将非常感激,因为这将是一个围绕整个解决方案的核心功能,帮助我开始!

4

1 回答 1

0

用户

编号 | 姓名

城市

编号 | 姓名

users_to_citys

用户 ID | city_id

每个用户可以服务任意数量的城市,城市数量可以轻松更改。

现在您只需为每个对象指定城市并检查用户是否有权管理它们。

一些代码:

$res = mysql_query("SELECT city_id FROM users_to_citys WHERE user_id = ". (int)$uid);
while($array = mysql_fetch_assoc($res)) {
    $citys[] = $array['city_id'];
}
$_SESSION['citys'] = $citys;
$_SESSION['citys_syfix'] = ' AND city_id IN('. implode(',',$citys) .') ';
于 2012-05-16T10:07:25.493 回答