本文我们深度探索我们的数据在Mysql中的组织方式
目录
我们在数据库中定义了近14张表,其中不同表之间多少存在一些相互关联。
数据库UML类图
定义表结构
以酒店表为例子,我们探索其定义的结构
CREATE TABLE `hotels` ( `hotel_id` varchar(50) NOT NULL, `hotel_name` varchar(255) DEFAULT NULL, `hotel_head_picture` varchar(255) DEFAULT NULL, `star_level_des` varchar(50) DEFAULT NULL, `comment_score` decimal(3,1) DEFAULT NULL, `comment_score_des` varchar(50) DEFAULT NULL, `comment_main_tag` varchar(255) DEFAULT NULL, `comment_count` int(11) DEFAULT NULL, `historical_consumer` int(11) DEFAULT NULL, `promote_booking` varchar(255) DEFAULT NULL, `hotel_address` varchar(255) DEFAULT NULL, `traffic_info` varchar(255) DEFAULT NULL, `area_name` varchar(100) DEFAULT NULL, PRIMARY KEY (`hotel_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8
这段SQL 命令在数据库中创建一个名为 hotels
的新表,这个表用于存储酒店相关信息。每一列的数据类型、约束和默认值都被明确的进行了定义。
-
CREATE TABLE hotels:
SQL 命令的开始,用于创建一个新表,表名为
hotels
。 -
列定义:
每个条目定义了表中的一个字段(列),包括其数据类型和其他属性:
hotel_id varchar(50) NOT NULL
:定义一个名为hotel_id
的字段,类型是长度为 50 的 varchar(可变长度的字符串),并且这个字段不能为 NULL(必填)。这个字段用作表的主键。hotel_name varchar(255) DEFAULT NULL
:定义一个名为hotel_name
的字段,类型是长度为 255 的 varchar。默认值是 NULL。hotel_head_picture varchar(255) DEFAULT NULL
:存储酒店的头图链接或路径。star_level_des varchar(50) DEFAULT NULL
:存储酒店的星级描述。comment_score decimal(3,1) DEFAULT NULL
:存储酒店的评论评分,这是一个小数类型,总共3位数,其中小数点后1位。comment_score_des varchar(50) DEFAULT NULL
:评论评分的描述。comment_main_tag varchar(255) DEFAULT NULL
:主要的评论标签。comment_count int(11) DEFAULT NULL
:评论的数量,类型是整数。historical_consumer int(11) DEFAULT NULL
:记录历史消费者数量的字段。promote_booking varchar(255) DEFAULT NULL
:推广预订的相关信息。hotel_address varchar(255) DEFAULT NULL
:酒店的地址。traffic_info varchar(255) DEFAULT NULL
:关于酒店周围交通的信息。area_name varchar(100) DEFAULT NULL
:酒店所在的区域名称。 -
PRIMARY KEY (hotel_id):
这行指定
hotel_id
作为表的主键,确保每个酒店都有一个唯一的标识符。 -
ENGINE=InnoDB DEFAULT CHARSET=utf8:
ENGINE=InnoDB
:指定使用 InnoDB 存储引擎,这是 MySQL 中支持事务、行级锁定和外键的一种存储引擎。DEFAULT CHARSET=utf8
:设置默认的字符集为 utf8,这支持多语言内容,是非常常用的字符编码。
我们可以在DataGrip中看到我们定义的表里面的数据:
表关联关系
1. 酒店相关的表
hotels
:
存储酒店的基本信息,如名称、地址、评分等。
hotel_tags
:
存储酒店的标签信息。这个表通过 hotel_id
外键与 hotels
表关联,表示每个酒店可以有多个标签。
2. 景点相关的表
sight
:
存储景点的详细信息,如名称、评分、地址等。
sight_comments
:
存储针对景点的评论。通过 sight_id
外键与 sight
表关联,表示每个景点可以有多个评论。
comment_images
:
存储评论的图片信息。通过 comment_id
外键与 sight_comments
表关联,表示每条评论可以有多张图片。
3. 用户相关的表
t_user
:
存储用户信息,如用户名、密码、电子邮箱等。
t_level
:
存储用户等级信息。t_user
表通过 lid
外键与 t_level
表关联,表示每个用户都有一个等级。
t_article
:
存储文章信息,如标题、内容等。它通过 author_id
外键与 t_user
表关联,表示每篇文章都有一个作者。
t_comment
:
存储文章评论。通过 aid
和 uid
外键分别与 t_article
和 t_user
表关联,表示每篇文章可以有多个评论,每个用户也可以发表多个评论。
t_favorite
:
存储用户的收藏信息。通过 uid
和 aid
外键分别与 t_user
和 t_article
表关联,表示用户可以收藏多篇文章。
4. 交通相关的表
flight_tickets
和 train_tickets
:
分别存储飞机票和火车票的信息,如航班号、列车号、出发站和到达站等。这些表独立存在,用于记录不同类型的交通票务信息。
5. 类别相关的表
t_category
:
存储文章的分类信息。t_article
表通过 cid
外键与 t_category
表关联,表示每篇文章都属于一个分类。