首先:我看过类似的问题,但没有找到答案。对不起,如果这是重复。
我对MySQL很陌生。
假设我有三张桌子:房屋,汽车和办公楼
所有这些东西都有窗口,所以我也需要一个 Windows 表。
现在,每个窗口可以是向上或向下,双窗格或单窗格等。每个窗口都有(如果不应该,请更正)一个唯一的ID。每个窗口还需要记录谁打开或关闭它,这就是为什么我认为首先需要Windows表。
问题:每个窗口必须有一个parent_id。但是,如果有一辆ID为XX的车,以及一个具有相同ID的办公楼和房屋,就会出现问题。当我的页面加载时,我如何知道窗口的放置位置?
我认为这个问题有很多答案......我正在寻找最好的方法。
P.S。 Windows,汽车,房屋和办公楼只是说明性的例子。不是我的实际数据。
答案 0 :(得分:2)
那么你所说的是每个窗口都属于房屋,汽车或办公楼?已建立的模式是多态关联,这只是一个奇特的词,用于“将相关模型的类型与其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`)
...
答案 1 :(得分:1)
您可能还需要一个表来映射哪个窗口映射到哪个实体(汽车/房屋/办公室)
Table: window_mapping
Columns: id (primary key / auto generated)
Window_id (not null, ref to Window table primary key)
Entity_id (not null, ref to car /house /office table primary key)
entity _def (text with values, Car / house /office)
或者还有一种表格方法
Table: window_mapping
Columns: id (primary key / auto generated)
Window_id (not null, ref to Window table primary key)
house_id (not null, ref to house table primary key)
car_id (not null, ref to house table primary key)
office_id (not null, ref to house table primary key)
我更喜欢1'虽然
如果您扩展用户,我可以尝试提供更多帮助