php - 跨表的唯一标识符

标签 php mysql uniqueidentifier

首先:我浏览过类似的问题,但没有找到答案。抱歉,如果这是重复的。

我对 MySQL 还很陌生。

假设我有三个表:HousesCarsOffice 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/

相关文章:

mysql - 在 JOIN 查询中将列设置为 null 或为空

php - 对于每个 SQL 结果,另一个 SQL 查询?在 PHP 中

找不到 PHP 类错误仅发生在 CircleCI 上

php - 排除字符串的某些排列

php - codeigniter MVC 在 mysql 表中插入敏感数据

php - 使用 While 循环 php 更新 mysql 数据库

php - 如何在 PHP 中获取长 19 位随机数?

java - 使用JPA和Hibernate时如何选择id生成策略

php - mysql 时间戳不在纪元

php - 在 MongoDB 中使用整数作为 ID 的缺点