gpt4 book ai didi

mysql - MySQL中的多个表应该如何排列

转载 作者:行者123 更新时间:2023-11-29 08:35:40 24 4
gpt4 key购买 nike

我正在开发一个网络应用程序,需要一些有关如何组织数据库信息的建议。以下是应用程序将拥有的所有信息的列表:

1) 有些用户将存储在如下表中:

User
- username (primary key)
- email

2)用户可以创建 map (用这样的表格表示)

Map
- name
- data
<小时/>

用户可以创建许多 map

使用mySQL数据库,我应该如何实现如上所述的存储系统:

  • 我应该有一张表来存储所有用户的 map 吗?然后在映射表中创建一个新的“用户名”字段。
  • 我是否应该为每个新用户创建一个新的 map 表,仅存储该用户的 map 。
  • 我应该在用户中创建一个新的“ map ”字段,然后将其链接到 map 表吗?

最后,我希望每个用户都可以访问和查看自己的 map 集合。我是 mySQL 和数据库设计的新手,因此非常感谢任何有关这方面的建议。

最佳答案

既然您提到用户可以创建许多 map ,我认为您只需要两个表(每个用户都不需要很多 map 表)

用户

  • 用户ID(主键)
  • 用户名(唯一)
  • 电子邮件

map

  • ID(主键)
  • 姓名
  • 日期
  • 用户ID(外键)

当翻译成 DDL 时:

CREATE TABLE User
(
UserID INT AUTO_INCREMENT,
UserName VARCHAR(15),
Email VARCHAR(35),
CONSTRAINT usr_pk PRIMARY KEY(UserID),
CONSTRAINT usr_uq UNIQUE(UserName)
);

CREATE TABLE Maps
(
MapID INT AUTO_INCREMENT,
Name VARCHAR(20),
Date DATETIME,
UserID INT,
CONSTRAINT map_pk PRIMARY KEY(MapID),
CONSTRAINT map_FK FOREIGN KEY(UserID) REFERENCES User(UserID)
);

当您想要获取所有用户的所有 map 时,

SELECT  a.*, b.Name
FROM User a
INNER JOIN Maps b
ON a.UserID = b.UserID

要进一步了解有关联接的更多知识,请访问以下链接:

关于mysql - MySQL中的多个表应该如何排列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15313576/

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