2014-09-02 6 views
-1

외래 키 및 참조 무결성 제약 조건을 사용하여 DDL로 수행하는 것과 달리 쿼리 (JOINS)를 사용하여 MySQL 데이터베이스에서 테이블 관계를 만드는 데 장단점은 무엇입니까? 테이블간에 관계를 식별하기 위해 테이블에 관계가없는 데이터베이스 (No FK)를 받았습니다. 데이터를 쿼리 할 때 JOINS에서 관계가 만들어집니다.MySQL DB 외래 키

답변

0

외래 키를 사용하는 주된 이유는 데이터가 데이터베이스에서 항상 일관된다는 것입니다. 이것은 조인에서 "독립적"입니다. 외래 키를 사용할 때 여전히 조인을 사용해야합니다.

MySQL에서는 외래 키를 사용하는 경우 쿼리 속도를 높이기 위해 인덱스를 정의해야합니다.

그러나 외래 키를 사용하면 참조하는 행이 데이터베이스에 존재해야합니다. https://en.wikipedia.org/wiki/Foreign_key을 참조하십시오.

+0

귀하의 신속한 답변을 위해 MrTux에게 감사드립니다. 나는 FK가있는 테이블에서 여전히 JOINS를 사용하고 있다는 것을 알고 있습니다. 또한 FK로 테이블을 정의하면 데이터 무결성이 유지된다는 것을 알고 있습니다. 나는 내가 뭘 하려는지 추측했다 ... 아니요 아니요 테이블 관계를 정의하기 위해 외래 키를 사용하지 않고 데이터베이스를 설계하거나 그다지 중요하지 않습니까? 데이터 무결성 외에, 데이터베이스 설계의 주요 단점은 FK가 아니기 때문입니다. 감사. –

+0

더 이상 FK가없는 DB는 설계하지 않겠습니다. 단점은 상위 테이블에 키가 존재해야하므로 하위 테이블에 삽입하는 것이 약간 느려질 수 있다는 것입니다. 그러나 나는 "깨끗하고 일관성있는"DB와 비교할 때 무시할 만하다고 생각합니다. FK는 MySQL의 InnoDB 테이블에서만 지원되기 때문에 많은 DB가 FK를 사용하지 않는 이유가 될 수 있습니다. MyISAM (InnoDB에는 행 기반 잠금이 있고 트랜잭션을 지원하는 것은 권장하지 않습니다) 때문입니다. – MrTux

+0

MrTux에게 감사드립니다. 정확히 내가 찾던 응답의 종류. –