【问题标题】:Specify sorting criteria manually for a set of records of a many-to-many relationship为多对多关系的一组记录手动指定排序标准
【发布时间】:2011-12-24 12:53:19
【问题描述】:

我正在设计两个模型之间的多对多关系:CellIsolator

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),但我想知道是否还有其他选择。

谢谢!

【问题讨论】:

  • 这正是我建模它的方式,假设顺序特定于关系而不是 Isolator 本身。
  • @TomH。这就是来龙去脉。 Isolator 的完整列表将按(姓、名)排序,但关系有自己的标准

标签: sql database-design sorting many-to-many


【解决方案1】:

在一般情况下,唯一的方法是在“cell_isolators”中添加一列。

数据类型在一定程度上依赖于应用程序。我已经看到将列作为整数、浮点数或小数以及字母数字 (varchar(n)) 来完成。

不过,填充和维护它可能会很麻烦。这与数据库设计无关;维护多于几行的排序顺序很痛苦,尤其是在对表进行定期插入并更改排序顺序的情况下。幸运的是,这项工作通常属于用户界面,而不是 dbms。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-07-17
    • 1970-01-01
    • 1970-01-01
    • 2011-12-29
    • 1970-01-01
    • 2015-07-28
    相关资源
    最近更新 更多