MySQL архитектура - PullRequest
       29

MySQL архитектура

0 голосов
/ 22 апреля 2020

Я новичок в создании архитектуры реляционных баз данных. Я создаю основную c таблицу, в которой у меня есть две таблицы данных.

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

Это правильно?

Спасибо!

1 Ответ

0 голосов
/ 22 апреля 2020

Что-то вроде

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) 
);
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) 
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...