Подтвердить что ты не робот

Может ли таблица иметь два внешних ключа?

У меня есть следующие таблицы (Основной ключ в жирный. Внешний ключ в курсивом)

Таблица клиентов

  • ID --- Имя --- Баланс --- учётная_запись --- ACCOUNT_TYPE

Таблица категорий аккаунтов

  • ACCOUNT_TYPE ---- Баланс

Таблица сведений о клиенте

  • учётная_запись --- First_Name ---- Last_Name --- Адрес

Могу ли я иметь два внешних ключа в таблице Customer и как это реализовать в MySQL?


Обновление

Я разрабатываю веб-систему учета для окончательного проекта.

Категория аккаунта

Тип учетной записи -------------- Баланс

Активы
Обязательства
Средства
Расходы
Доход

Asset

  • Asset_ID ----- Название актива ---- Баланс ---- Тип учетной записи

дебиторов

  • Receivable_ID ----- Имя получателя ------- Адрес -------- Телефон ----- Asset_ID ---- Тип учетной записи

Дебиторская задолженность

  • TRANSACTION_ID ---- Описание ---- Сумма --- Баланс ---- Receivable_ID ---- Asset_ID --- Тип учетной записи

Я рисовал диаграмму ER (Entity relationship) с помощью программного обеспечения, и когда я указываю отношение, он автоматически добавляет несколько внешних ключей, как показано выше. Является ли дизайн недостаточным?

4b9b3361

Ответ 1

Да, MySQL позволяет это. Вы можете иметь несколько внешних ключей на одной таблице.

Получить более подробную информацию здесь ЗАРУБЕЖНЫЕ КЛЮЧЕВЫЕ Ограничения

Ответ 2

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

Ответ 3

Внешние ключи в вашей схеме (на Account_Name и Account_Type) не требуют специальной обработки или синтаксиса. Просто объявите два отдельных внешних ключа в таблице Customer. Они, конечно же, не составляют составной ключ в каком-либо значимом смысле этого слова.

Есть много других проблем с этой схемой, но я просто укажу, что обычно не рекомендуется создавать первичный ключ из нескольких уникальных столбцов или столбцов, в которых функционально зависит от другого. Похоже, что хотя бы один из этих случаев применяется к столбцам ID и Name в таблице Customer. Это позволяет создавать две строки с одинаковым идентификатором (другое имя), которое, как я предполагаю, вы не хотите разрешать.

Ответ 4

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