我有一个选择框,用户将选择他们旅行的城市列表。之后,管理员将搜索具有特定城市的用户。
我对数据库的结构非常困惑。共有300个城市。为每个城市创建列并使用布尔值打开或关闭它,看起来是一种幼稚的技术。任何人帮助我PLZ
答案 0 :(得分:5)
不确定为什么你同时对mysql
和sql-server
进行了标记 - 你是否同时使用了这两个?
无论如何,这是一个标准的多对多映射:
表:用户
表:城市
表:UserCity
要检索给定用户的所有城市:
SELECT c.CityID, c.CityName
FROM User u
INNER JOIN UserCity uc
ON uc.UserID = u.UserID
INNER JOIN City c
ON c.CityID = uc.CityID
WHERE u.UserID = @UserID
答案 1 :(得分:0)
您不必为每个城市创建列。您只需创建一个“城市”列,其中每一行都是一个城市。然后,您有一个“Visited”列,其中每一行都是一个布尔值。总共只有两列。
City | Visited
London | 1
Paris | 0
New York | 1
等...