我对数据库概念非常陌生,目前正在学习如何设计数据库。我有一个包含以下列的表格...
这是在mysql中:
1. Names - text - unique but might change in future
2. Result - varchar - not unique
3. issues_id - int - not unique
4. comments - text - not unique
5. level - varchar - not unique
6. functionality - varchar - not unique
我不能选择上述任何列作为主键,因为它们将来可能会改变。所以我创建了一个自动增量 id 作为 names_id。我还有一个 GUI(一个 JTable),它显示这个表和用户更新 Result、issues_id 和基于 Names.Names 的评论这里是一个大文本列。我无法在 GUI 中显示 names_id,因为它在 GUI 中没有任何意义。现在,当用户在 GUI 中为 column2、3、4 提供输入后更新数据库时,我使用以下查询更新数据库,我无法在 where 子句中使用 names_id,因为 Jtable 的 row_id 与 names_id 不匹配,因为并非所有行被加载到 JTable 上。
update <tablename> set Result=<value>,issues_id=<value>,comments=<value>
where Names=<value>;
我可以更新数据库,但我想知道是否可以在不使用 PK 的情况下更新数据库。这效率如何?代理键在这里有什么作用?