C# 复杂的数据库操作

C# 复杂的数据库操作,c#,asp.net,sql,webforms,C#,Asp.net,Sql,Webforms,我为我的ASP.NET应用程序绘制了一个非常简单的数据库设计,在这里和那里得到了一些帮助,我成功地实现了我的设计……但是我想将数据插入到这个表中并从中检索 在我的应用程序中,一个非常重要的函数需要某个记录的所有7个表中的所有信息,有时我需要让我的应用程序接受所有类型的相关数据,并将每个数据放在正确的表中 我的问题是: 这么大的设计正常吗?对于一个真正的应用程序来说,它甚至很大吗 如果我想添加一个新的孩子,我需要用所有表中相关的必需信息填充所有表,我会有一个带有一些输入的大表单来接受数据,但是我

我为我的ASP.NET应用程序绘制了一个非常简单的数据库设计,在这里和那里得到了一些帮助,我成功地实现了我的设计……但是我想将数据插入到这个表中并从中检索

在我的应用程序中,一个非常重要的函数需要某个记录的所有7个表中的所有信息,有时我需要让我的应用程序接受所有类型的相关数据,并将每个数据放在正确的表中

我的问题是:

  • 这么大的设计正常吗?对于一个真正的应用程序来说,它甚至很大吗
  • 如果我想添加一个新的孩子,我需要用所有表中相关的必需信息填充所有表,我会有一个带有一些输入的大表单来接受数据,但是我如何将它们插入到我的数据库中呢
  • 如果我想选择所有的孩子,那么基于这个设计的select语句是什么
  • PS:在每两个表之间有(m:m)关系,考虑一个第三个表(这将在关系中的2个表中的每个表中有两个主键)。 我对连接和所有东西都很熟悉,但从未应用到如此大的设计上……救命! 提前谢谢

  • 这不是一个大的设计,而是一个小的设计。它可能会随着应用程序的进一步开发而增长

  • 通过从用户界面收集各种值并准备一系列INSERT语句发送到数据库引擎,您可以将信息放入表中。每次插入都会向表中添加一行。如果您使用的是数据库生成的ID,则可能必须在插入之间检索它们,并将该值用作后续INSERT语句的一部分

  • 您将使用一个或多个SELECT语句返回数据,这些语句从单个表中获取数据,或从多个不同的表中联接数据。如果您发现这些连接的SELECT语句构成了重要的、经常使用的概念,您可以选择将它们封装在某些视图中

  • 这不是一个大的设计,而是一个小的设计。它可能会随着应用程序的进一步开发而增长

  • 通过从用户界面收集各种值并准备一系列INSERT语句发送到数据库引擎,您可以将信息放入表中。每次插入都会向表中添加一行。如果您使用的是数据库生成的ID,则可能必须在插入之间检索它们,并将该值用作后续INSERT语句的一部分

  • 您将使用一个或多个SELECT语句返回数据,这些语句从单个表中获取数据,或从多个不同的表中联接数据。如果您发现这些连接的SELECT语句构成了重要的、经常使用的概念,您可以选择将它们封装在某些视图中


  • 尝试回答您的问题:

  • 这是一个很小的设计。我目前的工作项目有150张桌子,安排得和你的一样

  • 理想情况下,要输入新的kid,您只需在kid表中输入数据。从GUI的角度来看,最简单的可视化方法是每个数据库表有一个GUI表。这样,您可以在自己的表格中指定家长、赞助商、技能、工作领域等

  • 你必须问问自己,根据需要,应该为每个孩子提供多少信息。一个界面显示了孩子们与他们的父母、最喜欢的玩具、赞助商、技能等的列表,这将变得过于拥挤。根据应用程序的不同,您可能希望更具体地显示哪些数据。例如,当您按名称指定孩子时,您可能希望列出他们的所有信息。例如,如果你需要查询水管工赞助的孩子(赞助商的工作领域),你可能不在乎他们最喜欢的玩具是什么


  • 尝试回答您的问题:

  • 这是一个很小的设计。我目前的工作项目有150张桌子,安排得和你的一样

  • 理想情况下,要输入新的kid,您只需在kid表中输入数据。从GUI的角度来看,最简单的可视化方法是每个数据库表有一个GUI表。这样,您可以在自己的表格中指定家长、赞助商、技能、工作领域等

  • 你必须问问自己,根据需要,应该为每个孩子提供多少信息。一个界面显示了孩子们与他们的父母、最喜欢的玩具、赞助商、技能等的列表,这将变得过于拥挤。根据应用程序的不同,您可能希望更具体地显示哪些数据。例如,当您按名称指定孩子时,您可能希望列出他们的所有信息。例如,如果你需要查询水管工赞助的孩子(赞助商的工作领域),你可能不在乎他们最喜欢的玩具是什么


  • 很抱歉吓到您,但这是一个非常小的数据库设计

    当我第一次开始需要为web应用程序设计数据库时,我找到了一个拐杖。幸运的是,我当时使用的拐杖现在可以在一个免费工具中使用,它可以与VisualStudio2008或2005(2010支持即将到来)一起使用

    我快速猜测了一下您的设计,得到了以下ORM模型:

    这导致了一个包含十个表的数据库,包括多对多关系所需的连接表

    NORMA工具可以从模型中为几个不同的数据库生成DDL,还可以创建XML模式和LINQ-to-SQL对象


    顺便说一句,下面是生成的数据库的ER图:


    我不明白为什么您需要将所有这些都放在一个结果集中,但我认为这里有一个查询可能会返回所有这些。我还没有用数据对此进行测试:

    SELECT k.KidId, k.Name, k.FavoriteToy, 
        s.SponsorId, s.Name, 
        st.SponsorShipTypeCode, st.Description AS SponsortshipTypeDescription,
        fw.FieldOfWorkCode, fw.Description AS FieldOfWorkDescription,
        Skill.SkillCode, Skill.Description AS SkillDescription,
        Parent.ParentId, Parent.Name AS ParentName
    FROM Kid k
    LEFT OUTER JOIN KidHasParent ON KidHasParent.KidId = k.KidId
    INNER JOIN Parent ON Parent.ParentId = KidHasParent.ParentId
    LEFT OUTER JOIN KidHasSkill ON KidHasSkill.KidId = k.KidId
    INNER JOIN Skill ON Skill.SkillCode = KidHasSkill.SkillCode
    LEFT OUTER JOIN Sponsor s ON s.SponsorId = k.SponsorId
    INNER JOIN SponsorIsOfSponsorShipType Sst ON Sst.SponsorId = s.SponsorId
    INNER JOIN SponsorShipType st ON st.SponsorShipTypeCode = sst.SponsorShipTypeCode
    LEFT OUTER JOIN SponsorParticipatesInFieldOfWork sfw ON sfw.SponsorId = s.SponsorId
    INNER JOIN FieldOfWork fw ON fw.FieldOfWorkCode = sfw.FieldOfWorkCode
    
    我通过查看ORM图来创建这个查询,以了解哪些路径是可选的(左J)