MySQL体系结构

MySQL体系结构,mysql,database-design,foreign-keys,Mysql,Database Design,Foreign Keys,我不熟悉关系数据库体系结构的创建。我正在创建一个非常基本的表,其中有两个数据表 CREATLE TABLE Authors ( idAuthors INT NOT NULL auto_increment, Name VARCHAR(50) NOT NULL, Birthplace VARCHAR(50) NOT NULL, PRIMARY KEY (idAuthors)); CREATLE TABLE Shops( idShops NOT NULL auto_increment, Name_

我不熟悉关系数据库体系结构的创建。我正在创建一个非常基本的表,其中有两个数据表

CREATLE TABLE Authors (
idAuthors INT NOT NULL auto_increment,
Name VARCHAR(50) NOT NULL,
Birthplace VARCHAR(50) NOT NULL,
PRIMARY KEY (idAuthors));


CREATLE TABLE Shops(
idShops NOT NULL auto_increment,
Name_shop VARCHAR(50) NOT NULL,
Name_authors VARCHAR(50) NOT NULL,
Location VARCHAR(50) NOT NULL
PRIMARY KEY (idShops));
我的问题是,每个表或中间表中是否应该有一个外键,即:

CREATLE TABLE intermediate(
PRIMARY KEY (idShops),
PRIMARY KEY (idAuthors));
这是正确的吗

谢谢大家!

类似于

CREATE TABLE Authors (
    idAuthors INT NOT NULL auto_increment,
    NameAuthor VARCHAR(50) NOT NULL DEFAULT 'unknown',
    BirthPlace VARCHAR(50) NOT NULL DEFAULT 'not defined',
    PRIMARY KEY (idAuthors) 
);

这只取决于你想要什么。如果这是一种多对多的关系,你不能用其他任何方式来完成它。这是正确的吗?不可以。该表不能有2个PK,也不能没有列。我在authors表中为每行指定了不同的作者,但在shops表中,作者可能会出现多次@阿尔瓦罗贡扎勒赞中间表应该是什么@AkinaYou没有给出您的设计/代码要满足的规范/模型/实现/记录,所以我们不知道您“应该”拥有什么。请通过编辑澄清,而不是评论。PS是时候学习一本关于信息建模、关系模型和数据库设计与查询的已出版学术教科书了。(记录和使用设计的语言和工具手册不是这样的教科书。)(维基文章或网络帖子也不是。)在卡住的地方问一个特定的问题。
CREATE TABLE Shops(
    idShops INT NOT NULL auto_increment,
    NameShop VARCHAR(50) NOT NULL 'unspecified',
    Location VARCHAR(50) NOT NULL 'not specified',
    PRIMARY KEY (idShops) 
);
CREATE TABLE Authors_Shops (
    idAuthors INT NOT NULL,
    idShops INT NOT NULL,
    PRIMARY KEY (idAuthors, idShops),
    CONSTRAINT fk_Authors FOREIGN KEY (idAuthors) REFERENCES Authors (idAuthors),
    CONSTRAINT fk_Shops FOREIGN KEY (idShops) REFERENCES Shops (idShops) 
);