我有两个表,分别是projs
和studies
,它们分别指向我正在构建的网站上的内容类型,而我的最新任务是我需要向每个项目中添加图像轮播并进行研究(和projs
)。换句话说,每个项目和研究都需要有一个相关的图像轮播。
我在桌子旁的位置:
projs
id | ...
----------------
1 | ...
2 | ...
3 | ...
studies
id | ...
-----------------
1 | ...
2 | ...
3 | ...
我想去的地方或想去的地方:类似的东西
projs
id | ... | carid
------------------------
1 | ... | 1
2 | ... | 5
3 | ... | 6
studies
id | ... | carid
-------------------------
1 | ... | 2
2 | ... | 3
3 | ... | 4
carousels
id
------
1
2
3
4
5
6
carousel_assets
id | imgurl | carid
1 | ... | 1
2 | ... | 2
3 | ... | 1
4 | ... | 1
5 | ... | 5
6 | ... | 2
7 | ... | 3
8 | ... | 4
9 | ... | 3
10 | ... | 4
11 | ... | 3
12 | ... | 2
13 | ... | 2
每个表中的
studies
引用carid
的id
。问题1:这是正确的设计吗????
我运行以创建两个新表的查询是
CREATE TABLE carousels (id MEDIUMINT NOT NULL AUTO_INCREMENT PRIMARY KEY;
CREATE TABLE carousel_assets (id MEDIUMINT NOT NULL AUTO_INCREMENT PRIMARY KEY, img VARCHAR (250), carid MEDIUMINT, FOREIGN KEY (carid) REFERENCES carousels(id) ON DELETE SET NULL;
现在我想做的是将
carousels
列添加到carid
和projs
。我试过了ALTER TABLE projs ADD carid MEDIUMUINT, FOREIGN KEY (carid) DEFAULT NULL REFERENCES carousels(id);
并得到了非常描述性的错误
您的SQL语法有误。检查手册
对应于您的MySQL服务器版本以使用正确的语法
在'MEDIUMUINT,外键(carid)附近默认NULL参考
第1行的轮播(id)'
问题2:导致该错误的查询出了什么问题?
假设在每个页面上,与上面的示例中与轮播相关的
studies
/studies/?id=1
,我都需要将所有图像都与该轮播相关联,查询应该是什么? 最佳答案
该错误具有足够的描述性。您在MEDIUMUINT
中有错字。将其替换为MEDIUMINT
:
ALTER TABLE projs
ADD carid MEDIUMINT, FOREIGN KEY (carid) DEFAULT NULL REFERENCES carousels(id);
关于mysql - 这是正确的数据库设计吗?我为什么不,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32530660/