/* SET FOREIGN_KEY_CHECKS = 0; DROP TABLE IF EXISTS `product`; DROP TABLE IF EXISTS `pkg`; DROP TABLE IF EXISTS `file`; DROP TABLE IF EXISTS `product_and_pkg`; SET FOREIGN_KEY_CHECKS = 1; ON DELETE 和 ON UPDATE,表示当发生delete和update时,会发生什么行为 NO ACTION:默认的,表示没有什么行为. RESTRICT:当有一个child关联到parent时,禁止delete或update parent SET NULL:当parent被delete或update时,child的的关联字段被置为null(如果字段有not null,就出错) SET DEFAULT:类似于SET NULL (是不是设置默认值?没有试过) CASCADE:将实施在parent上的删除或更新操作,传播给你吧与之关联的child上. 对于 ON DELETE CASCADE, 同被删除的父表中的行 相关联的子表中的每1行,也会被删除. 对于ON UPDATE CASCADE, 存储在子表中的每1行,对应的字段的值会被自动修改成同新的父键匹配 DEFAULT 约束在 INSERT INTO 语句没有提供一个特定的值时,为列提供一个默认值。 FOREIGN KEY (`product_id`) REFERENCES product(`product_id`) ON DELETE CASCADE ON UPDATE CASCADE, FOREIGN KEY (`pkg_id`) REFERENCES pkg(`pkg_id`) ON DELETE CASCADE ON UPDATE CASCADE CREATE TABLE `pkg_and_file` ( `paf_id` INTEGER NOT NULL, `pkg_id` INTEGER NOT NULL, `file_id` INTEGER NOT NULL, PRIMARY KEY (`paf_id`) ); */ CREATE TABLE `product` ( `product_id` SMALLINT NOT NULL, `product_name` TEXT(255) NOT NULL, `product_version` CHAR(255) NOT NULL, `product_md5` CHAR(32) NOT NULL, `product_issue` CHAR NOT NULL, PRIMARY KEY (`product_id`) ); CREATE TABLE `pkg` ( `pkg_id` INTEGER NOT NULL, `pkg_name` CHAR(255) NOT NULL, `pkg_version` CHAR(255) NOT NULL, `pkg_md5` CHAR(32) NOT NULL, PRIMARY KEY (`pkg_id`) ); CREATE TABLE `file` ( `file_id` INTEGER NOT NULL, `file_name` char(255) NOT NULL, `pkg_id` INTEGER NOT NULL, `file_pathname` CHAR(4096) NOT NULL, `file_md5` CHAR(32) DEFAULT " ", `file_type` CHAR NOT NULL, `file_owner` CHAR NOT NULL, `file_genus` CHAR NOT NULL, `file_permis` INTEGER NOT NULL, `file_size` INTEGER NOT NULL, `file_acl` CHAR DEFAULT " ", `file_capable` CHAR DEFAULT " ", `file_level` INTEGER DEFAULT 0, `file_mac` CHAR DEFAULT " ", PRIMARY KEY (`file_id`) ); CREATE TABLE `product_and_pkg` ( `pap_id` INTEGER NOT NULL, `product_id` SMALLINT NOT NULL, `pkg_id` INTEGER NOT NULL, PRIMARY KEY (`pap_id`) ); CREATE TABLE `pkg_and_file` ( `paf_id` INTEGER NOT NULL, `pkg_id` INTEGER NOT NULL, `file_id` INTEGER NOT NULL, PRIMARY KEY (`paf_id`) );