为什么使用多列作为主键(复合主键)

2023-12-11

这个例子是采取来自 w3schools.

CREATE TABLE Persons
(
    P_Id int NOT NULL,
    LastName varchar(255) NOT NULL,
    FirstName varchar(255),
    Address varchar(255),
    City varchar(255),
    CONSTRAINT pk_PersonID PRIMARY KEY (P_Id,LastName)
)

我的理解是两列在一起(P_Id and LastName) 表示表的主键Persons。它是否正确?

  • 为什么有人想要使用多个列作为主键而不是单个列?
  • 给定表中可以有多少列一起用作主键?

你的理解是正确的。

在很多情况下你都会这样做。一个例子是在这样的关系中OrderHeader and OrderDetail。 PK中OrderHeader可能OrderNumber。 PK中OrderDetail可能OrderNumber AND LineNumber。如果是这两者中的任何一个,它都不会是唯一的,但两者的组合保证是唯一的。

另一种方法是使用生成的(非智能)主键,例如在本例中OrderDetailId。但这样你就不会总是那么容易地看到这种关系。有些人喜欢一种方式;有些人喜欢一种方式。有些人更喜欢另一种方式。

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

为什么使用多列作为主键(复合主键) 的相关文章

  • 提高聚簇索引 GUID 主键的性能

    我有一个包含大量行 10K 的表 它的主键是 GUID 主键是聚集的 该表的查询性能相当低 请提供建议以提高效率 GUID 上的聚集索引不是一个好的设计 GUID 的本质在于它是随机的 而聚集索引则通过键对记录进行物理排序 这两件事是完全矛
  • 我应该创建代理键而不是复合键吗?

    结构 Actor lt ActorMovie gt Movie ActorMovie ActorID fk MovieId fk gt pk ActorID MovieID 我应该创建一个代理键吗ActorMovie桌子是这样的 Actor
  • 具有备用序列的列

    我想创建一个 user widgets 表 该表由 user id 和 user widget id 主键 其中 user widget id 的工作方式类似于序列号 除了每个用户从 1 个开始 对此有通用或实用的解决方案吗 我正在使用 P
  • 数据库设计 - 是否应该避免一对一关系? [复制]

    这个问题在这里已经有答案了 可能的重复 是否存在使用数据库 1 1 关系有意义的时候 https stackoverflow com questions 517417 is there ever a time where using a d
  • 在外键列中设置空值?

    我有这张桌子 CREATE TABLE dbo CityMaster CityID int NOT NULL City varchar 100 COLLATE SQL Latin1 General CP1 CI AS NOT NULL Br
  • 如何让主键从1000开始?

    create table tablename id integer unsigned not null AUTO INCREMENT primary key id 我需要主键从1000开始 我正在使用MySQL 如果您的表已经创建为自动增量
  • 更好的数据库设计是:更多的表还是更多的列?

    一位前同事坚持认为 具有更多表且每个列较少的数据库比具有较少表且每个列较多的数据库更好 例如 您将拥有一个名称表 一个地址表 一个城市表等 而不是包含名称 地址 城市 州 邮政编码等列的客户表 他认为这种设计更加高效和灵活 也许它更灵活 但
  • JSONB 会让 PostgreSQL 数组变得无用吗?

    假设您想在对象 例如帖子 上存储 标签 在 9 4 版本中 您有 3 个主要选择 标签作为文本 标签为 jsonb 标签作为文本 并且您将 JSON 字符串存储为文本 在许多情况下 第三个是不可能的 因为它不允许对 标签 值进行条件查询 在
  • 基于 MySQL 中的另一列创建计算列

    我的表中有 2 列 varchar 8 and an int 我想要auto increment the int column当我这样做时 我想将值复制到varchar 8 column 但用 0 填充它直到它达到 8 个字符长 因此例如
  • 数据库索引:是好事、坏事还是浪费时间?

    这里通常建议添加索引作为性能问题的补救措施 我只讨论读取和查询 我们都知道索引会使写入速度变慢 多年来 我在 DB2 和 MSSQL 上多次尝试过这种补救措施 但结果总是令人失望 我的发现是 无论索引会让事情变得更好是多么 明显 事实证明查
  • 数据库中的 GUID 类型

    GUID不是数据库中的正式数据类型 在我们现有的 SQL Server 设计中 Uniqueidentifier类型用于GUID价值 现在我们正在切换到Sybase数据库 我们应该使用varchar 36 来代替那个Uniqueidenti
  • Hibernate DDL表动态创建

    我有一个 spring boot 项目 我正在使用 hibernate 将我的实体映射到数据库 但是现在我有一个新的要求 我需要能够在数据库中动态创建表 而无需任何映射 到目前为止 有谁知道一些框架来帮助我处理这个问题 我想执行 SQL 或
  • Postgresql - 确定从级联删除中删除哪些记录

    我继承了一个相当大的 postgresql 数据库 我们有一个每月运行的作业 用于备份现有数据库并使用我们收到的更新的供应商数据创建一个新数据库 目前有一个小问题 在不深入了解表设置 数据建模内容等细节的情况下 我相信它可以通过简单的删除查
  • 用户反馈系统的正确数据库模型(一个有趣的案例)

    我正在使用 PHP 和 Yii Framework 开发一个应用程序 我一直在考虑最适合给定功能的数据库结构 这就是我的想法 但我并不是 100 肯定应该这样做 因此我决定询问社区 应用程序说明 注册用户可以参加活动 每个事件都可以有一个
  • 如何使用 nosql 构建成就和徽章

    我目前有一个使用 mongodb 作为数据库的社交游戏应用程序 我的问题是 如果我想创建一个积分和徽章系统 有哪些建议 成就 徽章的业务逻辑可能会变得非常复杂并且非常临时 因此实时授予徽章似乎效率不高 我想象将跟踪的操作添加到队列中的某处
  • PostgreSQL 索引使用分析

    是否有工具或方法可以分析 Postgres 并确定应创建哪些缺失的索引 以及应删除哪些未使用的索引 我在使用 SQLServer 的 分析器 工具执行此操作方面有一些经验 但我不知道 Postgres 中是否包含类似的工具 我喜欢这样来查找
  • 在数据库设计中什么时候需要使用一对一关系?

    在数据库设计中什么时候需要使用一对一关系 在我看来 如果两个表是一对一的关系 那么它们可以合并成一个表 这是真的 对大型表进行垂直分区以减少 I O 和缓存需求 将经常查询的列与很少查询的列分开 向生产系统添加列时alter table就是
  • 在关系数据库中存储树结构的已知方法有哪些? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 设计 Cassandra 数据模型的最佳实践是什么? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 以及需要避免哪些陷阱 您有任何交易中断吗 例如 我听说导出 导入 Cassandra 数据非常困难 这让我想知道这是否会妨碍将生产数据
  • 有很多数据库视图可以吗?

    我很少 每月 每季度 使用 Microsoft SQL Server 2005 数据库视图生成数百份 Crystal Reports 报告 在我不读取这些视图的所有时间里 这些视图是否会浪费 CPU 周期和 RAM 因为我很少从视图中读取数

