java - 如何创建属于一个用户 SQL 的许可证值

标签 java mysql sql swing

我有一个与 MySQL 交互的 java swing 应用程序,我希望能够创建允许用户使用该应用程序的许可证 key ,用户只能拥有一个许可证号,这是我目前在 SQL 中拥有的.

CREATE TABLE User (
    id INT AUTO_INCREMENT NOT NULL,
    License VARCHAR(100) NOT NULL,
    PRIMARY KEY(id)
);

CREATE TABLE Address (
    id INT AUTO_INCREMENT NOT NULL,
    LicenseNumber VARCHAR(255) NOT NULL,
    FOREIGN KEY (LicenseNumber) REFERENCES User(id),
    PRIMARY KEY(id)
 );

这是正确的解决方案吗?还有什么是用 SQL 生成实际许可证号的好方法?

这是我对问题的解答: 这是 SQL:

CREATE TABLE User(
   id int NOT NULL auto_increment primary key,
   LicenseID VARCHAR(100) NULL,
   CONSTRAINT fk_license_number FOREIGN KEY (LicenseID) REFERENCES License(LicenseNumber)
 );

CREATE TABLE License(
   id INT AUTO_INCREMENT NOT NULL,
   LicenseNumber VARCHAR(100) NOT NULL UNIQUE,
   PRIMARY KEY (ID)
);

对于 LicenseNumber,我继续在我的 java 代码中使用 sha1 Java String to SHA1

最佳答案

您应该使用许可证 ID 作为外键而不是许可证号。因此模式应该看起来像

CREATE TABLE License
(
  id INT AUTO_INCREMENT NOT NULL PRIMARY KEY,
  LicenseNumber VARCHAR(40) NOT NULL UNIQUE
);
CREATE TABLE User
(
  id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
  LicenseID INT, 
  CONSTRAINT fk_license_number FOREIGN KEY (LicenseID) REFERENCES License(id)
);

如果需要,您可以使用 SHA1() 在数据库端生成 SHA1功能。例如:

INSERT INTO License (LicenseNumber) VALUES (SHA1('Lisence1'));

这是 SQLFiddle 演示

关于java - 如何创建属于一个用户 SQL 的许可证值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19895796/

相关文章:

java - SQL "missing in or out parameter at index"

php - 如何用php和mysql制作全文搜索引擎?

java - 在 java 中加载 c++ library.so 会引发错误 : undefined symbol: XOpenDisplay

java - SMTP 测量和评估

java - 从数组列表动态创建复选框java

php - 如果执行 mysql 更新语句则返回 true,如果没有更新行则返回 false

mysql - sql循环更新数据

sql - 使用 codeigniter 和 ajax 检查数据库中是否存在用户名

php - 帮助查询

mysql - mysql 事务期间锁定表