mysql - 初学者 - 如何将信息放入表中 - 创建表

标签 mysql sql database-design create-table

我必须创建一个数据库,但我已经陷入困境。我想创建一个数据库,其中有 5 个表。用户、投诉、元素丢失、通缉和被盗。

所以我想建立一个数据库,用户可以在其中放置他的信息,然后提出投诉。用户可以选择 3 个投诉主题:元素丢失、通缉或被盗。所以投诉之后,应该放在右表中。

我不确定如何将正确的信息放入正确的表中,我是 mySQL 新手..

这是我目前的数据库:

CREATE TABLE User (
    user_id INT NOT NULL AUTO_INCREMENT,
    name VARCHAR(15) NOT NULL,
    sexe VARCHAR(1) NOT NULL,
    age INT(3) NOT NULL,
    birthplace VARCHAR(50),
    phoneNumber VARCHAR(20) NOT NULL,
    email VARCHAR(50),
    PRIMARY KEY (user_id)
);

CREATE TABLE complaint (
    complaint_id INT NOT NULL AUTO_INCREMENT,
    user INT NOT NULL,
    complaint_sort VARCHAR(16),
    title VARCHAR(150),
    name VARCHAR(15),
    date_complaint,
    place VARCHAR(50) NOT NULL,
    description VARCHAR(2000) NOT NULL,
    PRIMARY KEY (complaint_id),
    FOREIGN KEY (user_id)
        REFERENCES Gebruiker (gebruiker_id)
);

CREATE TABLE missing (
    missing_id INT NOT NULL AUTO_INCREMENT,
    complaint_id INT,
    PRIMARY KEY (missing_id),
    FOREIGN KEY (complaint_id)
        REFERENCES Complaint (complaint_id)
);

CREATE TABLE wanted (
    wanted_id INT NOT NULL AUTO_INCREMENT,
    complaint_id INT,
    PRIMARY KEY (wanted_id),
    FOREIGN KEY (complaint_id)
        REFERENCES Complaint (complaint_id)
);

CREATE TABLE Stolen_objects (
    Stolen_objects_id INT NOT NULL AUTO_INCREMENT,
    complaint_id INT,
    PRIMARY KEY (stolen_objects_id),
    FOREIGN KEY (complaint_id)
        REFERENCES Complaint (complaint_id)
);

最佳答案

无需为投诉类型创建三个表 - 失踪、通缉、被盗对象。

无需创建三个表,只需在 complaint 表中为 complaintType 添加一个标志,使用 ENUM 作为数据类型,其值包括丢失、想要、被盗元素。

试试这个:

CREATE TABLE USER ( 
    user_id INT NOT NULL AUTO_INCREMENT, 
    NAME VARCHAR(15) NOT NULL, 
    sexe VARCHAR(1) NOT NULL, 
    age INT(3) NOT NULL, 
    birthplace VARCHAR(50), 
    phoneNumber VARCHAR(20) NOT NULL, 
    email VARCHAR(50), 
    PRIMARY KEY (user_id) 
); 

CREATE TABLE complaint ( 
    complaint_id INT NOT NULL AUTO_INCREMENT, 
    USER INT NOT NULL, 
    complaintType ENUM('Missing','Wanted','stolenObjects') NOT NULL, 
    complaint_sort VARCHAR(16), 
    title VARCHAR(150), 
    NAME VARCHAR(15), 
    date_complaint DATETIME, 
    place VARCHAR(50) NOT NULL, 
    description VARCHAR(2000) NOT NULL, 
    PRIMARY KEY (complaint_id), 
    FOREIGN KEY (user_id) REFERENCES USER (user_id) 
); 

关于mysql - 初学者 - 如何将信息放入表中 - 创建表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34558599/

相关文章:

sql - 在 Snowflake 的公用表表达式中使用 "match_recognize"

database-design - 物理数据模型表示是否有标准文件格式?

sql-server - 将每日数据添加到数据库的推荐方法

ruby-on-rails - 存储星期几和时间?

mysql - 如何禁用或规避 phpmyadmin 的 SQL_CALC_FOUND_ROWS

c# - LINQ - 如何将 distinct 与 order by 一起使用?

mysql - 将 SQL 查询导出到 JSON 格式的文本文件

sql - MYSQL多表join前N行

mysql - JOIN - 显示缺失的行但将它们附加到特定列

php - MySql 查询过去 90 天的 laravel 版本