【问题标题】:How to create good database design using sql-server and asp.net? [duplicate]如何使用 sql-server 和 asp.net 创建良好的数据库设计? [复制]
【发布时间】:2017-07-26 12:50:18
【问题描述】:

现在,我正在学习所有关于数据库设计的知识。基本上我的数据库的内容是乐器的品牌。并且有两种类型的乐器,即吉他和贝斯。现在,我偶然发现了一个问题,有时一个品牌会有两种类型。如下表所示,您可以看到 ibanez 重复了两次,这样它就可以同时容纳吉他和贝司。有人建议我永远不要在数据库中重复数据,但我还没有想到解决方案。

brandId  类型        名称      图片
1         吉他        Ibanez    xyz.jpg
2         贝斯        Ibanez      hyz.jpg
3         吉他        挡泥板    abc.jpg
4         贝斯        挡泥板      fgh.jpg
5         吉他        PRS        yui.jpg
6         吉他        ESP        mbm.jpg
7         贝斯        沃里克    omo.jpg

当我想在我的网页中显示品牌图片时,无论是吉他还是贝司,我通常会在 asp.net 中使用此查询。

public List<brand> GetBrandData()
{
    MusicStoreDBEntities obj = new MusicStoreDBEntities();
    List<brand> list = new List<brand>();
    list = (from g in obj.brands where g.type=="Guitar" select g).ToList();

    return list;

}

我想知道是否有不需要重复数据的替代数据库设计方法。请在asp.net中提供更好的解决方案或更好的查询,并希望提供实际示例。

【问题讨论】:

  • Google 数据库标准化初学者。您正在走上一条您不想遵循的冗余路径。
  • WROX 关于数据库设计的书非常棒。
  • @Rockstar 关注stackoverflow.com/questions/45283951/…。我已经为您的帖子发布了数据库设计的答案

标签: c# sql asp.net sql-server database


【解决方案1】:

基本上,为了避免重复,您需要将数据存储在多个表中,而不是一个表中。

这么小的数据看起来有点傻,但是你需要一个表Instrument、一个表Type和一个表Brand 与主/外键关系相关,如下所示:

您表格中的数据将如下所示:

此过程称为规范化,您这样做的原因是数据的一致性。 有关表关系的更多信息,您可以查看this article,正如@Olusegun Odumosu 指出的那样。

【讨论】:

  • 哇,这个答案太棒了。信息量很大。
  • @Arne Kemps 是对的,可以添加到他提供的信息中。您可以查看 Tables Relationships https://msdn.microsoft.com/en-us/library/4s9x13w7.aspx
猜你喜欢
  • 2018-01-27
  • 2012-04-19
  • 1970-01-01
  • 1970-01-01
  • 2018-06-08
  • 1970-01-01
  • 2023-03-24
  • 2017-05-31
  • 1970-01-01
相关资源
最近更新 更多