单表父表与一个具有多对多关系的联结表是一个很好的设计?

时间:2014-09-09 11:05:57

标签: database many-to-many

以下设计是否可以解决任何问题? 我想为同一个表创建一个联结表。 “ON DELETE CASCADE”也应该有用。

"source table (combining 
archive,object,sharedobject,source as a single table )" 

FileListTable
    ------------------------------- 
    id  file_type_id filename       license details
    1    1            A:/aa/bb/cc.c  xxx
    2    2            A:/aa/bb/aa.cpp   yyy
    3    2             A:/aa/bb/bb.cpp  zzz
    4    2             A:/aa/bb/cc.cpp  ttt
    5    6             A:/aa/bb/cc.so  abc
    6    5             A:/aa/bb/cc.a  axy
    7    7             A:/aa/bb/cc.o  ass
    8    8             A:/aa/bb/cc.o  ass
    -----------------------------------------

文件类型表,文件扩展名为ids。

file type table 
-------------------
file_type_id    file_ext
1                .c
2                .cpp
3                .h
4                .sh
5                .a
6                .so
7                 binary_with_no_ext
8                 .o
---------------------------------

filelist_junction_table
------------------
file_id_1 file_id_2
5        6
5        7
5        8


.. so on
----------------

以下是上述联结表的查询。

CREATE TABLE `filelist_junction_table` (
  `file_id_1` int(11) NOT NULL,
  `file_id_2` int(11) NOT NULL,
  PRIMARY KEY (`file_id_1`,`file_id_2`),
  KEY `FK_file_id_idx` (`file_id_2`)
  CONSTRAINT `FK_file_id_1` FOREIGN KEY (`file_id_1`) REFERENCES `FileListTable` (`id`) ON DELETE CASCADE,
  CONSTRAINT `FK_file_id_2` FOREIGN KEY (`file_id_2`) REFERENCES `FileListTable` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;

0 个答案:

没有答案