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)
);