两个字段的唯一约束及其相反

2024-02-09

我有一个数据结构,必须在其中存储元素对。每对恰好有 2 个值,因此我们使用一个表,其中包含字段(左值,右值......)。 这些对应该是唯一的,如果密钥发生更改,它们将被视为相同。

Example: (Fruit, Apple) is the same as (Apple, Fruit).

如果可以有效的方式实现,我会在字段上设置数据库约束,但不会不惜一切代价 - 性能更重要。

我们正在使用MSSQL server 2008目前,但可以进行更新。

有没有一种有效的方法来实现这一目标?


两种解决方案,实际上都是为了将​​问题变得更容易。我通常更喜欢T1如果强制消费者做出改变是可以接受的解决方案:

create table dbo.T1 (
    Lft int not null,
    Rgt int not null,
    constraint CK_T1 CHECK (Lft < Rgt),
    constraint UQ_T1 UNIQUE (Lft,Rgt)
)
go
create table dbo.T2 (
    Lft int not null,
    Rgt int not null
)
go
create view dbo.T2_DRI
with schemabinding
as
    select
        CASE WHEN Lft<Rgt THEN Lft ELSE Rgt END as Lft,
        CASE WHEN Lft<Rgt THEN Rgt ELSE Lft END as Rgt
    from dbo.T2
go
create unique clustered index IX_T2_DRI on dbo.T2_DRI(Lft,Rgt)
go

在这两种情况下,都没有T1 nor T2中可以包含重复值Lft,Rgt pairs.

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

两个字段的唯一约束及其相反 的相关文章

  • 哪种 SQL 模式能够更快地避免插入重复行?

    我知道有两种不重复插入的方法 第一个是使用WHERE NOT EXISTS clause INSERT INTO table name col1 col2 col3 SELECT s s s WHERE NOT EXISTS SELECT
  • SQL分组和总结

    我的表如下所示 income date productid invoiceid customerid 300 2015 01 01 A 1234551 1 300 2016 01 02 A 1234552 1 300 2016 01 03
  • NFC标签唯一ID

    我正在开发一个包括 NFC 标签和 Android 手机的系统 使用 NFC 标签的唯一 ID 但不知道4种NFC标签之间有什么区别 我发现了这个 兼容 NFC 的标签可以采用以下技术 标准 他们每个人都有不同的 ID 概念 NFC Tag
  • 仅使用 SQL 中的 MAX 函数更新重复行

    我有一张这样的桌子 假设为了举例 NAME是一个唯一的标识符 NAME AGE VALUE Jack Under 65 3 Jack 66 74 5 John 66 74 7 John Over 75 9 Gill 25 35 11 Som
  • PIVOT 运算符中指定的列名“FirstName”与 PIVOT 参数中的现有列名冲突

    当我尝试替换时收到以下错误消息null to zero PIVOT 运算符中指定的列名 jan 与 PIVOT 参数中的现有列名称 查询如下 select from select isnull jan 0 isnull feb 0 sum
  • 为什么 Orchard 在执行内容项查询时如此慢?

    假设我想查询所有 Orchard 用户 ID 并且还想包括那些已被删除 也称为软删除 的用户 该数据库包含大约 1000 个用户 Option A 大约需要 2 分钟 Orchard ContentManagement IContentMa
  • 从Oracle表中删除重复行

    我正在 Oracle 中测试某些内容并使用一些示例数据填充表 但在此过程中我不小心加载了重复记录 因此现在我无法使用某些列创建主键 如何删除所有重复行并只保留其中一行 Use the rowid伪列 DELETE FROM your tab
  • 当列的数据类型为 int 时,如何用字符串替换 null

    我有一个包含 3 列的表和如下示例数据 所有列都是数据类型int 我有这个查询 select foodid dayid from Schedule 我要更换dayid用字符串 ifdayid null 为此我尝试了这个查询 select f
  • 对 ExecuteNonQuery() 的单次调用是原子的

    对 ExecuteNonQuery 的单次调用是否是原子的 或者如果单个 DbCommand 中有多个 sql 语句 那么使用事务是否有意义 请参阅我的示例以进行说明 using var ts new TransactionScope us
  • TSQL - 创建从日期表,同时忽略带条件的中间步骤

    我在 MS SQL 服务器中有以下表结构 现在 我想根据以下规则获取每个 id 的 in 日期 如果第二天 23 59 出 和 00 00 进 则忽略这些 如果同一天有 out 和 in 请忽略这些 例如我应该得到以下结果 id in ou
  • PDO 库比本机 MySQL 函数更快吗?

    我已经阅读了几个与此相关的问题 但我担心它们可能已经过时 因为自这些问题得到解答以来 更新版本的 PDO 库已经发布 我编写了一个 MySQL 类 它构建查询并转义参数 然后根据查询返回结果 目前这个类正在使用内置的mysql函数 我很清楚
  • 查找给定表的哪些行被锁定以及谁在 SQL Server 中锁定这些行

    有没有办法找出 SQL Server 2008 中特定表的哪些行被锁定 我还想知道锁定它们的用户 sys dm tran locks http msdn microsoft com en us library ms190345 aspx 正
  • 获取 Postgres 数据库中每个表的行数

    获取数据库中所有表的行数的最有效方法是什么 我正在使用 Postgres 数据库 结果示例 table name row count some table 1 234 foobar 5 678 another table 32 如果您想要特
  • 使用子查询与 LEFT JOIN 一起选择 MAX 值

    我有一个获取搜索结果的查询 效果很好 查询成功示例 SELECT individuals individual id individuals unique id TIMESTAMPDIFF YEAR individuals day of b
  • 如何更改 Amazon Redshift 中的默认时区?

    默认情况下将时间戳列设置为 SYSDATE 将其存储为UTC 是否可以更改时区 以便 SYSDATE 将日期和时间存储到不同的时区 到目前为止 我已经检查了SET http docs aws amazon com redshift late
  • SQL Server:索引或主键的总大小不能超过 900 字节

    我正在尝试在包含 URL 的列上放置索引 由于 URL 的最大长度超过 2000 个字符 因此我将数据类型设置为 NVARCHAR 3000 当我这样做时 我收到了错误The total size of an index or primar
  • 无法使用 django-mssql 提供程序

    有谁知道如何使用 django mssql 提供程序 我已经安装了要求 但无法让它工作 如果 settings py 中没有 sqlserver ado 它可以正常导入 testenv C Users Robin test gt pytho
  • 动态 SQL 和 where case 哪个更好?

    我需要创建一个带有 12 个参数的存储过程 并使用这些参数的不同组合来过滤查询 所有 12 个参数都不是强制性的 就好像我传递 3 5 或 12 个参数取决于用户输入的搜索输入一样 我可以通过两种方式创建 即使用动态 SQL 查询或使用 C
  • 使用 SQL 确定子网掩码的 cidr 值

    我想找到一种方法来执行 SQL 查询 该查询将计算存储在数据库中的子网掩码的 cidr 位表示 例如 我在数据库中存储了 255 255 255 0 或其十进制值 4294967040 我想通过查询进行选择并返回 24 表示 我已经执行了类
  • 当我耗尽 bigint 生成的密钥时会发生什么?怎么处理呢?

    我自己无法想象一个好的答案 所以我想在这里问 在我心里 我总是想知道 如果AUTO INCREMENT PRIMARY ID我的专栏MySQL表用完了吗 举例来说 我有一个有两列的表 一个ID auto increment primary

