Python 中的数据库 SQL [已关闭]

DB SQL in Python [closed]

提问人:שילה ברחד 提问时间:11/17/2023 最后编辑:Jason Allerשילה ברחד 更新时间:11/17/2023 访问量:30

问:


想改进这个问题吗?更新问题,使其仅通过编辑这篇文章来关注一个问题。

昨天关闭。

我想创建一个包含一些用户信息(姓名、密码、电子邮件等)的用户表 并且我想要另一个包含网站信息(名称、ip、哈希、新表的键)的表(网站),并且我想在 websites 表中有一个键,我想要一个键,该键将让我进入一个表,该表包含阻止此站点的所有用户的列表(我正在构建一个阻止站点的父控件)

我不知道哪种类型的键是可以让我进入表的键

python sql 数据库

评论

0赞 philipxy 11/17/2023
这回答了你的问题吗?数据库设计中的多对多关系

答:

0赞 Sergey 11/17/2023 #1

我想你需要第三个(链接)表。让我们将其命名为blocked_sites。它应该包含用户表的外键和站点表的外键

0赞 Littlefoot 11/17/2023 #2

您没有指定您使用的数据库,因此语法可能与我将要发布的示例(即 Oracle)略有不同。

基本上,您的方法不正确,因为它意味着一个网站只能被一个用户阻止(如果列使用标量数据类型),或者它应该是某种嵌套表(很可能不是)。user_id

通常的方法是创建另一个连接用户和网站表。该表包含两个外键列,每个列都指向相应的主表,而 combination 使主键(以防止重复)。

像这样的东西:

SQL> create table users
  2    (user_id    number generated always as identity primary key,
  3     name       varchar2(20),
  4     email      varchar2(50)
  5    );

Table created.

SQL> create table websites
  2    (site_id    number generated always as identity primary key,
  3     ip         varchar2(20),
  4     name       varchar2(20)
  5    );

Table created.

SQL> create table blocks
  2    (user_id    number references users,
  3     site_id    number references websites,
  4     --
  5     constraint pk_blocks primary key (user_id, site_id)
  6    );

Table created.

SQL>

评论

0赞 שילה ברחד 11/17/2023
IM使用sqlite3
0赞 שילה ברחד 11/17/2023
我希望每个网站都有一张桌子。表的名称将是网站的名称,表将具有的 culums 是 userName,每个破坏网站的新用户都会转到正确的表并在那里添加他的名字,所以我想要一个键可以让我进入 currect 表我该怎么做?
0赞 Littlefoot 11/17/2023
不,你不想要那样。这违反了所有规则。那么,您打算如何维护您的应用程序呢?如果出现新的被阻止站点,则必须创建一个新表,并修改使用存储在所有这些表中的数据进行操作的每段代码。简短:没有。