Mysql

架構設計 - 引用不同表中略有不同的數據

  • July 30, 2014

我正在嘗試為 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)
);

引用自:https://dba.stackexchange.com/questions/72746