簡體   English   中英

列中的Sqlite3商店列表

[英]Sqlite3 store list in column

我有一些數據需要存儲在 sqlite 數據庫中,如下所示

[
   [user1,[python,java,javascript],21],
   [user2,[csharp,python,c,java,php,sql],18],
   [user3,[],52]
   [user4,[python],73]
]

如何在 sqlite3 中存儲每個用戶的編程語言列表

標准的解決方案是為每件事都有一個表:用戶、語言和保存一對多關系的表,在這種情況下是 users_languages。 用戶和語言是相對較大且大小可變的密鑰,因此引入人工密鑰通常是 integer auto_increment 的非常常見的優化。

create table languages (
   language text primary key
);

insert into languages values ('python'), ('java'), ('javascript'), ('csharp'), ('c'), ('php'), ('sql');

create table users (
   user text primary key,
   age tinyint not null
);

insert into users values ('user1', 21), ('user2', 18), ('user3', 52), ('user4', 73);    

create table users_languages (
  user text not null,
  language text not null,
  foreign key (user) references users (user),
  foreign key (language) references languages (language),
  unique(user, language)
);

insert into users_languages values ('user1', 'python'), ('user1', 'java'), ('user1', 'javascript');
 ...
 
 -- list of languages for a given user (row per language)
 select language from users_languages where user = '...';

 -- list of languages for all users (row per user)
 select user, group_concat(langauge) from users_langauges group by 1;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM