Database design 外键,它们所属的位置取决于关系

Database design 外键,它们所属的位置取决于关系,database-design,foreign-keys,foreign-key-relationship,ddl,Database Design,Foreign Keys,Foreign Key Relationship,Ddl,我曾经使用过相当多的数据库(MySQL、Oracle),但通常只使用DML,因为这些系统是以前设计的 我作为唯一的开发人员从事一个项目,负责应用程序开发和DBA;当然,后者的问题更大 无论如何,我需要刷新外键约束,以及它们在模型中的逻辑位置。鉴于以下情况: dbc_user .user_id INT, Primary Key, Auto Increment // arbitrary columns dbc_user_profile .user_id INT, Prima

我曾经使用过相当多的数据库(MySQL、Oracle),但通常只使用DML,因为这些系统是以前设计的

我作为唯一的开发人员从事一个项目,负责应用程序开发和DBA;当然,后者的问题更大

无论如何,我需要刷新外键约束,以及它们在模型中的逻辑位置。鉴于以下情况:

dbc_user
    .user_id INT, Primary Key, Auto Increment
    // arbitrary columns

dbc_user_profile
    .user_id INT, Primary Key
    // arbitrary columns
这些表格是一对一的关系。我理解,考虑到这种关系,它们的列可以合并到一个表中,但让我们将它们分开。那么外键属于
dbc\u user\u profile
表吗

多对多怎么样

dbc_user
    .user_id INT, Primary Key, Auto Increment

dbc_city
    .city_id INT, Primary Key, Auto Increment

dbc_user_city
    .city_id INT, Primary Key
    .user_id INT, Primary Key
哪些表是引用/引用表

出于某种原因,我似乎找不到一个快速而肮脏的教程来解释这些关系

所以问题分为两部分

  • 有人能为半精明的人推荐一个关于外键DDL细节的教程吗?或
  • 有人能简要介绍一下1对11对mm对m关系和FK参考资料吗

在子表上声明外键并引用父表

在一对一的关系中,
DBC\u USER
似乎是父项,
DBC\u USER\u PROFILE
是子项。因此,您需要在
DBC\u USER\u PROFILE
表中声明外键,并引用
DBC\u USER
表。类似(Oracle语法)


显然,语法倾向于相对特定于数据库。特别是对于Oracle,在上有一个相当完整的语法选项列表。对于包含各种数据库语法的更一般的参考,您可以使用。

谢谢您,先生-尽管我要强调的是,请快速且切中要害;据我所知,他们误入歧途的程度比他们帮助的还多。
CREATE TABLE dbc_user_profile (
  user_id int primary key,
  <<more columns>>
  constraint fk_user_profile_user_id foreign key (user_id)
    references dbc_user( user_id )
)
CREATE TABLE parent (
  parent_id int primary key,
  <<additional columns>>
);

CREATE TABLE child (
  child_id int primary key,
  parent_id int references parent( parent_id ),
  <<additional columns>>
);
CREATE TABLE dbc_user_city (
  city_id int,
  user_id int,
  constraint pk_dbc_user_city primary key( city_id, user_id ),
  constraint fk_dbc_user_city_city_id foreign key( city_id )
    references dbc_city( city_id ),
  constraint fk_dbc_user_city_user_id foreign key( user_id )
    references dbc_user( user_id )
)