Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 用于翻译的数据库模式_Sql_Sqlite - Fatal编程技术网

Sql 用于翻译的数据库模式

Sql 用于翻译的数据库模式,sql,sqlite,Sql,Sqlite,在我的一个应用程序中,我需要将翻译保存到数据库中。其中每一个都由三个参数标识。代码、语言和文本类型。我的第一个想法是通过以下方式将它们全部保存到一个表中: "CREATE TABLE IF NOT EXISTS translations("\ "code INT NOT NULL,"\ "language char(3) NOT NULL,"\ "type char(20) NOT NULL,"\ "text Text,"\ "PRIMARY KEY(code,languag

在我的一个应用程序中,我需要将翻译保存到数据库中。其中每一个都由三个参数标识。代码、语言和文本类型。我的第一个想法是通过以下方式将它们全部保存到一个表中:

"CREATE TABLE IF NOT EXISTS translations("\
  "code INT NOT NULL,"\
  "language char(3) NOT NULL,"\
  "type char(20) NOT NULL,"\
  "text Text,"\
  "PRIMARY KEY(code,language,type)) WITHOUT ROWID;";
这使得查询非常容易使用:

"SELECT text FROM translations WHERE code=? AND language=? AND type=? LIMIT 1;"
然而,由于我以前没有使用数据库,我不太确定是否有更好的方法来实现这一点。(我特别不确定拥有多个主键是否是件好事)。
将其拆分为多个表是否有意义

我建议保留主键。在SQLite中:

CREATE TABLE IF NOT EXISTS translations (
    translation_id int auto_increment,  -- becomes a synonym for rowid
    code INT NOT NULL,
    language char(3) NOT NULL,
    type char(20) NOT NULL,
    text Text,
    UNIQUE (code, language, type)
);

要删除特定行时,主键很方便。使用自动递增还可以查看添加内容的顺序(尽管我也会添加
createdAt
timestamp)。

我建议保留主键。在SQLite中:

CREATE TABLE IF NOT EXISTS translations (
    translation_id int auto_increment,  -- becomes a synonym for rowid
    code INT NOT NULL,
    language char(3) NOT NULL,
    type char(20) NOT NULL,
    text Text,
    UNIQUE (code, language, type)
);

要删除特定行时,主键很方便。使用自动增量也可以看到添加的顺序(虽然我也会添加一个<代码> CueDATA< /code >时间戳).< /P>这和C++有什么关系?这和C++有什么关系?为什么我不能只使用代码“>代码中的地球删除?”语言=?和类型=?我真的不明白使用自动递增翻译的好处_id@maxbachmann . . . 你可以做到。如果你有一个整数主键,你可以这样做。我只是发现使用唯一的标识列比使用多个列更容易。为什么我不能使用
DELETE FROM translations WHERE code=?语言=?和类型=?我真的不明白使用自动递增翻译的好处_id@maxbachmann . . . 你可以做到。如果你有一个整数主键,你可以这样做。我只是发现使用唯一的标识列比使用多个列更容易。