Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.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
改进MySQL数据库设计_Mysql_Sql_Sqlite - Fatal编程技术网

改进MySQL数据库设计

改进MySQL数据库设计,mysql,sql,sqlite,Mysql,Sql,Sqlite,关于如何设计SQLITE3数据库,我有两个问题。我使用数据库的方式如下: 我有一个形容词或者任何一个词,我需要把这个词分解成名词形式。幸运的是,我需要把这个词分解成happya名词&它的一般形式。对于饥饿的人,我需要把它解决为饥饿 问题1:我的大多数SQL查询都会涉及我在名词表中搜索特定的wordrow。哪种SQL表设计最适合我的需要&在搜索/查找速度方面效率更高 问题2:如果每行都有一个唯一的整数ID,当我添加新行时,我需要找到另一行尚未使用的唯一整数ID。在我的例子中,每一行都有一个按升序排

关于如何设计SQLITE3数据库,我有两个问题。我使用数据库的方式如下:

我有一个形容词或者任何一个词,我需要把这个词分解成名词形式。幸运的是,我需要把这个词分解成happya名词&它的一般形式。对于饥饿的人,我需要把它解决为饥饿

问题1:我的大多数SQL查询都会涉及我在名词表中搜索特定的wordrow。哪种SQL表设计最适合我的需要&在搜索/查找速度方面效率更高

问题2:如果每行都有一个唯一的整数ID,当我添加新行时,我需要找到另一行尚未使用的唯一整数ID。在我的例子中,每一行都有一个按升序排列的id,因此对于第1行,id=2,对于第2行=2…第n行=n

在过去,要添加一行,我首先找到最大的唯一ID,然后向其中添加1,然后创建新行。但我曾经听说有一个SQL变量,我想叫做autonumber,它会自动完成这个任务,是真的吗?即,它将自动递增。那么我应该使用它,还是建议我坚持将id作为整数

CREATE TABLE NounTable (u_id int PRIMARY KEY, u_word varchar, u_noun varchar);
// Or shd I do this...
CREATE TABLE NounTable (u_id autonumber PRIMARY KEY, u_word varchar, u_noun varchar);

PS:MYSQL和SQLite之间有什么区别吗?也许不同的变量?或者,它们在数据库中存储和查找信息的方式上唯一的区别是什么?

在性能方面,如果您在第一个备选方案中为u_单词编制索引,则不会有太大区别。这主要取决于您有哪些其他表格,以及您是要表示成对的单词,还是要表示一个单词及其名词

如果您没有任何特定的理由增加您的ID,您应该使用自动编号。如果手动将密钥增加一,则在自动编号处理IIRC时,您始终会面临竞争条件和碰撞的风险

CREATE TABLE NounTable (u_id int PRIMARY KEY, u_word varchar, u_noun varchar);
// Or shd I do this...
CREATE TABLE NounTable (u_id autonumber PRIMARY KEY, u_word varchar, u_noun varchar);