gpt4 book ai didi

mysql - MySQL 中现有表的复合主键

转载 作者:行者123 更新时间:2023-11-29 07:43:57 26 4
gpt4 key购买 nike

我正在使用 MySQL 工作台来管理我的数据库,该数据库是交给我进行开发任务的。不幸的是,该模式是一场噩梦:大量表没有主键、大量重复列等。

首先,我想添加一些独特性,以便我可以以某种方式开始正常化。我有一个“学生”表,其中一名学生(有 ID)正在从事属于特定学期(2014 年秋季、2015 年 Spring 等)的项目

由于同一学生可以出于某种原因连续两个学期从事同一个项目,因此区分他们的唯一方法就是进行(学生 ID、学期)PK。所以我实际上确实需要复合 PK。

我如何更改现有表并设置复合 PK?

<小时/>

编辑:

澄清一下:该架构包含一个 users 表,其中包含实际的学生信息(名字/姓氏、电子邮件、学期)。 students 表更适合命名为 projects,因为它仅通过 ID 引用学生,然后列出他们在学期中从事的项目。因此,至少,students.id 也是来自 users 的 FK。

我知道上面的内容没有任何意义;我只是试图一次只执行一步,因为应用程序依赖于架构,并且我不想在此时引入任何新的错误。

<小时/>

为了进一步澄清,usersstudents 表如下所示:

学生

id        project        termInitiated        ...
20 XYZ Summer 2013
20 XYZ Fall 2013
23 ABC Fall 2013
24 ABC Fall 2014
...

用户

studentId        firstName        lastName        termInitiated
20 A AA Summer 2013
20 A AA Fall 2013
23 Z ZZ Fall 2013
24 Y YY Fall 2014
...

不幸的是,由于它的设置方式,我无法让 studentId 本身成为 PK,因为同一个学生可能连续多个学期从事同一个项目。

解决这个问题的最佳方法是使用一个全局唯一的标识符,它可以用不同的术语引用同一名学生,但这会引入大量的错误,而我现在没有时间修理。因此,考虑到我的局限性,我认为复合 PK 将是最好的解决方案。

最佳答案

如果未添加复合键,您可能需要授予自己更改权限,请看一下:https://kb.mediatemple.net/questions/788/How+do+I+grant+privileges+in+MySQL%3F#dv这是阿德里安的链接:ALTER TABLE to add a composite primary key

关于mysql - MySQL 中现有表的复合主键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28359144/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com