首先:我浏览过类似的问题,但没有找到答案。抱歉,如果这是重复的。
我对 MySQL 还很陌生。
假设我有三个表:Houses、Cars 和 Office Buildings
所有这些东西都有 window ,所以我还需要一个Windows table 。
现在,每个窗口都可以向上或向下、双 Pane 或单 Pane 等。每个窗口都有(如果不应该的话请纠正我)一个唯一的 ID。每个窗口还需要记录谁打开或关闭了它,这就是为什么我首先认为 Windows 表是必要的。
问题:每个Window都必须有一个parent_id。但当有一辆 ID 为 XX 的汽车,以及具有相同 ID 的办公楼和房屋时,问题就出现了。当我的页面加载时,我如何知道将窗口放置在哪里?
我认为这个问题有很多答案......我正在寻找最好的方法。
附言 window 、汽车、房屋和办公楼只是说明性示例。不是我的实际数据。
最佳答案
那么你的意思是每个窗口都可以属于房屋、汽车或办公楼?为此建立的模式是多态关联,这只是“将相关模型的类型及其 id 存储在一起”的一个花哨的词:
Table `windows`
===============
id
parent_id
parent_model
...
window(1, 42, 'house', ...)
window(2, 7, 'car', ...)
...
这允许轻松选择性加入和查询:
SELECT * FROM `windows` JOIN `cars` ON
(`windows`.`parent_model` = 'car' AND `windows`.`parent_id` = `cars`.`id`)
...
关于php - 跨表的唯一标识符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4755960/