Python 中的数据库 SQL

问题描述 投票:0回答:2

oi 想要创建一个包含一些用户信息(姓名、密码、电子邮件等)的用户表 我想要另一个表(网站),其中包含网站信息(新表的名称、IP、哈希值、密钥),并且我想要在网站表中拥有一个密钥,我想要一个可以让我访问的密钥一个表格,其中包含阻止该站点的所有用户的列表(我正在构建阻止站点的父控件)

我不知道哪种类型的钥匙可以让我进入桌子

python sql database foreign-keys key
2个回答
0
投票

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


0
投票

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

基本上,您的方法是不正确的,因为它要么意味着一个网站只能被一个用户阻止(如果

user_id
列使用标量数据类型),要么它应该是某种嵌套表(很可能不是) ).

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

类似这样的:

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>
© www.soinside.com 2019 - 2024. All rights reserved.