반응형
MariaDB / Larabel 5 태그 보관에 최적인 엔진
안녕하세요 저는 태그를 db에 저장하고 싶습니다.
투고 검색은 태그를 기반으로 합니다.그리고 일관성 및 퍼포먼스를 찾고 있습니다.아쉽게도 외부 키나 대체 키가 있으면 좋을 것 같습니다.아리아 엔진으로 시험해 봤는데, 외국 키는 지원하지 않아요.
이행 파일은 다음과 같습니다.
Schema::create('tags', function (Blueprint $table) {
$table->engine = 'Aria';
$table->increments('id')->nullable();
$table->string('tag',100);
$table->unique('tag');
});
Schema::create('post_tag', function (Blueprint $table) {
$table->engine = 'Aria';
$table->integer('post_id')->unsigned()->index();
$table->foreign('post_id')->references('id')->on('posts')->onDelete('cascade');
$table->integer('tag_id')->unsigned()->index();
$table->foreign('tag_id')->references('id')->on('tags')->onDelete('cascade');
$table->primary(['post_id', 'tag_id']);
});
'태그'는 필요 없습니다.FOREIGN KEYS
태그를 삽입할 수 있는 장소가 1개 있습니다.코드가 올바르게 설정되어 있기 때문에 항상 비용이 많이 드는 체크가 필요 없습니다.
를 사용하는 대신CASCADING DELETE
, 여분의 행은 그대로 둡니다.Tags
의 스펠링을 기입해 주세요.SHOW CREATE TABLE
그리고.SELECTs
상상하시는군요그 중에서 먼저 스키마의 장점을, 다음으로 어떤 엔진을 사용할지에 대해 더 잘 논의할 수 있습니다.
사용하다INSERT IGNORE
또는INSERT .. ON DUPLICATE KEY UPDATE ..
태그를 삽입합니다(dups는 사용하지 않습니다.
더 이상 필요하지 않은 태그를 제거하는 것은 더 어렵습니다. FK는 이러한 작업을 수행할 수 없습니다(따라서 단순히 태그를 그대로 두어야 한다는 또 다른 주장이 있습니다).
태그만 있는 경우 태그를 정규화할 필요가 없을 수 있습니다.
언급URL : https://stackoverflow.com/questions/41363076/mariadb-laravel-5-best-engine-for-storing-tags
반응형
'programing' 카테고리의 다른 글
문자열을 float 또는 int로 해석하려면 어떻게 해야 하나요? (0) | 2022.09.16 |
---|---|
MySql 쿼리 선택에서 NULL을 빈 문자열로 바꾸기 (0) | 2022.09.16 |
최소 유효 JSON은 얼마입니까? (0) | 2022.09.16 |
ms-access NZ를 IFNULL MySQL 또는 MariaDB 함수로 변환하려면 어떻게 해야 합니까? (0) | 2022.09.16 |
Access-Control-Allow-Origin 헤더는 어떻게 동작합니까? (0) | 2022.09.16 |