- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想回答一个简单的问题:
我们有一个成员表。每个成员都从事一项、多项或不从事一项运动。最初我们(开发人员)创建了一个[member] 表、一个[sports] 表和一个[member_sports] 表,就像我们总是完成。
但是我们这里的客户不喜欢这样,并希望将成员(member)进行的所有运动存储在一个 varchar 列中,并用特殊字符分隔。
如果:
1 is football
2 is tennis
3 is ping-pong
4 is swimming
我喜欢游泳和乒乓球,我最喜欢的运动将存储到 varchar 列中:
x3,x4
现在我们不想只是走到客户面前并声称他的系统不正确。我们想用证据来支持它,即从 [member_sports] 获取运动的操作比简单地将字段存储为 varchar 更有效。
是否有任何文件可以支持我们的主张?帮助!
最佳答案
询问您的客户是否关心存储准确信息1而不是随机字符串。
然后给他们设置一系列挑战。首先,确保体育信息在正确的“域”中。对于 member_sports
表,即:
sport_id int not null
^
|--correct type
对于他们的“将所有内容存储在 varchar 列中”的解决方案,我猜你正在写一个 CHECK
约束。正则表达式可能会在这里有所帮助,但在 SQL Server 中没有对正则表达式的 native 支持 - 因此您要么对其进行保护,要么调用 CLR 函数以确保只有实际的 int
存储值。
接下来,我们不仅要确保域名正确,还要确保运动在您的系统中确实定义。对于 member_sports
,那就是:
CONSTRAINT FK_Member_Sports_Sports FOREIGN KEY (Sport_ID) references Sports (Sport_ID)
对于他们的“将所有内容存储在 varchar 列中”,我想这将是一个复杂得多的 CHECK
使用 UDF 查询其他表的约束。这将是困惑和程序性的。另外,如果你想防止从 sports
中删除一行虽然它仍然被任何 member
引用,你说的是 sports
上的触发器必须查询 members
中每一行的表2`.
最后说一下,同一项运动为一个成员(member)多次录制是没有意义的。对于 member_sports
,即(如果不是 PK):
CONSTRAINT UQ_Member_Sports UNIQUE (Member_ID,Sport_ID)
对于他们的“将所有内容存储在 varchar 列中”,这是另一个从 CHECK
调用的可怕的程序 UDF。约束条件。
即使如果 varchar
变体表现得更好(不太可能,因为你需要将字符串分开并且 T-SQL 的字符串操作函数非常弱(见上面的回复:正则表达式))对于“表现更好”的某些值,他们如何建议数据是 有意义而不是废话?
编写也可以处理废话的程序变体是一项更具挑战性的工作。
如果上面的内容不清楚 - 我是声明性参照完整性 (DRI) 的忠实粉丝。说明你想要什么 与关注机制 是 SQL 吸引我的重要原因。您构建了正确的 DRI,并且知道您的数据始终是正确的(或者,至少,如您所期望的那样)
1“应用程序将始终正确执行此操作”不是一个好的答案。如果您设法构建了一个应用程序和相关数据库,其中没有人曾经编写一些直接的 SQL 来修复某事,我想您将是第一个。
但在大多数情况下,总是有多个应用程序,即使另一个应用程序是仅供开发人员使用的直接 SQL 客户端,您也无法相信该应用程序会始终正确运行。应用程序中的错误比 SQL 数据库引擎的约束实现中的错误更容易发生,后者的测试次数远远超过任何单个应用程序强制执行约束的尝试。
2更不用说更可能的查询了——查找与特定运动相关的所有成员。 member_sports
上的第二个索引使它成为一个简单的查询3。没有索引有助于“它位于此字符串中的某处”解决方案,并且您正在查看没有索引机会的表扫描。
3任何具有 sport_id
的索引首先应该能够满足这样的查询。
关于sql-server - MS SQL : What is more efficient? 使用联结表或将所有内容存储在 varchar 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47138375/
我正在为我的按钮使用 onClick 功能。我的按钮代码如下所示: Button 1 Button 2 我的 JS 函数如下所示: function fadeNext(selectedId, spee
首先,我想提一下,我理解每个人在不提供至少一些试验或错误的情况下提出问题的感受,但这纯粹是一种知识需求,话虽如此,我会去提前问。 我一直无法弄清楚如何将保存在 MySQL 表中的 600-1000 个
我想做的事情有点令人困惑,而且我英语不太好,所以我先把代码贴在这里,这样你就可以很容易地理解: 以下是表单内容: Testing for Stackoverflow Option1
我学习 SDL 二维编程已有一段时间了,现在我想创建一个结合使用 SDL 和 OpenGL 的程序。我是这样设置的: SDL_Init(SDL_INIT_VIDEO); window = SDL_Cr
我创建了 2 个 data-* 标签。数据类别和数据标签。单击 href 标签后,我想复制该数据类别和数据标签以形成输入。我的代码是:
我想用 CSS 换行。我正在使用内容。 td:before { content: "Test\A Test2"; } 它不工作。如何正确
这个问题已经有答案了: Java Class that implements Map and keeps insertion order? (8 个回答) 已关闭 6 年前。 我有一个 HashMap
我正在尝试使用 JMeter 执行端到端测试。测试涉及写入SFTP文件夹并从另一个SFTP文件夹读取写入操作生成的文件。 我能够使用 JMeter SSH SFTP 插件连接到 SFTP 文件夹,并能
您好,我有带有标准服务器端 Servlet 的 GWT 客户端。 我可以从 GWT 客户端上传文件并在服务器端读取其内容 我可以将其作为字符串发送回客户端 但是 我有 GWT FormPanel与操作
我在 Plone 4.3.9 中创建了一个自定义类型的灵巧性,称为 PersonalPage,必须只允许在特定文件夹中使用 成员文件夹/用户文件夹 . 在他的 FTI 中,默认情况下 False .
在新(更新)版本的应用程序中更改小部件布局的最佳做法是什么?当新版本提供更新、更好的小部件时,如何处理现有小部件? 最佳答案 我认为您必须向用户显示一个弹出窗口,说明“此版本中的新功能”并要求他们重新
在我的应用程序中,我使用支持 View 寻呼机和 PagerTabStrip。进入查看寻呼机我有一些 fragment ,进入其中一个我正在使用支持卡片 View 。运行应用程序后,所有卡片 View
我有以下布局文件。基本上我有谷歌地图,在左上角我有一个 TextView,我需要在其中每 15 秒保持一次计数器以刷新 map 。布局很好。
我使用如下结构: HashMap > > OverallMap 如果我这样做: OverallMap . clear ( ) clear() 丢弃的所有内容(HashMap 对象、Integer 对
我在数据库中有 1000 张图像。在页面加载时,我随机显示 60 张图片,当用户滚动时,我通过 AJAX 请求添加 20 张图片。 第一种方法 我所做的是将所有图像加载到一个容器中,然后隐藏所有图像并
我正在使用 woocommerce 创建一个网上商店。 我想在每个产品上添加一个包含产品信息的表格,例如颜色、交货时间等等。 但是当我添加这张表时。本产品消失后的所有内容。 我的表的代码: td {
This question already has an answer here: What does an empty value for the CSS property content do?
因此,我正在与我的 friend 一起为 Google Chrome 开发一个扩展程序,对于大多数功能(即日历、设置等),我们打开一个模式,这样我们就不必重定向到另一个页面。当您在内容之外单击时,我们
我将可变高度的 CSS 框设置为在更大的 div 中向左浮动。现在我想添加一个标题,其中文本在框的左侧垂直显示(旋转 90 度),如下面的链接所示(抱歉还不能发布图片)。 http://imagesh
相关页面位于 www.codykrauskopf.com/circus 如果您查看我页面的右侧,在半透明容器和浏览器窗口边缘之间有一个间隙。我看了看,出于某种原因,wrap、main、content
我是一名优秀的程序员,十分优秀!