Ответ 1
Да, MySQL позволяет это. Вы можете иметь несколько внешних ключей на одной таблице.
Получить более подробную информацию здесь ЗАРУБЕЖНЫЕ КЛЮЧЕВЫЕ Ограничения
У меня есть следующие таблицы (Основной ключ в жирный. Внешний ключ в курсивом)
Могу ли я иметь два внешних ключа в таблице Customer и как это реализовать в MySQL?
Обновление
Я разрабатываю веб-систему учета для окончательного проекта.
Категория аккаунта
Тип учетной записи -------------- Баланс
Активы
Обязательства
Средства
Расходы
Доход
Asset
дебиторов
Дебиторская задолженность
Я рисовал диаграмму ER (Entity relationship) с помощью программного обеспечения, и когда я указываю отношение, он автоматически добавляет несколько внешних ключей, как показано выше. Является ли дизайн недостаточным?
Да, MySQL позволяет это. Вы можете иметь несколько внешних ключей на одной таблице.
Получить более подробную информацию здесь ЗАРУБЕЖНЫЕ КЛЮЧЕВЫЕ Ограничения
create table Table1
(
id varchar(2),
name varchar(2),
PRIMARY KEY (id)
)
Create table Table1_Addr
(
addid varchar(2),
Address varchar(2),
PRIMARY KEY (addid)
)
Create table Table1_sal
(
salid varchar(2),`enter code here`
addid varchar(2),
id varchar(2),
PRIMARY KEY (salid),
index(addid),
index(id),
FOREIGN KEY (addid) REFERENCES Table1_Addr(addid),
FOREIGN KEY (id) REFERENCES Table1(id)
)
Внешние ключи в вашей схеме (на Account_Name
и Account_Type
) не требуют специальной обработки или синтаксиса. Просто объявите два отдельных внешних ключа в таблице Customer. Они, конечно же, не составляют составной ключ в каком-либо значимом смысле этого слова.
Есть много других проблем с этой схемой, но я просто укажу, что обычно не рекомендуется создавать первичный ключ из нескольких уникальных столбцов или столбцов, в которых функционально зависит от другого. Похоже, что хотя бы один из этих случаев применяется к столбцам ID и Name в таблице Customer. Это позволяет создавать две строки с одинаковым идентификатором (другое имя), которое, как я предполагаю, вы не хотите разрешать.
CREATE TABLE User (
user_id INT NOT NULL AUTO_INCREMENT,
userName VARCHAR(100) NOT NULL,
password VARCHAR(255) NOT NULL,
email VARCHAR(255) NOT NULL,
userImage LONGBLOB NOT NULL,
Favorite VARCHAR(255) NOT NULL,
PRIMARY KEY (user_id)
);
а также
CREATE TABLE Event (
EventID INT NOT NULL AUTO_INCREMENT,
PRIMARY KEY (EventID),
EventName VARCHAR(100) NOT NULL,
EventLocation VARCHAR(100) NOT NULL,
EventPriceRange VARCHAR(100) NOT NULL,
EventDate Date NOT NULL,
EventTime Time NOT NULL,
EventDescription VARCHAR(255) NOT NULL,
EventCategory VARCHAR(255) NOT NULL,
EventImage LONGBLOB NOT NULL,
index(EventID),
FOREIGN KEY (EventID) REFERENCES User(user_id)
);