如果我理解正确,在您的系统中将业务定义为“用户组”,并且整个系统引用属于用户的数据而不是属于业务的数据。您正在查找属于属于特定业务的所有用户的数据。在这种情况下,做到这一点的最佳且最具扩展性的方法是创建两个表来包含业务和业务用户关系。
例如,假设您有以下表格:
business => Defines a business entity
id (primary)
name
Entry: id=4, name=CompanyCorp
user => Defines each user in the system
id (primary)
name
Entry: id=1, name=Geoff
Entry: id=2, name=Jane
business_user => Links a user to a particular business
user_id (primary)
business_id (primary)
Entry: user_id=1, business_id=4
Entry: user_id=2, business_id=4
基本上,business_user
表定义的关系。例如,Geoff与CompanyCorp有关,因此该表中存在一行匹配id
的行。这被称为关系数据库模型,并且是在数据库开发领域中理解的重要概念。你甚至可以允许一个用户属于多个不同的公司。
要查找所有用户自己所在的公司ID = 4 ......
SELECT `user`.`name` as `username`, `business`.`name` as `businessname` FROM `business_user` LEFT JOIN `user` ON (`user`.`id` = `business_user`.`user_id`) LEFT JOIN `business` ON (`business`.`id` = `business_user`.`business_id`) WHERE `business_user`.`business_id` = 4;
结果将是名字和他们的公司名称,:
username businessname
-> Geoff CompanyCorp
-> Jane CompanyCorp
我希望这有助于!
============================================== =================
根据您在回复中的回复“案件”的增编。
您可以创建情况新表,然后引用在那里单独列的商务和用户ID,视情况将属于既是用户,又一个企业,如果这是你所需要的所有功能。
尽管如此,进一步探索关系数据库的想法,即您希望将多个用户分配给一个案例,但您希望将一个用户当选为“组长”,那么您可以按如下方式处理该问题:
- 创建表“案例”来存储的情况下
- 创建表“user_case”到店的情况下,用户的关系,就像在business_user表。
定义user_case
表如下:
user_case => Defines a user -> case relationship
user_id (primary)
case_id (primary)
role
Entry: user_id=1, case_id=1, role="leader"
Entry: user_id=2, case_id=1, role="subordinate"
你甚至可以更进一步,在界定什么样的角色的用户可以承担与定义的表。然后,您甚至可以将user_case
表更改为使用role_id
,而是将来自另一个role
表的数据连接起来。
这可能听起来像是一张非常小的表格的日益深化的模式,但请注意,我们已经为user_case
关系表添加了一个额外的列。应用程序越大,您的桌子越多,横向增长的列越多。相信我,为了定义关系,你最终会停止添加新表格。
为了举例说明如何灵活这可能是一个简单的例子,用role
表,你可以找出所有的角色给定用户(其中user_id = 6
)具有通过使用相对较短的查询,如:
SELECT `role`.`name` FROM `role` RIGHT JOIN `user_case` ON (`user_case`.`role_id` = `role`.`id`) WHERE `user_case`.`user_id` = 6;
如果您需要更多示例,请随时留言。
你在正确的道路上。创建一个持有企业的表格,然后将用户与这些业务关联起来。然后,每条数据都应该有一个带有要查询的商业ID的索引列。 – 2013-02-24 01:57:51
@BenD我想这似乎是唯一合乎逻辑的方法。因此,对于与业务关联的每个表,我会创建一个链接到业务主键的外键?我想我回想一段时间以来,将多个相关表链接到表主键并不是一个好主意。 – Scott 2013-02-24 02:04:43