随机推荐

  • 是否有 VBA 代码来查看 Enterprise Project 2013 文件在打开之前是否已签出?

    试图帮助我们的 Project 2013 用户使用一些 VBA 代码 但我们似乎无法找到答案来查找是否使用 VBA 在我们的 PWA 服务器上检出 Project 2013 文件 它们基本上有一个项目列表 设置为单个项目文件中的任务 VBA
  • Android 定时器摆动

    我需要创建一个计时器来定期更新用户界面 但 Swing Timer 类在 Android 上不可用 我该如何解决这个问题 我会避免创建线程 然后使用 java util 包中的 Timer 类 你可以使用Handler http devel
  • 如何在 Mac OS X 上获取内存泄漏的行编号堆栈跟踪?

    我已经成功获得了 Xcodeleaks报告我的命令行 GCC Ada 程序中的泄漏的工具 通过添加delay 11 0 最后让leaks进行检查 然后 export MallocStackLogging 1 foobar leaks foo
  • 正则表达式中的[^.]*是什么意思?

    我试图从以下文本中获取 482 75 span 482 75 span 我使用的正则表达式是 regex span span 它起作用了 但我不明白的是为什么 可以在这里匹配 aapl 我的理解是 表示除换行符之外的任何字符 表示否定 因此
  • 如何在 ASP.NET Core MVC 上正确设置 cookie 的过期日期时间

    我正在尝试从后端 Asp Net core 向浏览器设置一个 Cookie 该 Cookie 应在第二天同一时间减去 5 分钟后过期 这是来自控制器的 C 代码 HttpContext Response Cookies Append MyC
  • Erlang - 随机数生成器

    我正在使用以下内容生成一个近乎随机的数字 3 gt erlang ref to list make ref Ref lt 0 0 0 36 gt 我想要的是00036 嗯 这就是我在上一篇文章中被告知我可以做的事情 我发现从 make re
  • 是否可以将数据导入Hive表而不复制数据

    我将日志文件以文本形式存储在 HDFS 中 当我将日志文件加载到 Hive 表中时 所有文件都会被复制 我可以避免所有文本数据存储两次吗 编辑 我通过以下命令加载它 LOAD DATA INPATH user logs mylogfile
  • 防止转换 HTML 实体时出现工具提示

  • 组件 props 中的函数参数不兼容

    我有一个组件 它接受一个项目列表 已知有一个 ID 以及一个过滤这些项目的函数 具有 ID 的类型是项目的通用类型 所有项目都将具有 但更具体的项目将包括其他道具 type GenericItem id string type Specif
  • 为什么给字符串添加null没有异常?

    为什么这不抛出异常不明白 obj 为 null object obj null Console WriteLine Hello World obj 这编译为 Console WriteLine String Concat Hello Wor
  • 如何使用CSS仅显示字符串的一部分

    我希望能够显示最多 10 个字符的字符串 如果字符串超过 10 个字符 我想在末尾附加 例如 如果我有字符串 helloworldmynameisryan 我希望它像这样显示 helloworld 我只是在 div 中显示我的字符串 如下所
  • 如何将 IAM 角色添加到 AWS 中的现有实例?

    我想添加一个IAM对现有角色的作用EC2AWS 中的实例 我尝试使用AWS CLI 但是 我找不到办法做到这一点 自 AWS CLI 起v1 11 46 昨天刚刚发布 参见变更日志文件 https github com aws aws cl
  • ASP.NET MVC AntiForgeryToken 和缓存

    我目前正在开发一个 ASP NET MVC 项目 并遇到了一个看起来很奇怪的错误 在 ASP NET MVC 模板表单中 始终会获得 AntiForgeryToken 因此我相信这是最佳实践 然而 AntiForgeryTokens 似乎不
  • 为什么环境变量在 FOR 循环内没有更新?

    我有一个正在扫描文件的批处理文件URLs txt对于每个 url 运行它并下载文件 我遇到的问题是 FOR 循环中的环境变量 我在用cat sed and awk获取 url 的最后两部分 以便我可以提供文件名 问题是环境变量在第一次运行后
  • Ojdbc8 jars升级到21.1.0.0抛出Nosuchmethod异常UCPservletContextListener init

    Ojdbc8 ons ucp jar 已升级到 21 1 0 0 版本 当尝试在 tomcat 服务器上启动应用程序时 它抛出 Nosuchmethod 异常 登录Tomcat的localhost log文件 应用程序尝试在启动期间建立数据
  • 套接字编程-setsockopt:协议不可用?

    我正在用 C 语言进行一些基本的套接字编程 并且在尝试运行代码的每台计算机上都会遇到此错误 代码编译得很好 但是当我尝试运行它时 我收到错误setsockopt 协议不可用 这似乎不是一个很常见的错误 但我尝试运行它的每台计算机上都会遇到这
  • 如何创建二维以上的 pandas 数据框?

    我希望能够创建n dimensional数据框 我听说过一种使用 3D 数据帧的方法panels in pandas但是 如果可能的话 我想通过将不同的数据集组合成一个 将维度扩展到超过 3 个维度超级数据框 我尝试了这个 但我不知道如何在
  • 是否可以从 vb.net dll 中的 dll 导入 c# 类?

    集成开发环境 VS2010 框架网 4 0 我在 Visual Studio 2010 下创建了一个 C dll 项目 其中包含几个公共类 我想在另一个 dll 项目中使用它的类 但用 vb net 编写 在vb net dll项目中 我引
  • 禁用所有 jquery datepicker 输入的自动完成功能

    我想禁用autocomplete对于使用 jquery ui datepicker 的所有输入 无需手动对每个输入执行此操作 这怎么可能做到呢 尝试这个 datepicker on click function e e preventDef
  • 两个字段的唯一约束及其相反

    我有一个数据结构 必须在其中存储元素对 每对恰好有 2 个值 因此我们使用一个表 其中包含字段 左值 右值 这些对应该是唯一的 如果密钥发生更改 它们将被视为相同 Example Fruit Apple is the same as App