复杂的数据库操作

2023-12-04

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

alt text

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

我的问题是:

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

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

我熟悉联接和一切,但从未应用过这么大的设计......帮助! 提前致谢!


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

当我第一次开始需要为 Web 应用程序进行数据库设计时,我找到了拐杖。幸运的是,我当年用的拐杖现在已经有了免费工具,NORMA,它适用于 Visual Studio 2008 或 2005(即将推出 2010 支持)。

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

Kids and Sponsors

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

NORMA 工具可以从模型为多个不同的数据库生成 DDL,还可以创建 XML 架构和 LINQ to SQL 对象。


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

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 图来了解哪些路径是可选的 (LEFT JOIN),然后使用使用外键来帮助我构建联接的工具 (ApexSQL Edit) 创建此查询。这花了不到十分钟。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

复杂的数据库操作 的相关文章

  • C++:重写已弃用的虚拟方法时出现弃用警告

    我有一个纯虚拟类 它有一个纯虚拟方法 应该是const 但不幸的是不是 该接口位于库中 并且该类由单独项目中的其他几个类继承 我正在尝试使用这个方法const不会破坏兼容性 至少在一段时间内 但我找不到在非常量方法重载时产生警告的方法 以下
  • C# 中的接口继承

    我试图解决我在编写应用程序时遇到的相当大的 对我来说 问题 请看这个 为了简单起见 我将尝试缩短代码 我有一个名为的根接口IRepository
  • 构造函数中显式关键字的使用

    我试图了解 C 中显式关键字的用法 并查看了这个问题C 中的explicit关键字是什么意思 https stackoverflow com questions 121162 但是 那里列出的示例 实际上是前两个答案 对于用法并不是很清楚
  • 访问者和模板化虚拟方法

    在一个典型的实现中Visitor模式 该类必须考虑基类的所有变体 后代 在许多情况下 访问者中的相同方法内容应用于不同的方法 在这种情况下 模板化的虚拟方法是理想的选择 但目前这是不允许的 那么 模板化方法可以用来解析父类的虚方法吗 鉴于
  • C 语言中 =+(等于加)是什么意思?

    我碰到 与标准相反 今天在一些 C 代码中 我不太确定这里发生了什么 我在文档中也找不到它 In ancientC 版本 相当于 它的残余物与最早的恐龙骨头一起被发现 例如 B 引入了广义赋值运算符 使用x y to add y to x
  • 在非活动联合成员上使用“std::addressof”是否定义明确[重复]

    这个问题在这里已经有答案了 下面的代码是尝试实现constexpr的版本offsetof在 C 11 中 它可以在 gcc 7 2 0 和 clang 5 0 0 中编译 这取决于申请std addressof工会非活跃成员的成员 这是明确
  • SQL Server:如果存在会大大减慢查询速度

    正在使用SQL Server 2012 我找到了一些关于查询优化的主题 并将 EXISTS 与 COUNT 进行比较 但我找不到这个确切的问题 我有一个看起来像这样的查询 select from tblAccount as acc join
  • 如何在c#中的内部类中访问外部类的变量[重复]

    这个问题在这里已经有答案了 我有两个类 我需要声明两个类共有的变量 如果是嵌套类 我需要访问内部类中的外部类变量 请给我一个更好的方法来在 C 中做到这一点 示例代码 Class A int a Class B Need to access
  • 通过 NHibernate 进行查询,无需 N+1 - 包含示例

    我有一个 N 1 问题 我不知道如何解决它 可以在这个问题的底部找到完全可重复的样本 因此 如果您愿意 请创建数据库 设置 NUnit 测试和所有附带的类 并尝试在本地消除 N 1 这是我遇到的真实问题的匿名版本 众所周知 这段代码对于帮助
  • 当模板类不包含可用的成员函数时,如何在编译时验证模板参数?

    我有以下模板struct template
  • Oracle REGEXP_INSTR() 和“a-z”字符范围与预期不匹配

    我想用REGEXP INSTR 在 oracle 数据库中检查小写 大写字符 我知道 upper and lower POSIX 字符类 但我选择了a z这给了我非常奇怪的结果 我不明白 有人可以解释一下吗 SELECT REGEXP IN
  • 如何挤出平面 2D 网格并赋予其深度

    我有一组共面 连接的三角形 即二维网格 现在我需要将其在 z 轴上挤出几个单位 网格由一组顶点定义 渲染器通过与三角形数组匹配来理解这些顶点 网格示例 顶点 0 0 0 10 0 0 10 10 0 0 10 0 所以这里我们有一个二维正方
  • 为什么 ISNUMERIC('.') 返回 1?

    最近我在 SQL Server 中使用 ISNUMERIC 时遇到了一个问题 导致找到了这段代码 SELECT ISNUMERIC 这会返回 1 如 true 所示 难道不应该像 false 一样返回 0 吗 See Numeric 损坏了
  • 将代码拆分为标头/源文件

    我从 Asio 的示例页面中获取了以下代码 class tcp connection public boost enable shared from this
  • 有没有一种简单的方法可以让 Visual Studio 2015 使用特定的 ToolsVersion?

    使用特定版本构建项目或解决方案时msbuild我可以使用以下命令选择早期的 net 工具链 toolsversion or tv switch C Program Files x86 MSBuild 14 0 bin msbuild tv
  • strcmp 给出分段错误[重复]

    这个问题在这里已经有答案了 这是我的代码给出分段错误 include
  • WinRT 定时注销

    我正在开发一个 WinRT 应用程序 要求之一是应用程序应具有 定时注销 功能 这意味着在任何屏幕上 如果应用程序空闲了 10 分钟 应用程序应该注销并导航回主屏幕 显然 执行此操作的强力方法是在每个页面的每个网格上连接指针按下事件 并在触
  • 替换字符串中的多个字符,而不使用任何嵌套替换函数

    我的表中存储了一个方程 我一次获取一个方程 并希望将所有运算符替换为任何其他字符 输入字符串 N 100 6858 6858 N 100 0 2 N 35 运算符或模式 替换字符 输出字符串 N 100 6858 6858 N 100 0
  • 使用 Crypto++ 获取 ECDSA 签名

    我必须使用 Crypto 在变量中获取 ECDSA 签名 我在启动 SignMessage 后尝试获取它 但签名为空 我怎样才能得到它 你看过 Crypto wiki 吗 上面有很多东西椭圆曲线数字签名算法 http www cryptop
  • 匿名结构体作为返回类型

    下面的代码编译得很好VC 19 00 23506 http rextester com GMUP11493 标志 Wall WX Za 与VC 19 10 25109 0 标志 Wall WX Za permissive 这可以在以下位置检

