为用户配置文件管理创建视图

时间:2014-11-03 00:15:45

标签: sql sqlite

我有以下用户档案管理架构,

CREATE TABLE IF NOT EXISTS users 
  ( 
     userid     TEXT NOT NULL, 
     name       TEXT NULL, 
     lmessage   INTEGER NULL, 
     statusid   INTEGER NULL,  
     /* statusid should refer to last status of the user in status table*/
     locationid INTEGER NULL,  
     /* locationid should refer to last status of the user in locations table */
     registered INTEGER NOT NULL, 
     tinypic    INTEGER NULL 
     /* this refers to media id in media table */, 
     largepic   INTEGER NULL 
     /* this also refers to media id in media table */,
     groupid    INTEGER NULL 
     /* this refers to id in groups table */ ,
     PRIMARY KEY (userid) 
  ); 

CREATE TABLE IF NOT EXISTS locations 
  ( 
     serial INTEGER,
     locationid TEXT NOT NULL, 
     userid TEXT NOT NULL,
     time     INTEGER NULL,
     PRIMARY KEY (serial) 
  );  

CREATE TABLE IF NOT EXISTS status 
  (
     serial INTEGER,
     userid TEXT NULL,
     message  TEXT NOT NULL, 
     time     INTEGER NULL,
     PRIMARY KEY (serial) 
  ); 

CREATE TABLE IF NOT EXISTS messages 
  ( 
     sno       INTEGER, 
     messageid INTEGER NOT NULL, 
     sender    TEXT NOT NULL, 
     receiver  TEXT NOT NULL, 
     time      INTEGER NULL, 
     message   TEXT NULL, 
     image     INTEGER NULL, 
     video     INTEGER NULL, 
     audio     INTEGER NULL, 
     PRIMARY KEY (sno) 
  ); 

CREATE TABLE IF NOT EXISTS media 
  ( 
     mediaid    TEXT NOT NULL UNIQUE, 
     url        TEXT NULL, 
     downloaded INTEGER NULL, 
     thumbnail  TEXT NULL, 
     PRIMARY KEY (mediaid) 
  ); 

CREATE TABLE IF NOT EXISTS groups 
  (
     serial INTEGER,
     name TEXT NOT NULL,
     id INTEGER NOT NULL
     PRIMARY KEY(serial)
  );


CREATE UNIQUE INDEX IF NOT EXISTS id_unique ON users (userid ASC); 

CREATE UNIQUE INDEX IF NOT EXISTS serial_unique ON status (serial ASC); 

CREATE UNIQUE INDEX IF NOT EXISTS id_unique ON messages (sno ASC); 

CREATE UNIQUE INDEX IF NOT EXISTS serial_unique ON patterns (serial DESC); 

CREATE UNIQUE INDEX IF NOT EXISTS mediaid_unique ON media (mediaid ASC); 

如何在用户表上创建视图以根据过滤条件获取用户列表。请建议我架构设计不好。

我想在此架构中添加的视图示例:

  1. 选择属于组的所有用户以及在该组之后创建的所有组。
  2. 选择包含最后一条消息,状态,位置和媒体网址的所有用户。
  3. 感谢。

    请注意我是SQL nube,如果您觉得这是不成熟的问题,请原谅我。我只需要,我想从其他人的评论中学习。

1 个答案:

答案 0 :(得分:0)

表示1 - 您需要在组表中设置时间戳(通过UTC滴答的INTEGER ID) - 它缺少

for 2 - 你可以用join

来做 除非你有某些具体原因,否则我认为你不需要有视图。您可以选择带有连接的查询来获取所需的数据。

我建议您使用http://www.sqliteexpert.com/download.html - 尝试在那里创建架构并在进入android实现它之前尝试所有查询