我正在设计两个模型之间的多对多关系:Cell
和Isolator
:
CREATE TABLE `isolator` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`name` varchar(127) NOT NULL,
`surname` varchar(127) NOT NULL,
PRIMARY KEY (`id`),
);
CREATE TABLE `cell` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`name` varchar(127) NOT NULL,
`gen` varchar(127) NOT NULL,
PRIMARY KEY (`id`),
);
CREATE TABLE `cell_isolators` (
`cell_id` bigint(20) NOT NULL DEFAULT '0',
`isolator_id` bigint(20) NOT NULL DEFAULT '0',
PRIMARY KEY (`cell_id`,`isolator_id`),
CONSTRAINT `cell_isolator_id` FOREIGN KEY (`isolator_id`) REFERENCES `isolator` (`id`),
CONSTRAINT `isolator_cell_id` FOREIGN KEY (`cell_id`) REFERENCES `cell` (`id`) ON DELETE CASCADE
);
客户问我是否有可能指定显示单元隔离器列表的顺序,因为它对于发布目的很重要。
建模的最佳方法是什么?我正在考虑在多对多关系中添加第三个字段(例如sort_order
),但我想知道是否还有其他选择。
谢谢!
答案 0 :(得分:1)
在一般情况下,唯一的方法是向“cell_isolators”添加一列。
数据类型在某种程度上取决于应用程序。我已经看到这个用列作为整数,浮点数或小数,以及字母数字(varchar(n))。
但是,填充和维护它可能很麻烦。这与数据库设计没有任何关系;维护多行的排序顺序是很痛苦的,特别是如果对表进行常规插入并更改排序顺序。幸运的是,该作业通常属于用户界面,而不属于dbms。