Android 安卓SQLite';用户';表主键为';用户日志';主键
我正在为“用户”表使用自动递增主键。我的问题是,我可以使用相同的用户ID(主键)作为“用户日志”表的主键吗?我不应该这样做有什么主要原因吗 我对实施的想法: 要做到这一点,我会让用户创建一个条目(姓名、电子邮件通行证等),完成后,通过从“用户”表中获取密钥并将其作为外键传递到“用户日志”条目创建方法来创建“用户日志”?或者在这一点上它仍然被称为主键 一个简单的代码示例会很好。以下是我所拥有的:Android 安卓SQLite';用户';表主键为';用户日志';主键,android,sqlite,Android,Sqlite,我正在为“用户”表使用自动递增主键。我的问题是,我可以使用相同的用户ID(主键)作为“用户日志”表的主键吗?我不应该这样做有什么主要原因吗 我对实施的想法: 要做到这一点,我会让用户创建一个条目(姓名、电子邮件通行证等),完成后,通过从“用户”表中获取密钥并将其作为外键传递到“用户日志”条目创建方法来创建“用户日志”?或者在这一点上它仍然被称为主键 一个简单的代码示例会很好。以下是我所拥有的: // Create the table public void onCreate(SQLiteData
// Create the table
public void onCreate(SQLiteDatabase db) {
// SQL statement to create book table
String CREATE_USER_TABLE = "CREATE TABLE userLog ( " +
"userID INTEGER PRIMARY KEY, " +
"date TEXT )";
// create directory table
db.execSQL(CREATE_USERLOG_TABLE);
}
//Add entry to the table using value from user
public void addEntry(UserLogEntry entry, UserEntry userEntry){
Log.d("addEntry", entry.toString());
// 1. get reference to writable DB
SQLiteDatabase db = this.getWritableDatabase();
// 2. create ContentValues to add key "column"/value
ContentValues values = new ContentValues();
values.put(KEY_USERID, userEntry.getUserID());
values.put(KEY_DATE, entry.getDate());
// 3. insert
db.insert(TABLE_USERLOG, // table
null, //nullColumnHack
values); // key/value -> keys = column names/ values = column values
// 4. close
db.close();
}
因为CL指出了这一点,所以这是行不通的。我需要一个唯一的键,并将userid添加为一个新列。在创建userslog时,我将从users表中提取userid,这将解决这个问题
User
和userLog
表中的记录之间是否存在1:1的关系,或者每个用户可以有多个日志?每个用户可以有多个日志。谢谢你指出这一点。我没有想到这一点。好的扑救:)