programing

MariaDB / Larabel 5 태그 보관에 최적인 엔진

bestcode 2022. 9. 16. 00:04
반응형

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

반응형