c++ - c++中的sqlite3创建语句和外键

标签 c++ sql sqlite

我正在用 C++ 尝试 sqlite3 创建语句和外键,我提出了 4 个要求。

1) a employer can create a job position
2) a employer can view the form reject or shortlist the applicant for interview
3) a applicant may apply for a job position
4) a applicant must fill up their details and submit the form if they are keen to apply for a position

这是我写的

雇主表

/*SQL statement for employer table*/
 char *sql;
 sql = "CREATE TABLE EMPLOYER("  \
     "ID INT PRIMARY KEY     NOT NULL," \
     "NAME           TEXT    NOT NULL," \
     "ROLE           TEXT    NOT NULL );";

职位表

/*SQL statement for jobposition table */
char *sql;
sql = "CREATE TABLE JOBPOSITION("  \
     "ID INT PRIMARY KEY     NOT NULL," \
     "JOBPOSITION    TEXT    NOT NULL," \
     "OUTCOME        TEXT    NOT NULL );";

表单表格

/*SQL statement for form table*/
char *sql;
sql = "CREATE TABLE FORM ("  \
      "ID INT PRIMARY KEY     NOT NULL," \
     "FOREIGN KEY (ID) REFERENCES APPLICANT(ID)",
     "FOREIGN KEY (ID) REFERENCES JOBPOSITION(ID)",
      FOREIGN KEY (ID) REFERENCES EMPLOYER(ID)" );";

申请人表

 /*SQL statement for applicant table*/
 char *sql;
 sql = "CREATE TABLE APPLICANT ("  \
     "ID INT PRIMARY KEY     NOT NULL," \
     "APPLICANT_NAME    TEXT    NOT NULL," \
     "APPLICANT_ADDRESS    TEXT    NOT NULL," );";

我不确定这是否正确,因为我刚开始学习数据库并需要一些帮助。

最佳答案

我不知道你所说的“正确”是什么意思,所以我将向你展示我将如何做到这一点:

CREATE TABLE users (
    id            INT     NOT NULL PRIMARY_KEY AUTO_INCREMENT,
    name          TEXT    NOT NULL,
    address       TEXT    NOT NULL,
    role          TEXT    NOT NULL,    /* employer, applicant etc. */
);

CREATE TABLE job_positions (
    id             INT    NOT NULL PRIMARY_KEY AUTO_INCREMENT,
    creator_id     INT    NOT NULL FOREIGN_KEY REFERENCES users(id),
    description    TEXT   NOT NULL,
    outcome        TEXT   NOT NULL,
);

CREATE TABLE forms (
    id            INT    NOT NULL PRIMARY_KEY AUTO_INCREMENT,
    position_id   INT    NOT NULL FOREIGN_KEY REFERENCES job_positions(id)
    creator_id    INT    NOT NULL FOREIGN_KEY REFERENCES users(id)  
);

这样用户与job_positions和forms就有了1-N的关系;和 job_positions 与表单具有 1-N 关系。也就是说,job_positions属于用户;和表单属于用户和职位。

关于c++ - c++中的sqlite3创建语句和外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21226267/

相关文章:

Android Sqlite 获取最后插入的行 id

c++ - 如何模拟左手法则?

mysql - 从另一个表中选择值

sql - Rails、ActiveRecord 和子查询

sql - sqlite:使用复合选择查询其他列

android - 数据未插入到 android 中的 Sqlite 数据库中

php - 如何查询简单机械论坛的主题流行度/评级

C++11 线程 boost 容器

java - JNI C++ 到 Java 32 位图像无法正确显示

sql - 检查存储过程是否有效