我有下表将存储文件(图像、PDF 等)
CREATE TABLE `tbl_file` (
`id` INT(10),
`size` FLOAT,
`name` VARCHAR(45),
`type` VARCHAR(16),
`content` BLOB,
`date_time` TIMESTAMP,
PRIMARY KEY (`id`)
)
有许多表将包含文件(tbl_order & tbl_payment),我只想使用一个表来存储文件(tbl_file)。但是,某些表的每一行可能有多个文件。
例如,一个订单(发票、采购订单、提单、合同)有多个文件,每次付款可能有多个文件等。
所以我为每个可能有多个文件的表制作了以下联结表(我没有包括外键代码)。
CREATE TABLE `tbl_order_file` (
`order_id` INT(10),
`file_id` INT(10),
PRIMARY KEY (`order_id`, `file_id`),
)
和
CREATE TABLE `tbl_payment_file` (
`payment_id` INT(10),
`file_id` INT(10),
PRIMARY KEY (`payment_id`, `file_id`),
)
这里的问题是一个文件可以与两个表相关。也许这是一个优势而不是一个问题,但我想知道是否有更好的方法来做到这一点,或者找到一种方法来限制文件,以便它只在一个表中引用。
我正在使用带有 innodb 引擎的 MySQL。