随机推荐

  • “javac”不被识别为内部或外部命令

    我必须将 Matlab 算法转换为 Java 为此 我使用 matlab builder ja 工具箱 在执行所有必要的步骤后 构建失败并显示此错误 javac 不被识别为内部或外部命令 可操作程序或批处理文件 错误 调用 javac 时发
  • 编写一个满足以下测试的函数 f

    我有一个问题一直困扰着我 需要帮助解决 下面是一个需要解决的测试 我已经成功地整合了一个解决方案 该解决方案适用于 85 的覆盖范围 但它是我坚持的最后 15 describe f function it should work funct
  • 如何在每次迭代时仅从一个类中对批次进行采样

    我想在一个 ImageNet 数据集 每个类有 1000 个类 每个类大约有 1300 张图像 上训练一个分类器 由于某种原因 我需要每个批次包含来自同一类别的 64 个图像 以及来自不同类别的连续批次 使用最新的 TensorFlow 是
  • 为什么 Angular 2+ innerHTML 在一条语句中多次调用方法,如何解决这个问题

    我有这样的模板视图 p p 并且 ts 文件就像 import Component from angular core Component selector my app templateUrl app component html sty
  • 如何以正确的格式将抓取的数据导出到 csv 文件?

    I made an improvement to my code according to this suggestion from paultrmbrth what i need is to scrape data from pages
  • 我想知道为什么用向量可以成功而用数组却不行?

    这成功了 include
  • 从 Visual Studio 2019 中替换 WiX 变量

    我正在努力本地化我在 WiX 工具集中制作的安装程序 并尝试根据生成的 msi 更改我的许可协议 如果 msi 来自调试中的 en us 文件夹 那么它应该是英语 如果位于 fr fr 文件夹中 则应该是法语 我目前分别有英语和法语的两个许
  • 获取 RTI DDS 上 DataWriter/Publisher 的 IP 地址?

    我在用RTI DDS 5 2 3 17并想获取该设备的 IP 地址DataWriter Publisher添加到一些日志消息 我该如何去做呢 我在形成做什么的逻辑时遇到了一些困难 无法以标准化方式访问 DataWriter 的 IP 地址
  • 不使用多部分httppost方法在android中发布图像文件

    这个问题借用自同样的问题 因为我遇到了一些问题 在服务器端发布图像期间 图像详细信息无法进入服务器端 像这样 无法发布图像文件信息php服务器 用户ID正常但图像文件信息无法发布 在这种情况下 图像在服务器上保存成功 我无法获取图像的php
  • 如何保护ajaxRequest.open php脚本

    我是使用 AJAX 的新手 我只是按照教程使用 AJAX 从数据库中检索一些信息并将其输出到页面上 有一行我调用了一个 php 脚本 这是进行数据库查询的地方 并且结果被回显 我有点担心 由于文件名在前端可见 并且它的唯一目的是直接输出数据
  • 使用 EnumDisplayDevices 获取显示器的名称

    我碰到this帖子中有人想使用 EnumDisplayDevices 找出他们的显示器的名称 这正是我想要的 我尝试在 C 中做类似的事情 但对 EnumDisplayDevices 的第二次调用似乎永远不会返回任何内容 我只获取有关显卡的
  • Genie 中嵌套泛型类型的语法是什么?

    我想声明一个哈希表string因为它是关键并且array of int因为它的价值 indent 4 init var h new HashTable of string array of int str hash str equal h
  • CSS 样式表未加载

    这是最愚蠢的问题 但我不知道为什么我找不到问题 下面是代码 但 css 文件未加载 section a href class btn btn primary Hello a section
  • Tensorflow,如何访问 RNN 的所有中间状态,而不仅仅是最后一个状态

    我的理解是tf nn dynamic rnn返回 RNN 单元 例如 LSTM 在每个时间步的输出以及最终状态 如何访问所有时间步骤中的细胞状态 而不仅仅是最后一个时间步骤 例如 我希望能够对所有隐藏状态进行平均 然后在后续层中使用它 以下
  • 使用 DataFrame 按组计算 Python Spark 累积和

    如何专门使用以下方法计算每组的累积总和DataFrame abstraction 并在PySpark 示例数据集如下 df sqlContext createDataFrame 1 2 a 3 2 a 1 3 b 2 2 a 2 3 b t
  • 在 Windows 中获取鼠标光标下的单词

    大家好 我和一个朋友正在讨论一个新项目的可能性 一个翻译程序 只要你将鼠标悬停在任何控件中的任何单词上 甚至是静态的 不可编辑的单词上 就会弹出翻译 我知道有很多浏览器插件可以在网页上执行此类操作 我们正在考虑如何在系统范围内 在 Wind
  • Q3DScatter --> 如何将不同颜色的点添加到点云中

    我在 Qt 中编写了一个程序 它使用 Q3DScatter 可视化处理后的点云 3D 点 现在我想添加具有不同颜色的计算关键点 那可能吗 有哪位男孩有这方面的经验吗 下面您可以看到代码部分 其中点云被添加到数据数组中 QScatterDat
  • 禁用元素的 NumericUpDown 背景颜色更改

    在我的 winform 应用程序上 我尝试对所需字段进行颜色编码 在用户编辑时 当必填字段被填写时 背景变为浅绿色 如果必填字段为空 则背景为红色 某些字段的启用和禁用取决于其他字段中的输入 因此有时我需要禁用字段 并且应该完全禁用该字段
  • 我如何使用 BoxLayout 来做到这一点?

    我已经完美地设置了菜单 中心框 但我不知道如何放置标签 目前发生的情况是标签位于菜单选项下方 并且菜单选项被推到右侧 Here is what I want to happen And here is what is happening 目
  • 为什么使用多列作为主键(复合主键)

    这个例子是采取来自 w3schools CREATE TABLE Persons P Id int NOT NULL LastName varchar 255 NOT NULL FirstName varchar 255 Address v