我有一个MySQL表,它有五个位置列(洛杉矶,纽约等),其列值为邻域,代码指的是位置(LA,NY等),以及userID 。代码和用户ID始终存在 - 并且至少有一个位置列具有值。
理想情况下,我想将此表格规范化 - 但作为短期解决方案,我想添加一个约束条件:
"确保用户ID,代码和位置的唯一组合。"
例如:
row1 :拥有userID = 1,代码= NY,纽约=布鲁克林,洛杉矶=唐人街
row2 :有userID = 1,代码= NY,纽约=西区,洛杉矶=唐人街
应允许插入第二行,因为纽约社区不同。
我尝试过常规约束:
ALTER TABLE位置ADD UNIQUE location
(user_id
,code
,new_york
);
ALTER TABLE位置ADD UNIQUE location
(user_id
,code
,los_angeles
);
但是第二行没有插入,因为上面的第二个约束会阻止它。
如果没有对表进行规范化,那么创建此约束的最佳选择是什么?
答案 0 :(得分:-1)
创建一个包含城市的表格
id | city
1 |纽约
2 |洛杉矶
.. | ..
并修改表格位置,在此表格中添加外键并设置主键(id,code,city)
id | code | city
1 | 345 | 1< - 这是纽约
1 | 123 | 1
.. | .. | ..