/* Navicat Premium Dump SQL Source Server : hotel Source Server Type : MySQL Source Server Version : 50729 (5.7.29-log) Source Host : localhost:3306 Source Schema : hotel Target Server Type : MySQL Target Server Version : 50729 (5.7.29-log) File Encoding : 65001 Date: 07/05/2025 12:31:04 */ SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS = 0; -- ---------------------------- -- Table structure for attribute -- ---------------------------- DROP TABLE IF EXISTS `attribute`; CREATE TABLE `attribute` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '属性ID', `attributeName` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '属性名称', PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 18 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC; -- ---------------------------- -- Table structure for attributedetails -- ---------------------------- DROP TABLE IF EXISTS `attributedetails`; CREATE TABLE `attributedetails` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '属性明细ID', `attributeID` int(11) NULL DEFAULT NULL COMMENT '属性ID', `attributeDetailsName` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '属性明细名称', PRIMARY KEY (`id`) USING BTREE, INDEX `attributeID`(`attributeID`) USING BTREE, CONSTRAINT `attributedetails_ibfk_1` FOREIGN KEY (`attributeID`) REFERENCES `attribute` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT ) ENGINE = InnoDB AUTO_INCREMENT = 78 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC; -- ---------------------------- -- Table structure for commodity -- ---------------------------- DROP TABLE IF EXISTS `commodity`; CREATE TABLE `commodity` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '商品ID', `commodityTypeID` int(11) NULL DEFAULT NULL COMMENT '商品类别ID', `uOMID` int(11) NULL DEFAULT NULL COMMENT '计量单位ID', `commodityName` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci N
时间: 2025-05-25 22:15:18 浏览: 12
### MySQL 数据库中表结构的定义和关系
在 MySQL 中,表结构通常由列(字段)、数据类型、约束条件以及索引组成。通过 `INFORMATION_SCHEMA.COLUMNS` 表可以查询特定数据库中的表结构及其属性[^3]。
以下是针对 `attribute`, `attributedetails`, 和 `commodity` 这三个表的关系分析:
#### 查询表结构
可以通过以下 SQL 语句获取指定表的结构信息:
```sql
SELECT
COLUMN_NAME AS 列名,
DATA_TYPE AS 字段类型,
CHARACTER_MAXIMUM_LENGTH AS 长度,
IS_NULLABLE AS 是否为空,
IF(COLUMN_KEY = 'PRI', 'Y', '') AS 是否为主键,
COLUMN_DEFAULT AS 默认值,
COLUMN_COMMENT AS 备注
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = '数据库名'
AND (TABLE_NAME = 'attribute' OR TABLE_NAME = 'attributedetails' OR TABLE_NAME = 'commodity');
```
该查询返回的结果可以帮助理解每张表的具体字段定义及用途。
---
#### 定义表之间的关系
假设三张表存在某种关联,则可以根据业务逻辑设计外键或其他约束来表示它们之间的联系。例如:
1. **`attribute` 表**
- 假设用于存储商品的特性名称。
- 结构可能如下:
```sql
CREATE TABLE attribute (
id INT PRIMARY KEY AUTO_INCREMENT COMMENT '主键ID',
name VARCHAR(255) NOT NULL COMMENT '属性名称',
description TEXT COMMENT '描述'
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
```
2. **`attributedetails` 表**
- 存储具体特性的取值范围或选项。
- 可能包含对外键 `attribute.id` 的引用。
- 结构示例:
```sql
CREATE TABLE attributedetails (
id INT PRIMARY KEY AUTO_INCREMENT COMMENT '主键ID',
attribute_id INT NOT NULL COMMENT '对应属性ID',
value VARCHAR(255) NOT NULL COMMENT '属性值',
FOREIGN KEY (attribute_id) REFERENCES attribute(id)
ON DELETE CASCADE
ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
```
3. **`commodity` 表**
- 记录商品基本信息,并与 `attribute` 或 `attributedetails` 形成关联。
- 示例结构:
```sql
CREATE TABLE commodity (
id INT PRIMARY KEY AUTO_INCREMENT COMMENT '商品ID',
name VARCHAR(255) NOT NULL COMMENT '商品名称',
price DECIMAL(10, 2) NOT NULL COMMENT '价格',
attribute_id INT COMMENT '对应的属性ID',
FOREIGN KEY (attribute_id) REFERENCES attribute(id)
ON DELETE SET NULL
ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
```
---
#### 使用 Navicat Premium 导出表结构
Navicat 提供了方便的功能来查看和导出表结构。操作方法如下:
1. 打开目标数据库并选中相关表格。
2. 在右键菜单中选择 “Export to File” -> “Structure Only”,保存为 `.sql` 文件。
3. 如果需要进一步处理为 Excel 格式,可运行前述 SQL 脚本并将结果复制粘贴至电子表格软件。
---
### 总结
以上展示了如何利用 SQL 查看表结构以及如何通过建模实现多个表间的相互依赖关系。实际应用时需依据具体的业务需求调整字段定义和约束规则[^3]。
阅读全文
相关推荐

















