Files
SIC/code/datalib/fileinfo.sql
2023-02-28 09:33:09 +08:00

81 lines
2.6 KiB
SQL

/*
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`)
);