我正在学习SQL,我试图在表中保存用户感兴趣的标记列表(通常是字符串),最好的方法是什么?是否应将所有标记保存为新表中的主键?他们是否应该有他们的on主键,而我需要比较标记,看看它是否已经存在?我完全不知道什么是最好的解决办法。
应该类似于:
}
Name: "John",
interests: ['Cars', 'Motorbike', 'Programming']
}
我推荐三个表格:
create table users (
user_id int auto_increment primary key,
name varchar(255),
. . .
);
create table interests (
interest_id int auto_increment primary key,
interest varchar(255),
. . .
);
create table user_interests (
user_interest_id int auto_increment primary key,
user_id int not null,
interest_id int not null,
foreign key (person_id) references users(user_id),
foreign key (interest_id) references interests(interest_id),
unique (user_id, interest_id)
);
。..
用于有关相应实体的附加列。
为什么要为兴趣
单独设置一个表?因为你想确定人们指的是同一件事。你不会希望一个人写“编程”而另一个人用“coding”来表示相同的意思。
正如@dfundako在评论中所说,这是一个多对多关系的例子。在您的情况下,一个用户可能有多个标签,而一个标签可能属于多个用户。
建模的常用方法是交集表。
Users
-------
User_id (pk)
name
...
Tags
-----
tag_id (pk)
tag_content
user_tags
---------
user_id
tag_id
使用标记内容作为主键通常不是一个好主意--主键应该是唯一的和不可变的。如果有人想要更改标签名称,例如,因为一个错别字,会发生什么?因此,上面示例中的_id列将是人工键。
Java MySQL数据库我正在做一个项目,将一个路径名为“C:\Desktop\”的字符串保存到数据库中。我已经创建了一个实体类来将此路径名更新到数据库中,在javaeclipse中,当我运行程序时,它会显示路径以这种格式存储在数据库中,即“C:\Desktop\”,但在该路径的数据库列中,它只存储“C:Desktop”,没有“\”
我有一个通过ORM保存到数据库的对象。对象有一个字符串数组,每个对象的数组长度可以不同。我想知道在db中存储字符串数组的标准做法(例如,我是否应该将所有字符串存储在一个字段中作为csv等)?
问题内容: 我有一个领域的文档表,,并包含像字符串值 U12,U13,U14,现在我当前登录的用户,我想在其中找到的所有记录包含了我的手段我就是。现在如何编写查询以获取记录。 我的查询是: 但我在“ where子句”中收到错误未知列“ U13” 问题答案: 您的字符串连接混乱了,应该是:( 进一步简化了 ) 当上面的语句被解析后,它将看起来像这样: 作为一个旁注,查询是脆弱的,如果值( 小号 变量
我通过在JTextField中获取用户的输入创建了一个JList。然后,我将jList转换为String,将jList保存到Mysql数据库,因为我希望将jList项保存在单行中作为单个条目。 向JList添加用户输入的代码: 但是在使用此代码时,Jtable并不显示任何值,尽管它使用表头名称。请任何人可以检查我正确在如何搜索中保存在MySQL数据库的字符串。我认为问题是存在的,因为其他事情都很好
我不能使用将字符串数组保存到我的数据库中。 (请注意,为了便于编写,下面的所有代码都被简化了) 因此,我声明了person模式的一个变量: 模式本身看起来像: 说到储蓄,它只是一个简单的问题: 所以使用邮递员,我在体内发送一个数组-然而每次我检查数据库,它只是显示一个条目与数组作为一个整体,即我如何发送它: 你知道我应该多做些什么吗?
我必须创建以下程序: 创建一个允许您键入名称的程序。用户键入并提交(使用enter键)的名称应存储在arraylist中。然后,arraylist中的名称应打印在屏幕上。 我的问题是,我只能在我的数组列表中存储一个名字。 我的代码: 第一个问题是,在键入一个名称并提交后,您不能键入任何内容,因此我必须重置输入,如使用整数值: