我想在我的服务器上创建一个 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);
三个问题:
- UserGroups 表值得吗?
- 我是否正确创建了外键?
- 这段代码会创建一个包含 4 个表的数据库吗?
最佳答案
如果您的用户可以位于多个组中,并且多个用户可以位于一个组中,请将列和外键引用删除到组表中的 userid 字段。用户组表处理这种多对多映射。
只有当每个组都有一个“所有者”用户时,您当前的设置才有意义...
另外,您使用什么数据库引擎? Innodb 或 myisam...如果 myisam 外键像任何其他索引一样开玩笑,没有任何强制约束的能力,因此尝试和声明并不是真正有用。
关于mysql - 如何创建带有外键的sql表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11497868/