首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >复杂的数据库操作

复杂的数据库操作
EN

Stack Overflow用户
提问于 2010-12-08 20:25:06
回答 3查看 324关注 0票数 1

我为我的ASP.NET应用程序绘制了一个非常简单的数据库设计,在这里和那里的帮助下,我设法实现了我的design...but,我想要将数据插入到这个表中并从它们中检索。

在我的应用程序中,一个非常重要的功能将需要所有7个表的所有信息来记录某一记录,有时我需要使我的应用程序接受各种相关数据,并将每一块数据放在正确的表中。

我的问题是:

  1. 这么大的设计是正常的吗?对于一个真正的应用程序来说,它是否很大?
  2. 如果我想要添加一个新的孩子,我将需要在所有表中填写所有相关的所需信息,我将有一个包含一些输入的大表单来接受数据,但是如何将它们插入到我的数据库中呢?
  3. 如果我想选择所有的孩子,基于这个设计的select语句是什么?

PS:在每两个具有(M:M)关系的表之间,考虑第三个表(该表将在关系中的两个表中各有两个主键)。

我对JOIN和所有东西都很熟悉,但从来没有在这么大的design...HELP上应用过!提前感谢!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-12-08 21:12:50

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

当我第一次需要为web应用程序做数据库设计时,我发现了一个拐杖。幸运的是,我当时使用的拐杖现在可以在一个免费工具诺玛中使用,它可以用于Visual 2008或2005 (2010支持即将到来)。

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

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

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

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

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

代码语言:javascript
复制
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图,知道哪些路径是可选的(左联接),然后使用一个工具(ApexSQL编辑)来帮助我构建联接。这花了不到十分钟。

票数 6
EN

Stack Overflow用户

发布于 2010-12-08 20:52:07

  1. 这不是一个大的设计,而是一个小的设计。随着您进一步开发应用程序,它可能会增长。
  2. 您将通过收集用户界面中的各种值并准备一系列要发送到数据库引擎的INSERT语句,将信息放入表中。每次插入都会将一行添加到表中。如果使用数据库生成的If,则可能必须在插入之间检索它们,并将值用作后续INSERT语句的一部分。
  3. 您将使用从单个表获取数据或从多个不同表连接数据的一个或多个SELECT语句返回数据。如果您发现这些JOINed SELECT语句是重要的、经常使用的概念,您可以选择将它们封装在某些视图中。
票数 3
EN

Stack Overflow用户

发布于 2010-12-08 20:52:57

试着回答你的问题:

  1. 这是个很小的设计。我目前的工作项目有150张桌子,布置得与你没什么不同。
  2. 理想情况下,要输入一个新孩子,您必须只在kid表中输入数据。从GUI的角度来看,最简单的可视化方法是每个数据库表都有一个GUI表。这样你就可以在自己的表格上指定父母、担保人、技能、工作领域等。
  3. 你必须问问自己,有多少信息是适合为每个孩子提供的,根据需要。一个显示孩子和他们的父母,最喜欢的玩具,赞助商,技能等的列表的界面将会变得过于拥挤。根据应用程序的不同,您可能希望对所显示的数据更加具体。例如,当您按名称指定孩子的所有信息时,您可能希望列出他们的所有信息。例如,如果你需要查询由水管工(赞助商的工作领域)赞助的孩子,你可能不在乎他们最喜欢的玩具是什么。
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4391933

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档