我目前正在编写一种产品,该产品只有一个数据库,但将通过使用 customer_id 的全局标识符来托管许多客户端。
这一切都非常好。
但是,假设我们有一张名为 Ticket 的表。想法有一个主键。当用户添加工单时,工单将通过外键等方式与客户对应。
但是,对于每个客户,我希望他们的票证 ID 在他们注册时从 1 开始。
即客户 1 添加了 4 张票,ticket_id 计数将为 4。客户 2 注册,他们添加了一张票,然后ticket_id 将是 5,依此类推。这并不理想。
我的问题是,如果我不想使用多个数据库,我该如何解决这个问题?如果每当我进行更改时都会有数百个具有新列、索引等的数据库,那么必须更新的想法会极大地激怒我。
希望这是有道理的,我期待着您的意见。
编辑:标记为 symfony,因为我将在 symfony 中使用 Doctrine ORM 来管理数据库.... 可能无关紧要,但添加以防万一。
编辑:我也可能是愚蠢的,在这里遗漏了一些明显的东西,所以我很抱歉。
最佳答案
我是否理解每个客户都会从 1 开始按顺序列出他们的票?我将假设每个客户都有自己的票证,并且这些票证不会暴露给其他客户。你应该在你的问题中澄清这一点。
我建议在您的票证表中创建一个新列以用作引用号(我们称之为 ref_num)。当客户端 2 创建票证时,ticket_id 将为 5,但您的应用程序将知道将 ref_num 分配给该用户的 1。
为了使其正常工作,您需要找到一种方法来跟踪每个客户创建的票证数量。也许对于每个联系人,您可以有一个名为 ticket_count 的列,每次递增一。这样,在您的应用程序中,您只需提取此数字并将其增加 1 以更新您的计数并获得新的票号。
仅供引用,在这里我们不担心向用户隐藏信息。我们使用 ref_num 字段来向用户隐藏真实的 ID 号。我们有多个部门,每个部门都有多个客户,共享同一个 ID 池。如果 A 组创建票证 23456,然后 B 组创建另一个票证,尽管前一张票证不属于他们,但它显示为 23457。票号不需要连续。
关于php - 一个数据库,多个客户,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3112050/