订单计量时多对多关系

时间:2018-08-08 08:12:13

标签: sql sqlite many-to-many android-sqlite sql-order-by

我与用户和组之间有很多关系:组可能包含很少的用户,并且由多个组组成。 服务器将这样的json发送给我,我需要将其存储到DB:

SELECT * FROM user WHERE id IN (:user_ids)

问题是:用户在组事务中的顺序-用户的显示顺序应与服务器json中的显示顺序相同。 我使用的拳头解决方案是添加到组字段中 homework = forms.FloatField(required=False, widget=forms.TextInput( attrs={'type': 'number','id':'form_homework','min': '0','max':'10','step':'0.01'})) 并将其从atat存储到json中的DB中,但是在此解决方案中我看到2个问题:

  1. 它与第一范式(1NF)相矛盾
  2. 当我选择值时,它们的顺序错误:

Map<String, String>

如何将其存储到DB和SELECT中?

2 个答案:

答案 0 :(得分:1)

在SQL中,表行确实是无序的;获得有序行的唯一保证方法是使用ORDER BY。

如果数组元素的顺序很重要,请为数组索引添加一列。

答案 1 :(得分:0)

您可以使用以下架构:

CREATE TABLE user(id integer primary key, name text);
CREATE TABLE grp(id integer primary key, name text);
CREATE TABLE usergrp(userid integer, grpid integer, position integer);
CREATE INDEX positionindex on usergrp(grpid, position);

然后您可以通过查询检索属于某个组的用户

SELECT userid FROM usergrp WHERE grpid=? ORDER BY position;

此外,也许您想为usergrp使用"without rowid" sqlite表存储选项。