Mah*_*eep 4 sql database database-design
我在一个网站上工作,一些功能类似于Stackoverflow.
其中之一是它有一个类型的多个项目(在SO假设,多个问题).
每个项目与另一个类型(City)的多个值相关.(在SO中假设每个queston与多个标签相关.标签是表格中的条目,例如标签).
因此我的表是:
Cities(Id, Name, IsAcive)
MyItems(Id, DisplayText, AciveInCities)
Run Code Online (Sandbox Code Playgroud)
这里有一个myitems
条目可以在多个城市中激活.
我的问题是如何AciveInCities
在数据库中定义列.逗号分隔的CityIds或逗号分隔的城市名称或某些位于不同表中的位置?
这是一个Web应用程序,我希望用户能够按城市搜索MyItems.因此,在同一个表中保存cityname/id可能很快.
这三种方法中的任何一种都有问题吗?
如果这是重复的问题,请重定向我更正,我找不到一个.
谢谢
您不应该在数据库中拥有多值列 - 它不是规范化的.
有一个多对多表CityId
和ItemId
列作为外键,它们是一个复合主键.
Cities(Id, Name, IsAcive)
MyItems(Id, DisplayText)
ItemsActiveInCities(CityId, ItemId)
Run Code Online (Sandbox Code Playgroud)