2016-12-07 8 views
0

私は2つのテーブルの事は、私はDESCRIBE TABLEとき、それはMULを示すことである方法 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) 
); 

を持っています。

エンジンはInnoDBです。

また、外部キーを宣言せず、単にJOINSをクエリに使用して外部キーのように動作させることはできますか?

+0

'キーがMULの場合、列は、ある値の複数の出現が列内で許可される非一意的な索引の最初の列です。 [14.7.5.5 SHOW COLUMNS構文](http://dev.mysql.com/doc/refman/5.7/en/show-columns.html)を参照してください。 – wchiquito

+0

これは間違ったアプローチであることを意味しますか? Mysqlは外部キーであることを示す記号やキーワードを表示しますか? – Stan

+0

それが間違ったアプローチであるかどうかは、必要なものによって決まります。あなたが提供する情報では、間違ったアプローチのようには見えません。 DESCRIBE TABLEは、それが外部キーであるかどうかの情報を与えません。 – wchiquito

答えて

1

制約なしでデータベースを保持してください!外部キーのように列を「行為」にしますが、制約はありません。

これらの制約を処理するには、サーバーサイドスクリプトで十分な検証があることを確認してください。