MySQL:在公共和私人表之间共享id

时间:2013-11-29 18:01:06

标签: mysql sql conflict identifier

我正在建模一个mysql数据库,但是在分离公共数据和私有数据方面存在问题。

最简单的方法是将所有私有和公共数据相互混合,并通过将'isPrivate'bool设置为true来识别一段私有数据 - 但我想这会很慢,并且难以维护。

所以现在我有两个表 - 私有和公共 - 但我希望用户能够将私有数据作为公共数据“发布”到公共表中。

问题在于ID - 我不能拥有两套不同的ID,因为私有和公共行只是另一个保存主要数据内容的表的占位符 - 如果私有和公共表具有不同的ID集会有冲突,因为我使用的是自动增量ID命名方案而不是仅生成哈希,因为它的流程密集程度较低,并且无法获得“哈希冲突”。

要解决ID冲突,公共数据占位符必须更改它的ID,这会使它失去对它指向的数据的引用...

在MySQL中是否只有一种方法只将外键与表中的某些ID相关联,另一种方法?这意味着我可以在两个表中保持相同的ID。

也许我可以通过函数以某种方式将使用过的ID同步到两个表中?我肯定不是SQL wizkid ......

此外,公共和私人表的商店再次引用实际数据,这些数据都将在一个巨大的表中。公共表和私有表包含主数据的元数据 - 是否可以将公共表元数据引用回原始私有元数据,并停止数据复制?

感谢您的时间,

森。

2 个答案:

答案 0 :(得分:0)

为什么不将所有实体数据组合在一起并进行明确的维护。公共/私有逻辑,访问权限等。通过主程序中的模型来实现。您可以定义程序将使用的私有和公共结构等等......没有人真的需要知道在数据库级别如何处理它

另请考虑使用视图来限制访问。示例:为员工创建一个视图,以便仅在包含所有员工的表中查看他或她的工资核算信息。

答案 1 :(得分:0)

我相信这几天我已经变得很轻松了。我可以在它们之间创建一个外键。我似乎认为,当一张桌子拿出另一张外键时,它的库仑会自动填充 - 我不知道为什么我在想这个......

无论如何 - 是的,使用外键。