おそらくこのようなことを試してください。コンテンツを拡張する投稿と記事のニーズは異なる場合がありますが、コンテンツ -> 投稿 (または記事) からの 1.. 多数の関係の代わりに、任意のコンテンツ内でコンテンツを混合/一致させる柔軟性を追加してみませんか。それが必要ない/望まない場合は、article_content テーブルと post_content テーブルを省略し、単に外部キー content_id INT NOT NULL を post テーブルと article テーブルのそれぞれに追加します。
CREATE TABLE IF NOT EXISTS content (id INT NOT NULL AUTO_INCREMENT, title VARCHAR(32) NOT NULL, description VARCHAR(255) NULL, body TEXT, published DATETIME NOT NULL, updated DATETIME NULL, owner_id INT DEFAULT '0', status TINYINT( 1) デフォルト '1', PRIMARY KEY (id), INDEX idx_content_status (status));
CREATE TABLE IF NOT EXISTS article (id INT NOT NULL AUTO_INCREMENT, title VARCHAR(32) NOT NULL, excerpt VARCHAR(255) NULL, url_slug VARCHAR(64) NOT NULL, author_id INT NOT NULL, published DATETIME NOT NULL, updated DATETIME NULL, status TINYINT(1) DEFAULT '1', sort_order INT DEFAULT '1', PRIMARY KEY (id), UNIQUE INDEX idx_article_slug(url_slug), INDEX idx_article_search(title, published, status, sort_order));
CREATE TABLE IF NOT EXISTS post (id INT NOT NULL AUTO_INCREMENT, title VARCHAR(32) NOT NULL, comment VARCHAR(128) NULL, author_id INT NOT NULL, published DATETIME NOT NULL, updated DATETIME NULL, status TINYINT(1) DEFAULT '1 '、主キー (id));
CREATE TABLE IF NOT EXISTS タグ (ID INT NOT NULL AUTO_INCREMENT、タグ VARCHAR(24) NOT NULL、PRIMARY KEY (id));
存在しない場合のテーブルの作成
存在しない場合のテーブルの作成
CREATE TABLE IF NOT EXISTS article_tags (article_id INT NOT NULL, tag_id INT NOT NULL, INDEX idx_article_tag_search(article_id, tag_id));
CREATE TABLE IF NOT EXISTS post_tags (post_id INT NOT NULL, tag_id INT NOT NULL, INDEX idx_post_tag_search(post_id, tag_id));