CREATE TABLE category ( category_id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50) NOT NULL, status ENUM ('0', '1') NOT NULL DEFAULT '1', create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP );
时间: 2024-02-15 16:29:09 浏览: 146
这个表的设计也很简单和合理,一些小小的建议:
- 建议将分类的状态改为tinyint类型,因为tinyint类型只占用1个字节,而enum类型占用的空间会更大一些。
- 如果你希望分类的名称不区分大小写,在创建表时可以将名称的定义改为VARCHAR(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin,这样就可以使用二进制比较,而不是默认的不区分大小写的比较方式。
其他方面,这个表的设计看起来很好。
相关问题
CREATE TABLE address ( address_id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, user_id INT, name VARCHAR(50) NOT NULL, phone VARCHAR(20) NOT NULL, province VARCHAR(50) NOT NULL, city VARCHAR(50) NOT NULL, district VARCHAR(50) NOT NULL, detail VARCHAR(100) NOT NULL, is_default ENUM ('0', '1') NOT NULL DEFAULT '1', FOREIGN KEY (user_id) REFERENCES user (user_id) );
这个表的设计看起来很好,基本上覆盖了用户的收货地址信息。以下是一些建议:
- 如果你希望是否为默认地址不区分大小写,在创建表时可以将它的定义改为tinyint类型,然后使用CHECK约束来限制只能输入0或1。例如:is_default TINYINT NOT NULL DEFAULT 1 CHECK (is_default IN (0,1))。
- 如果你希望收货人姓名、手机号码、省份、城市和区县不区分大小写,在创建表时可以将它们的定义改为VARCHAR(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin,这样就可以使用二进制比较,而不是默认的不区分大小写的比较方式。
其他方面,这个表的设计看起来很合理。
CREATE TABLE item ( item_id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, user_id INT, category_id INT, title VARCHAR(100) NOT NULL, description VARCHAR(500), price DECIMAL(10, 2) NOT NULL, image VARCHAR(100), count INT NOT NULL, status ENUM ('0', '1') NOT NULL DEFAULT '1', is_deleted ENUM ('0', '1') NOT NULL DEFAULT '0', create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, FOREIGN KEY (user_id) REFERENCES user (user_id), FOREIGN KEY (category_id) REFERENCES category (category_id) );
这个表的设计看起来很好,基本上覆盖了商品的基本信息,包括商品标题、描述、价格、图片、库存等等。以下是一些建议:
- 如果你希望商品的状态和删除标记不区分大小写,在创建表时可以将它们的定义改为tinyint类型,然后使用CHECK约束来限制只能输入0或1。例如:status TINYINT NOT NULL DEFAULT 1 CHECK (status IN (0,1))。
- 建议将价格改为DECIMAL(10,2) UNSIGNED,因为商品价格不应该为负数。
- 如果你希望商品的标题、描述和图片路径不区分大小写,在创建表时可以将它们的定义改为VARCHAR(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin,这样就可以使用二进制比较,而不是默认的不区分大小写的比较方式。
其他方面,这个表的设计看起来很合理。
阅读全文