【问题标题】:SQL Server to allow multiple values in a columnSQL Server 允许列中有多个值
【发布时间】:2016-09-13 04:57:25
【问题描述】:

我使用 SQL Server 作为后端,使用 MS Access 作为前端,我可以使用查找向导在 Access 中创建一个表,这将允许我在表单中创建组合框并在下拉列表中选择多个值,例如例如,

查找值定义,戏剧,冒险,恐怖等,在组合框中我可以为一部电影选择多种类型并将它们存储在表格上的单个单元格中。

如何使用 SQL Server 作为后端复制相同的值,我尝试在默认值中输入多个值,但它不起作用。 SQL Server 可以做到这一点吗?

【问题讨论】:

  • NO! 而且这是一件好事 SQL Server 不允许这样做!这甚至违反了数据库设计的第一范式 - 不要这样做!永远!

标签: sql-server ms-access


【解决方案1】:

在单个列中输入多个值是关系数据库设计中的一大禁忌。

您在这里尝试做的是实现many to many relationship。您有多个项目、电影或其他内容,并且您有多种类型。

这是多对多关系的经典案例。通常在这种情况下,您有 3 个表,一个代表项目,另一个代表流派。在这之间,您有第三个表,其中包含项目和流派的外键。

最后你会得到这样的表结构:

Items                  ItemToGenre               Genres
ID | item              ItemID | GenreID          ID | genre

并且在ItemToGenre.ItemID 上从Items.IDItemToGenre.GenreIDGenres.ID 有外键。

然后您可以JOIN 您的表格来获取任何特定项目的所有类型。并且不要破坏雾化。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-19
    • 1970-01-01
    • 2010-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多