如何在 Phpmyadmin 中使用主键和外键创建关系数据库?

Posted

技术标签:

【中文标题】如何在 Phpmyadmin 中使用主键和外键创建关系数据库?【英文标题】:How to create a relational database with Primary and Foreign keys in Phpmyadmin? 【发布时间】:2020-03-03 12:09:43 【问题描述】:

我已经在我的 Windows 计算机上安装了 XAMPP,运行了 Apache 和 mysql 模块并浏览到 http://localhost,然后我点击了 phpmyadmin。我创建了一个数据库并创建了一个表。

这个表叫做学校,有一个叫做 ID 的列。我给这个专栏一个主索引。该表还有另一个名为“名称”的列,其中存储了学校的名称。

然后,我创建了另一个名为“Users”的表,并在该表中创建了一个名为 schoolID 的列,并为其提供了索引。该表还有其他列,例如名字和姓氏。然后我转到 phpmyadmin 中数据库的设计器选项卡并单击创建关系。然后,我首先单击了学校表中的主键,然后单击了用户表的索引学校 ID。

然后它告诉我关系已成功创建,但是我没有看到连接两个键的绿线,当我去插入表“用户”时......我没有得到可能的学校的下拉列表可以从学校 ID 连接,并且没有迹象表明两个字段已连接。就好像根本没有关系一样。

如果我尝试再次创建关系,它只会给我错误 1062“无法添加内部关系 - 键 'PRIMARY' 的重复条目“testdatabase-testdatabase.users-school'”

然后我进入 REMOTEMYSQL.COM 并按照完全相同的步骤创建了一个数据库,发现它运行良好。为什么我的 XAMPP 服务器没有创建关系,我做错了什么?

【问题讨论】:

【参考方案1】:

我做了一个名为 schoolID 的列,我给了一个索引..

我不确定你的意思。您想创建一个用户被分配到/与之有关系的学校列表吗?

尝试如下设置表格:

课桌

id = auto-increment // <-- your primary key
name = varchar(255)

id | name
----------
1 | Hogwarts
2 | Hard Knocks

用户表

id = auto-increment // <-- primary key 
name = varchar(255)
school_id = int

id | name | school_id
----------
1 | John Doe | 1 
2 | Jane Doe | 1 
3 | Foo Bar | 2 

获取所有去霍格沃茨的用户:

SELECT * 
FROM users 
WHERE school_id = 1;

获取所有进入 Hard Knocks 学校的用户!

SELECT * 
FROM users 
WHERE school_id = 2;

显然,您可以更改此设置,但希望它为您指明正确的方向。开始时尝试从命令行使用 MySQL。它将帮助您真正专注于编写查询,而不是依赖 phpmyadmin 或任何东西。

【讨论】:

这正是我设置数据库的方式。是的,这就是我想要实现的目标。当我使用第三方主机(例如 remotemysql.com)时,它可以完美运行,但是当我尝试在本地服务器上进行设置时,关系并没有被创建。 使用以前版本的 XAMPP 修复。【参考方案2】:

它与 XAMPP 无关,而与 PMA 无关。

客户很重要,但我相信最新的 PMA 必须能够支持完整性。

确保您的表创建为 InnoDB,而不是 MyISAM。此外,如果您之前体验过其他 RDBMS,您可能会看到一些惊喜。首先,我认为您无法在 PMA 中看到下拉列表。

检查完整性的另一种方法是使用 FK(在您的情况下为用户)浏览表。带有 FK 的字段必须显示为链接。

【讨论】:

我已经使用 PMA 在远程站点 (remotemysql.com) 上设置了完全相同的设置,并且它与下拉菜单完美配合。数据库在它们两个上都是 InnoDB。我从一个监视器上的 Remotemysql.com 数据库 PMA 和另一台监视器上的本地数据库 PMA 开始重新开始,并在它们上以及在创建关系时遵循完全相同的步骤。远程mysql 一个工作,我的本地一个什么也没做。 !!感谢您的评论试图提供帮助,但我仍然完全不知道该怎么做。 真的吗?好吧,您并没有让我感到很惊讶,我不经常使用 PMA,并且在本地我从不使用它,尽管我在 Win64 环境中使用 XAMPP,但我见过其他一些 PMA,并且在 FK 上没有识别出任何选择。肯定可以是XAMPP设置,但我相信它只是一个版本,所以它与XAMPP无关,而是与他们使用的PMA版本有关。有时在 XAMPP 实例下升级任何东西都很痛苦,所以你可以尝试一些其他的客户端解决方案,包括非 web。这完全取决于您的喜好。 我终于通过删除我的 XAMPP 安装并下载以前的版本来修复它。它立即运行良好。谢谢。

以上是关于如何在 Phpmyadmin 中使用主键和外键创建关系数据库?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Clickhouse 中使用主键和外键的功能?

Informix 如何更加有效的创建主键和外键

PostgreSQL - 如何从“选择不同”查询创建“维度”表并创建主键和外键?

SQLite Expert Professional 如何设置主键和外键

如何在java jframe表中插入递增的主键和外键?

如何分清SQL数据库中的主键与外键