2016-12-07 3 views
0

У меня есть две таблицыMySQL ключ декларации путаница иностранных

CREATE TABLE members(
    id INT PRIMARY KEY AUTO_INCREMENT, 
    email VARCHAR(50), 
    password char(128), 
    salt char(128), 
    status VARCHAR(20), 
    profile VARCHAR(15), 
    unlock_code INT, 
    username VARCHAR(20), 
    privilege VARCHAR(15) 
); 

CREATE TABLE member_details(
    detail_id INT PRIMARY KEY AUTO_INCREMENT, 
    first_name VARCHAR(50), 
    middle_name VARCHAR(50), 
    last_name VARCHAR(50), 
    contact VARCHAR(12), 
    dob VARCHAR(10), 
    nic VARCHAR(15), 
    mobile VARCHAR(12), 
    userid INT, 
    FOREIGN KEY (userid) REFERENCES members(id) 
); 

Как дело в том, что, когда я DESCRIBE TABLEMUL это показывает.

Двигатель - InnoDB.

Кроме того, хорошо ли не объявлять внешние ключи и просто использовать JOINS в запросе и заставить его действовать как внешний ключ?

+0

'Если ключ является MUL, столбец является первым столбцом неединичного индекса, в котором в столбце разрешены множественные вхождения заданного значения .'. См. [14.7.5.5 Синтаксис SHOW COLUMNS] (http://dev.mysql.com/doc/refman/5.7/ru/show-columns.html). – wchiquito

+0

Итак, значит ли это, что это неправильный подход? Показывает ли Mysql какой-либо знак или ключевое слово, указывающее, что это внешний ключ? – Stan

+0

Независимо от того, будет ли это неправильный подход, будет зависеть от того, что вам нужно. С информацией, которую вы предоставляете, это не похоже на неправильный подход. DESCRIBE TABLE не укажет, является ли это внешним ключом. – wchiquito

ответ

1

Храните базу данных без ограничений! Сделать действия столбцов похожими на внешние ключи, но не ограничивать их.

Убедитесь, что у вас есть достаточная проверка на скриптах на стороне сервера, чтобы справиться с этими ограничениями.

Смежные вопросы