mysql - 如何创建带有外键的sql表

标签 mysql database

我想在我的服务器上创建一个 sqlDB,我对数据库开发非常陌生,几年前只在这里那里做过一些奇怪的编码。我正在尝试构建一个具有四个相互引用的表的数据库..

这就是创建每个表格的目的,以便让您更好地了解我想要实现的目标。

该表将存储用户创建的中心以供其他用户关注。

用户 存储创建群组和加入群组时使用的用户详细信息

//不确定下一个是否是个好主意,但希望有人能让我知道他们对此有何看法 用户组 该表存储所有组和用户连接。当用户加入群组时,他们的 ID 会与群组 ID 一起存储。

国家 国家/地区用于帮助限制可返回的结果数量

这是我创建的代码,我想在我的数据库上运行。我不确定我是否正确地创建了外键,对此的任何建议也将不胜感激。

CREATE DATABASE tempDB
USE tempDB

CREATE TABLE Group (groupID UInt32 PRIMARY KEY, userID UInt32 references User(SID), country VARCHAR(20) references Country(SID));

CREATE TABLE User (userID UInt32 PRIMARY KEY, name VARCHAR(20), country VARCHAR(20) references Country(SID));

CREATE TABLE userGroups (userID references User(SID), groupID UInt32 references Group(SID));

CREATE TABLE countries (countryName VARCHAR(20) PRIMARY KEY);

三个问题:

  1. UserGroups 表值得吗?
  2. 我是否正确创建了外键?
  3. 这段代码会创建一个包含 4 个表的数据库吗?

最佳答案

如果您的用户可以位于多个组中,并且多个用户可以位于一个组中,请将列和外键引用删除到组表中的 userid 字段。用户组表处理这种多对多映射。

只有当每个组都有一个“所有者”用户时,您当前的设置才有意义...

另外,您使用什么数据库引擎? Innodb 或 myisam...如果 myisam 外键像任何其他索引一样开玩笑,没有任何强制约束的能力,因此尝试和声明并不是真正有用。

关于mysql - 如何创建带有外键的sql表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11497868/

相关文章:

database - AWS : Why does my RDS instance keep starting after I turned it off?

php - 获取mysql获取分层数据结构

Java : JDBC Connection Issue When Click On Button

MySQL - 将两行连接到两列

mysql - 图像数据库

mysql - 当我编写 mysql 查询时,无法从多个表中获取准确的数据集

java - PreparedStatement、浮点值和 postgresql

mysql - 我可以将查询指定为字段的默认值吗?

mysql - 使用 Smartfox API 连接到 Windows Azure 数据库

php - 将 php 变量保存为 sql 的 null