如何在数据库中存储多个项目。困惑于数据库结构

时间:2010-01-09 17:41:46

标签: mysql database database-design schema

我有一个选择框,用户将选择他们旅行的城市列表。之后,管理员将搜索具有特定城市的用户。

我对数据库的结构非常困惑。共有300个城市。为每个城市创建列并使用布尔值打开或关闭它,看起来是一种幼稚的技术。任何人帮助我PLZ

2 个答案:

答案 0 :(得分:5)

不确定为什么你同时对mysqlsql-server进行了标记 - 你是否同时使用了这两个?

无论如何,这是一个标准的多对多映射:

表:用户

  • UserID(int,PK)
  • UserName(varchar(50),not null)

表:城市

  • CityID(int,PK)
  • CityName(varchar(50),not null)

表:UserCity

  • AssociationID(int,PK)
  • UserID(int,FK User,not null)
  • CityID(int,FK City,not null)

要检索给定用户的所有城市:

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

等...