Mysql
架構設計 - 引用不同表中略有不同的數據
我正在嘗試為 MySQL 數據庫設計一個模式並陷入以下困境。我的數據庫儲存應該與內容塊相關的文件。
create table document ( `id` int unsigned auto_increment, `title` varchar(128) not null, primary key(id) ); create table block_html ( `id` int unsigned auto_increment, `type` varchar(32) not null, `contents` TEXT not null, primary key(id) ); create table block_image ( `id` int unsigned auto_increment, `type` varchar(32) not null, `url` varchar(255) not null, primary key(id) );
如您所見,不同類型之間的塊數據略有不同,我不確定如何設計關係。顯然,擁有一個簡單的參考表是行不通的。
create table document_block ( `document_id` int unsigned, `block_id` int unsigned, // foreign key?? );
這個問題有什麼好的解決方案?
這是您的業務流程嗎?
那一定是
文件表:
create table document ( `id` int unsigned auto_increment, `title` varchar(128) not null, primary key(id) );
塊表
create table block ( `id` int unsigned auto_increment, `id_document` int // foreign key to document primary key(id) );
block_html(與塊表的一對一關係)
create table block_html ( `id` int unsigned auto_increment, // foreign key to block table and make it primary `type` varchar(32) not null, `contents` TEXT not null, primary key(id) );
塊圖像(與塊表的一對一關係)
create table block_image ( `id` int unsigned auto_increment,// foreign key to block table and make it primary `type` varchar(32) not null, `url` varchar(255) not null, primary key(id) );