随机推荐

  • 在Sass中根据类定义变量

    我想知道是否可以根据是否设置了类来在 Sass 中定义变量 我需要做一些字体类型测试并想更改字体变量 basicFont动态地基于主体类 E g basicFont Arial Helvetica sans serif body verda
  • 如何在继续之前暂停 shell 脚本一秒钟?

    我只找到了如何等待用户输入 然而 我只想暂停一下 以便我的while true不会让我的电脑崩溃 I tried pause 1 但它说 bash syntax error near unexpected token 1 如何做呢 Use
  • Tensorflow 引发错误:ImportError:无法导入名称“export_saved_model”

    好像 import tensorflow as tf 直接引发此错误 合作实验室链接 https colab research google com drive 1Jr0j I npKQxcQ1ggJQFHTqoJHmt9Bqk 抱歉 问题
  • windows csv 和 mac csv 有什么区别?

    我正在尝试使用此代码解析 csv 文件 if handle fopen csvFilePath r FALSE c 0 string while data fgetcsv handle 1000 FALSE if c gt 0 if dat
  • HttpUnit 是否已弃用/不活动/不支持?

    三年前 当我探索并研究 HttpUnit 时 我很喜欢它的功能 尽管在三年没有跟踪它之后 当我向我的同事建议基于它的解决方案时 他告诉我它已被弃用 apache 状态表明它处于活动状态 我在哪里找不到这是否属实 如果这是真的 我会感到震惊
  • Mac OS 和 Windows 之间的 exp() 精度

    我在这里得到了一个代码 当我在Win和Mac OS上运行它们时 结果的精度是不同的 任何人都可以帮忙吗 const double c 1 exp 2 0 double x 139 0 5 2282 0 x 1 exp 2 1 x c 结果都
  • 如何在数据库(Mongo)中进行左连接[重复]

    这个问题在这里已经有答案了 我是蒙戈新手 请帮我如何在 Mongo 中进行左连接 SQL语句 Select from TableA left Join TableB on TableA col1 TableB col1 AND TableB
  • 我可以继承 OpenERP 中的标准报告吗?

    我想更改 OpenERP 6 1 中的采购订单报告 我是否必须进入并更改购买模块 或者我可以创建一个新模块来继承标准报告并覆盖一些详细信息 您无法完全继承另一个报告并仅覆盖一些详细信息 但您可以替换标准报告并使其所有现有链接启动您的新报告
  • 在python中创建一个列来对数值进行分类

    我有一个名为 df 的 python 数据框 其中包含客户的 BMI 作为 bmi 列中的数字 我想在数据框中添加一个新列 称为 bmi cat 它是基于其数值的 BMI 类别 即 这就是我尝试过的 但没有成功 它不喜欢使用 for df
  • 如何从学说查询生成器获取部分结果

    我有一个产品实体 其中有一个数组作为属性 ORM OneToMany targetEntity Shopious MainBundle Entity ProductPicture mappedBy product cascade persi
  • 如何动态添加多个句柄到 jQuery 滑块

    我想做这个 在某些事件上向 jQuery 滑块添加句柄 该句柄应该有一个 id 以便当它滑动时 我可以访问它的值 有什么想法如何做到这一点 Here是 JSfiddle 中的代码 其中实现了带有两个手柄的滑块 我需要做的就是通过触发某些事件
  • 在堆上创建结构体?

    我被指示通过在保存源副本的堆上创建一个 String 结构来编写模型 strdup 我想我已经成功编码了 strdup 但我不确定我是否已经创建堆上的结构体 typedef struct String int length int capa
  • 带有子网格和本地数据的 JqGrid 在 IE9 中不起作用 - 抛出 - “SCRIPT600:此操作的目标元素无效”

    我是 JQGRID 的新手 我使用的是 4 7 1 版本 我正在尝试使用 SUBGRID 创建 JQGRID 该代码在 Google Chrome 中按预期工作 但我在 IE9 中收到下面提到的错误 SCRIPT600 Invalid ta
  • 将 .RData 文件加载到会话中,但在 Shiny 中未加载任何对象

    我在 R 中得到了分析结果 一个名为obj 并将其保存为 RData 文件obj result RData 现在在闪亮 在年初ui R文件 我把load obj results RData 这样每次运行 Shiny 时 这个对象都可以加载到
  • 手动滚动两个显示相同内容的 UICollectionView

    正如标题所示 我有一个UIViewController有两个UICollectionViews它们以水平方式显示相同的内容 主图一次显示一张照片 大拇指图一次显示多张照片 我已经覆盖了UIScrollViewDelegate方法并添加了一些
  • 当 CrawlerProcess 运行两次时,Scrapy 会引发 ReactorNotRestartable

    我有一些代码看起来像这样 def run spider name settings runner CrawlerProcess settings runner crawl spider name runner start return Tr
  • 串行化套接字

    我尝试序列化套接字 但它不起作用 正确的方法是什么 public class MySocket implements Serializable private Socket socket public MySocket Socket soc
  • 使用 dir 搜索文件 - 多次命中

    我有一个宏 它遍历文件夹并使用 dir 函数来查找活动文件夹中是否存在文件 并将文件名放入单元格中 问题是可能有两个或多个文件满足搜索 Dir subfolder Kommunesvar 如果有两个以 Kommunesvar 开头的文件 如
  • 为什么我的 li 元素之间有空格? [复制]

    这个问题在这里已经有答案了 我有一个水平显示的项目列表 我想在每个里周围创建一个边框 并使它们彼此相邻地突出 我创建了一个小测试来说明问题 在这里看到 ul class dashboard inline links li a href Oc
  • 复杂的数据库操作

    我为我的 ASP NET 应用程序绘制了一个非常简单的数据库设计 在一些帮助下 我成功地实现了我的设计 但我想将数据插入到该表中并从中检索 我的应用程序中一个非常重要的功能将需要某个记录的所有 7 个表中的所有信息 有时我需要让我的应用程序